树莓派应用很多,多到实在无法去取舍到底折腾什么好,当然很多还是不会,好在百度,谷歌资料很多。所以很多不会的查查资料就有了,typecho这个博客程序还是很轻量的,相对Wordpree实在简略了好多,当然这并不影响我们记录,虽说外观很重要,但是内容还是最重要的。零零散散安装完了,还是想记录下过程,搜到一篇教程比较完整,引用下..

一、搭建服务器

前提.树莓派已经装好系统了.之前文章有提到了,不要问我在哪,我也不知道。 第一步,更新系统

apt-get update

第二步,下载Nginx、MySQL和PHP 安装过程中会让你输入数据库(mysql)密码.务必记住..

apt-get install nginx php5-fpm php5-cli php5-curl php5-gd php5-mcrypt php5-mysql php5-cgi mysql-server

第三步,配置Nginx

nano /etc/nginx/nginx.conf

修改如下:

  • user www-data; worker_processes 1; 修改这里 pid /var/run/nginx.pid; events { worker_connections 64; 修改这里 #multi_accept on; }

继续向后找到gzip 去掉前面的注释 修改如下: - gzip on; gzip_disable “msie6”; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

保存并退出 Nginx.conf.

第四步,配置PHP

nano /etc/php5/fpm/php.ini

找到这一段: - ; Maximum amount of memory a script may consume (128MB) ; http://php.net/memory-limit memory_limit = 32M 修改这里

再找到这一段: - ; cgi.fix_pathinfo provides real PATH_INFO/PATH_TRANSLATED support for CGI. PHP’s ; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok ; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting ; this to 1 will cause PHP CGI to fix its paths to conform to the spec. A setting ; of zero causes PHP to behave as before. Default is 1. You should fix your scripts ; to use SCRIPT_FILENAME rather than PATH_TRANSLATED. ;http://php.net/cgi.fix-pathinfo cgi.fix_pathinfo=1 修改这里

保存并退出 php.ini.

nano /etc/php5/fpm/php-fpm.conf

找到这一段:

  • ; The maximum number of processes FPM will fork. This has been design to control ; the global number of processes when using dynamic PM within a lot of pools. ; Use it with caution. ; Note: A value of 0 indicates no limit ; Default Value: 0 process.max = 4 修改这里

第五步,配置网站

nano /etc/nginx/sites-enabled/default

对应修改如下:

  server {              去掉注释
	listen   80; ## listen for ipv4; this line is default and implied 
	#listen   [::]:80 default_server ipv6only=on; ## listen for ipv6

	root /home/pi/www;  修改主目录
	index index.php index.html index.htm;

	# Make site accessible from http://localhost/
	server_name localhost;

        if (!-e $request_filename) {
        rewrite ^(.*)$ /index.php$1 last;
        }               添加这一段

	location / {
		# First attempt to serve request as file, then
		# as directory, then fall back to displaying a 404.
		#try_files $uri $uri/ /index.html;
		# Uncomment to enable naxsi on this location
		# include /etc/nginx/naxsi.rules
	        index index.html index.php;
	        if (-f $request_filename/index.php){
	            rewrite (.*) $1/index.php;
	        }
	        if (!-f $request_filename){
	            rewrite (.*) /index.php;
	        }
	        if (-f $request_filename/index.html){
	            rewrite (.*) $1/index.html break;
	        }
            }           添加这一段

还有这段:

	location ~ \.php$ {
	#	fastcgi_split_path_info ^(.+\.php)(/.+)$;
	#	# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
	#
	#	# With php5-cgi alone:
	#	fastcgi_pass 127.0.0.1:9000;
	#	# With php5-fpm:
		fastcgi_pass unix:/var/run/php5-fpm.sock;
		fastcgi_index index.php;
		include fastcgi_params;
	}

第六步,重新加载服务:

sudo service nginx reload
sudo service php5-fpm reload
sudo service mysql reload

第七步,安装phpmyadmin(熟悉的数据库管理工具)

mkdir /home/pi/www
wget http://downloads.sourceforge.net/project/phpmyadmin/phpMyAdmin/3.5.7/phpMyAdmin-3.5.7-all-languages.zip
unzip  phpMyAdmin-3.5.7-all-languages.zip

第八步,最后给文件夹权限

chmod 755 /home/pi/www -R

二、部署typecho

环境部署完了,接下去当然是部署应用,我们的主角:typecho 具体版本,请移步官网自己下载,我用的是1.0.

wget https://github.com/typecho/typecho/releases/download/v1.0-14.10.10-release/1.0.14.10.10.-release.tar.gz
tar zxvf 1.0.14.10.10.-release.tar.gz
cp build/* /home/pi/www -r

然后就按照官方给出的教程自己设置就OK了。反正总的来说应该没什么问题.

三、动态顶级域名

关于这一段,我自己其实采用了一个比较简单的方案,因为家里有个闲置的花生棒,所以转发了一下就没问题了,不过我们也没有必要特地去买一个,而且花生棒的域名是固定的,如果是别的,又得买。所以这里推荐之前的说到引用的文章的方法.
教程如下:
首先我们要保证MAC和的IP对应,在路由界面下绑定树莓派的MAC和内网IP。这里我就不做说明了,因为毕竟大家路由不是一个样子,基本在静态地址分配页面,然后我们需要设置转发规则,如果只是为了网站,80口就够了,但是有些同学可能需要远程SSH连接树莓派,所以添加一个22端口.当然你可以设置DMZ模式.
博文中提到了3种方式,
第一种:利用花生壳。首先去注册一个花生壳账号,然后在路由器的设置页面登陆即可。缺点是不支持绑定自己的域名(当然你也可以通过域名转发来实现)。
第二种:利用http://dynamicdns.org, 在上面注册个账号,然后安装它的客户端就可以实现动态域名。只不过也不支持绑定自己的域名,不过该功能不需要路由器支持,我也觉得十分美好!
第三种:就是我接下来要介绍的一种:利用DNSPOD的API来实现动态域名。首先大家需要在DNSPOD上面注册一个账号,并且绑定域名。并且将需要绑定的子域名或者顶级域名的【记录类型】修改为【A】,(后面的IP就随便填一个吧,因为到时候程序会自动修改的) 新建pypod.py文件,内容如下,注意替换上你的Email,密码,域名ID,记录ID等参数(参数获取方法请往下看)。


#!/usr/bin/env python
#-*- coding:utf-8 -*-
import httplib, urllib
import socket
import time
params = dict(
login_email="email", # replace with your email
login_password="password", # replace with your password
format="json",
domain_id=100, # replace with your domain_od, can get it by API Domain.List
record_id=100, # replace with your record_id, can get it by API Record.List
sub_domain="www", # replace with your sub_domain
record_line="默认",
)
current_ip = None
def ddns(ip):
params.update(dict(value=ip))
headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/json"}
conn = httplib.HTTPSConnection("dnsapi.cn")
conn.request("POST", "/Record.Ddns", urllib.urlencode(params), headers)
response = conn.getresponse()
print response.status, response.reason
data = response.read()
print data
conn.close()
return response.status == 200
def getip():
sock = socket.create_connection(('ns1.dnspod.net', 6666))
ip = sock.recv(16)
sock.close()
return ip
if __name__ == '__main__':
while True:
try:
ip = getip()
print ip
if current_ip != ip:
if ddns(ip):
current_ip = ip
except Exception, e:
print e
pass
time.sleep(30)

接着拷贝pypod.py到/etc/bin/ ,然后修改/etc/rc.local,在exit 0之前加上这句: python ./usr/bin/pypod.py 自此大功告成!!Enjoy!它会在后台一直运行,每隔30秒检查一遍IP,如果修改了就更新域名绑定的IP
特别注明:

pypod.py代码摘自https://gist.github.com/chuangbo/833369