前言
因为一直对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环境配置了.