搭建自己的嵌入式博客服務器(五)Mysql+PHP實現動態博客網站

按照前面的博客搭建步驟,可以在本地搭建一個看起來還不錯的個人博客,但是總感覺有些不足。一個是網頁都只是“靜態的”,也就是說博客裏的每一個網頁都是事先在本地早就生生成好的,按照hexo的機制,每次更新一個博客都要至少新增兩個文件.md文件和一個新的index.html文件,雖然兩個文件本身不是很大,但總是感覺有些不友好;另外一個也是最讓我難受的就是跟新博文的方式,只能通過markdown的方式新增文件,然後重新生成整個hexo工程,過程很是繁瑣。爲了解決這兩個問題,我決定對博客進行大換血,使用數據庫方式存儲博文,PHP作爲博客的後臺處理程序,實現博客的展示,同樣實現一個簡單的後臺管理頁面方便我可以隨時隨地的管理博客內容。

一、mysql數據庫的選用

我用過的數據庫也就是sql server和mysql了,sql server是window環境下大家常用的數據庫,因爲有專門的圖形化數據庫管理工具,所以用起來也是比較簡單,功能也比較強大。對比mysql來說,mysql沒有官方的數據庫管理工具,但是卻有小巧靈活的特點,我的本地環境使用linux環境,所以也是選用了mysql作爲數據庫,爲了方便簡單的操作,我在window安裝了Navicat Premium,可以通過IP的形式遠程和圖形化管理liunx下面的數據庫。
mysql的安裝方式,這裏就不再詳細總結了,CSDN上搜一下,有詳細的步驟和配置說明。

二、PHP的簡單入門學習

之前在學校的的時候學習過javeEE,jsp之類的一些東西,所以說到搭建動態網頁的時候首先想到的是用java搭建,不過當時只是在windows下面搭建的編程和運行環境,如何在linux下面的搭建呢?確實是個問題,在網上找了許久,找到的方法是先在win下面將調試好的程序導出包,把包放到linux對應的java目錄下,感覺應該會有更好的方案,不過感覺應該會比較麻煩,最終放棄了使用java的方案。聽過PHP是最好的語言,但是一直沒有接觸過,所以想試下用PHP代替java,網上搜索了下,都說是CI框架比較簡單,適合初學者。最終也是使用了PHP的CI框架實現。下面簡單記錄下CI的幾個點:

  1. config目錄
    config目錄文件是項目的CI配置文件,config/datebase.php可配置項目連接的數據庫,ip、用戶名、密碼等;
  2. model目錄
    model目錄是數據庫處理文件,使用model類與數據庫的數據表對應,新建一個表就在model下面新建一個對應的model類,並在對應的類實現底層的數據庫操作函數;
  3. view目錄
    view目錄是前端網頁;
  4. controllers目錄
    controllers目錄是項目的業務處理層,相當於java的serverlet;新增一個頁面,都要在controllers目錄新增一個對應的業務處理類,因爲CI框架的機制是不允許直接訪問view目錄的網頁,訪問資源都要先訪問controllers目錄的資源,由controllers的類加載頁面。當然controllers也要處理前端通過post或get方式提交的數據。
  5. libraries目錄
    libraries目錄是庫文件目錄,有框架的庫定義的類,如果想自定義一個類也要放到這個目錄下新增;
  6. CI框架的絕對目錄重定向
    由於config.php的默認設置,用戶訪問時會自定定向到ip/index.php同樣瀏覽器請求資源時的URL也會自動加上inde.php/ 的前綴,這個配置給開發時設置資源訪問和鏈接提交路徑時帶來了很大的不便,可以通過改變config.php的下面兩行
$config['base_url'] = 'locahost';
$config['index_page'] = '';

在CI的根目錄下,即在index.php,system的同級目錄下,建立.htaccess填充代碼如下

RewriteEngine on
RewriteCond $1 !^(index\.php|css|js|img|fonts|editormd|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

之後在每個view下的文件添加

<base href = "<?php echo site_url();?>">

對應的頁面就能通過“/”訪問到項目路徑下的資源了。這樣設置之後不僅可以解決上面的問題,而且RewriteCond設置的對應的目錄下的資源也可以直接通過URL訪問到。

三、從hexo到動態網站

這部分其實就是將原來hexo生成的靜態HTML文件,填充php代碼和刪除冗餘的html內容。對於不熟悉前端的新手來說可能有一定的難度。
拿主頁爲例,主要替換的就是原來的博文部分,博文部分的HTML結構都是一樣的,不過是每個博文的標題內容是不同的。通過PHP循環業務層傳過來的數組,完成對每個博文的內容賦值即可。

<?php
foreach ($pages as $page)
{
?>
    <p style="font-size: 14px;>
    <?php echo $page->content;?>
    </p>
<?php
}
?>

HTML文本其實比較簡單,不過講解起來也不是一兩句話能說清楚的,這裏就不詳細講解了,建議有需要的同學還是簡單學習下相關的知識,畢竟熟悉之後就可以隨意的改動你所看到的頁面了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章