由於一直對linux學習頗有興趣,就拿手頭的樹莓派作了實驗,搭建一個簡易的php服務器用來跑typecho.php
可是過程倒是異乎尋常的艱辛,幾乎每一步能卡住得地方都卡住了.並且typecho的資料相對於WordPress來講,原本又比較少,因此使得問題解決的過程也有些艱辛.html
首先是樹莓派系統的選擇,雖說官方系統選擇不少,可是啓動速度較慢,並且對於移動硬盤之類的外設的支持也不算好.畢竟也沒人真的把樹莓派當個純博客VPS之類的東西使用,仍是須要考慮實用性,因此在這裏向你們推薦RaspNAS這款系統,對於各類移動外設都有比較好的支持,優勢以下:mysql
1.輕量,RaspNAS的鏡像大小小於2G,啓動後佔用的內存很是少.linux
2.快速,啓動速度相比於它基於的raspbian要快不少.nginx
3.他的後臺是基於nginx和php的,不只提供了一個直觀的web後臺用於監視raspberry pi的運行情況,而且也爲咱們配置網頁減小了困難,事實上他有一個已經配置好的網頁環境,在他原先的版本里面並不支持離線下載,我直接將yaaw clone到/var/www就能夠直接訪問了.web
要配置typecho運行的基本環境,咱們須要以下一些東西,數據庫,nginx服務器,和php環境和一些插件.本着輕量的原則,咱們並不選用過於龐大的mysql,而是使用輕量的sqlite.sql
首先安裝nginx數據庫
此處參考了Ducky Pond博客裏的<How to setup a web server with Nginx/PHP on Raspberry Pi>這篇文章,原文鏈接在此vim
執行服務器
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查看效果.
在這裏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環境配置了.