前言
因為一直對linux學習很有興趣,就拿手頭的樹莓派做了實驗,搭建一個簡易的php服務器用來跑typecho.
但是過程卻是異乎尋常的艱辛,幾乎每一步能卡住得地方都卡住了.而且typecho的資料相對於WordPress來說,本來又比較少,所以使得問題解決的過程也有些艱辛.
首先是樹莓派系統的選擇,雖然說官方系統選擇很多,但是啟動速度較慢,而且對於移動硬盤之類的外設的支持也不算好.畢竟也沒人真的把樹莓派當個純博客VPS之類的東西使用,還是需要考慮實用性,所以在這里向大家推薦RaspNAS這款系統,對於各種移動外設都有比較好的支持,優點如下:
1.輕量,RaspNAS的鏡像大小小於2G,啟動后占用的內存非常少.
2.快速,啟動速度相比於它基於的raspbian要快很多.
3.他的后台是基於nginx和php的,不僅提供了一個直觀的web后台用於監視raspberry pi的運行狀況,並且也為我們配置網頁減少了困難,事實上他有一個已經配置好的網頁環境,在他原先的版本里面並不支持離線下載,我直接將yaaw clone到/var/www就可以直接訪問了.
環境配置
要配置typecho運行的基本環境,我們需要如下一些東西,數據庫,nginx服務器,和php環境和一些插件.本着輕量的原則,我們並不選用過於龐大的mysql,而是使用輕量的sqlite.
nginx配置
首先安裝nginx
此處參考了Ducky Pond博客里的<How to setup a web server with Nginx/PHP on Raspberry Pi>這篇文章,原文連接在此
執行
1 sudo apt-get install nginx
等待安裝結束之后可以進行測試.
1 sudo service nginx start
可以看到service start的提示,然后用樹莓派的內網IP進行訪問,如果看到頁面的話,就說明nginx的安裝成功了.
nginx的默認的靜態web網站路徑為:usr/share/nginx/www ,這並不符合linux的慣例,通常應該為var/www
我們可以對此進行修改,首先創建這個目錄.
1 sudo mkdir /var/www
顯然,僅僅有這樣一個目錄是不夠的,我們還需要告訴nginx,我們將網頁存儲在了這個目錄.這就需要更改nginx的配置文件.
不過,在此之前,我們需要了解一下nginx配置文件是如何工作的.
先看一下nginx的目錄結構.
1 cd /etc/nginx/ 2 ls
結果如下
conf.d koi-win naxsi_core.rules scgi_params uwsgi_params fastcgi_params mime.types nginx.conf sites-available win-utf koi-utf naxsi.rules proxy_params sites-enabled
因為nginx可以建立多個虛擬主機,從而允許一個服務器裝載多個網頁,而每個虛擬主機都對應着一個配置文件.
而在用紅色標出的兩個文件夾,就是用來存儲和啟用這些配置文件的.
在sites-enabled文件夾中,是nginx啟動時加載配置文件的文件夾,這里面存儲的是類似於快捷方式的東西,他們指向了sites-available文件夾中對應的配置文件(symlink).也就是說,sites-available是存儲所有配置文件的文件夾,而需要啟用的這些配置文件的話,只需要在sites-enabled中做出標記即可.
那么首先,我們禁用默認的叫做default的配置文件.來阻止nginx將 /usr/share/nginx/www作為網站目錄.
1 sudo service nginx stop 2 sudo unlink /etc/nginx/sites-enabled/default
接下來我們在sites-available目錄中新建配置文件.(假如你不習慣使用vim或者還沒有安裝vim的話,也可以用nano等替代,或者參考我之前的博文,使用sublime text的sftp插件來編輯配置文件)
1 sudo vim /etc/nginx/sites-available/mysite
寫入如下配置
server { listen 80; root /var/www; index index.html index.htm; }
這個配置文件的意義是,新建一個server,用來監聽80端口上的請求,這個服務器的根目錄為/var/www , index的文件名為index.html或者index.htm,如果想要更詳細的配置,可以訪問這個頁面,給出了完整的nginx配置文檔.
保存退出,再啟用這個配置文件.
1 cd /etc/nginx/sites-enabled 2 sudo ln -s ../sites-available/mysite 3 sudo service nginx start
這樣大功告成,我們可以放入一個測試用的html到/var/www查看效果.
配置PHP環境
在這里nginx只是作為一個反向代理和靜態網頁服務器,類似於PHP這樣的動態網頁,nginx並不能執行,所以我們還需要PHP服務器用來處理PHP網頁中的代碼,並將結果返回給nginx回報給訪問者.而在網頁服務器和php服務器之間通信的技術有幾種,除了Apache以外,還有FastCGI,在這里,我們選擇使用FastCGI來進行通信的程序PHP-FPM,以及一個PHP插件apc,用來優化PHP的表現.(事實上,為了讓typecho能夠正常運作,我們仍然需要安裝PHP和sqlite通信的程序,為了讓本文更有條理,這一部分將會在數據庫配置部分進行說明.)
首先安裝
1 sudo apt-get install php5-fpm php-apc
假如您需要安裝sqlite來用來配置typecho,可以執行
1 sudo apt-get install php5-fpm php5-sqlite sqllite
當安裝結束之后,fpm應該會自動開始運行,不過為了讓apc插件能夠被加載運作,我們需要讓他重新啟動一下.
1 sudo service php5-fpm restart
然后我們在更改原先的nginx配置文件,讓nginx知道應該把PHP請求送到哪里去處理.打開剛剛配置的/etc/nginx/sites-available/mysite文件,加入PHP處理部分的示例代碼.
server { listen 80; root /var/www; index index.php index.html index.htm; location ~ \.php$ { fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; } }
這樣一個最簡單的PHP服務器就已經配置完成了.我們可以新建一個最簡單的PHP文件用來測試這個服務器.
在/var/www/目錄中新建一個PHP文件,比如myweb.php
寫入如下內容
<?php phpinfo(); ?>
重啟nginx服務來加載配置文件.
sudo service nginx restart
測試網頁192.168.1.00/myweb.php 其中192.168.1.100是你的樹莓派的內網IP,假如可以看到頁面,那么配置就已經完成了.不過需要注意的是,typecho因為涉及到rewrite的問題,需要支持pathinfo,所以他的配置文件並不能寫成最簡單的
location ~ .*\.php$
而是要改成
location ~ .*\.php(\/.*)*$
這樣就可以完成typecho安裝的nginx環境配置了.