世界,你好!在树莓派上搭建WordPress站点

搭建个人服务器的初衷,仅仅是为了好玩,还可以24小时提供自己私人的贴心服务:音乐、个人邮箱、个人云盘… …自从打通了网络的任督二脉,再也不担心404了!

这是一个建立在一片树莓派上的服务器,我的第一个私有服务器。它就放在我的显示器旁边,信用卡大小,连着一根网线,一条5V供电线而已。树莓派是几年前买的闲置物品,插一片16G SD卡,刷的是“RASPBIAN JESSIE LITE”,不支持显示器,纯服务器。在树莓派上使用Wordpress,有两种主流方案:

1、LAMP方案:Linux + Apache + MySQL + WordPress
2、LNMP方案:Linux + Nginx + SQLite + WordPress

我第一次搭建用了LAMP方案,并且通过自签名的https,实现了外网访问,LAMP方案官方指导:Build a LAMP Web Server with WordPress

因为第二种方案是轻量级的,对硬件要求较低,所以后来又采用了第二种方案。以下是我用第二种方案的最简步骤与详细步骤。

LNMP方案最简步骤:待补充

LNMP方案详细步骤:

1、安装树莓派操系统

a、在Windows下格式化TF卡:
windows不识别linux分区,写入树莓操作系统的卡片容量会“变小”。有两种方法解决:用软件sdformat格式化,或者用windows自带的命令行diskpart格式化,相关的6条命令行如下:

>diskpart
DISKPART>list disk
DISKPART>select disk x #TF卡所在的盘符,看清容量,不要选错了!
DISKPART>clean
DISKPART>create partition primary
DISKPART>format quick

b、下载树莓派操作系统
树莓派官方网站,点选在顶部的downloads,点选RASPBIAN,因为是建服务器,不需要图形界面,点选Download ZIP,下载LITE版本。下载页面有installation guilde链接,底部有Windows安装指导链接,下载Win32DiskImager,写入tf卡片,直到出现Write Successful提示出现。

c、打开树莓的ssh端口
从2016年11月起,缺省ssh是关闭的,需要在windows分区boot根目录下写入文件名为“ssh”的空文件,注意不要有扩展名。
是否注意到Windows下的卡片存储大小变小很多,大约只有64兆?这个因为在Windows下无法看到Linux分区,如果需要重新安装树莓派系统,必须将Windows下的linux分区找回来,否则空间就不够啦。问题:如果缺省关闭ssh 22端口,树莓派如何网络连接?

d、确定树莓派局域网IP地址
将写好的卡片插入树莓派,接好网线与电源线开机,在路由器中查看树莓派的IP地址,通过mac地址,手工指定树莓派的内网地址。也可以使用扫描工具搜索树莓派的内网地址,推荐“PortScan”。

2、用ssh连接树莓派,安装nginx+php+sqlite

windows下使用软件putty,用ssh登录,端口是22,缺省用户名pi,对应的缺省密码是raspberry,成功登录后,执行命令:

passwd #为了系统安全,先把用户pi的缺省密码更改掉,如果sudo passwd更改的是root的密码
sudo apt-get update #更新树莓派的软件库信息
sudo apt-get install nginx php5-fpm php5-sqlite sqlite #安装nginx、php和sqlite
sudo /etc/init.d/nginx start #设置nginx服务随系统启动

安装nginx、php、sqlite时的提示类似如下内容,注意同时安装了其他需要的软件包:

Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
fontconfig-config fonts-dejavu-core libapparmor1 libfontconfig1 libgd3
libjbig0 libonig2 libperl4-corelibs-perl libqdbm14 libsqlite0 libtiff5
libvpx1 libxpm4 libxslt1.1 lsof nginx-common nginx-full php5-cli php5-common
php5-json php5-readline sqlite3
Suggested packages:
libgd-tools fcgiwrap nginx-doc ssl-cert php-pear php5-user-cache sqlite-doc
sqlite3-doc
The following NEW packages will be installed:
fontconfig-config fonts-dejavu-core libapparmor1 libfontconfig1 libgd3
libjbig0 libonig2 libperl4-corelibs-perl libqdbm14 libsqlite0 libtiff5
libvpx1 libxpm4 libxslt1.1 lsof nginx nginx-common nginx-full php5-cli
php5-common php5-fpm php5-json php5-readline php5-sqlite sqlite sqlite3
0 upgraded, 26 newly installed, 0 to remove and 69 not upgraded.
Need to get 8,994 kB of archives.
After this operation, 28.1 MB of additional disk space will be used.

测试nginx是否正常工作:
打开浏览器输入树莓派的ip地址,如果显示Welcome to nginx on Debian!...,就表示nginx正常工作了。

配置php:
nginx配置文件/etc/nginx/nginx.conf中有一行include /etc/nginx/sites-enabled/*;,表示此目录下的所有文件,都是可以使用的虚拟机,查看sites-enabled目录,只有一个default文件,default文件中有一行内容root /var/www/html;表示浏览器打开的树莓派主页是目录root /var/www/html;下的文件,default文件中还有一行内容index index.html index.htm index.nginx-debian.html;表示浏览器打开主页所在目录文件的次序。测试nginx时,实际是打开了index.nginx-debian.html文件,因为到目前位置,/var/www/html目录下只有这个文件。在这个目录中增加index.php文件:

sudo vi /var/www/html/index.php #新建一个php测试主页文件,写一个显示phpinfo的语句

编辑nginx配置文件,加入index.php索引和php支持:

sudo vi /etc/nginx/sites-enabled/default #修改nginx配置文件

把索引文件行加入index.php:

index inxde.php index.html index.htm index.nginx-debian.html;

加入php支持,参考SETTING UP AN NGINX WEB SERVER ON A RASPBERRY PI问题:官方参考配置里,fastcgi是啥东东?

location ~ .php$ {
fastcgi_split_path_info ^(.+.php)(/.+)$;
# include snippets/fastcgi-php.conf;
#
# # 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.conf;
}

测试php是否正常工作:

sudo /etc/init.d/nginx reload #重启nginx使更改生效

打开浏览器输入树莓派的ip地址,如果显示phpinfo的详细信息,就表示nginx正常工作了。

3、改用https访问

sudo mkdir /etc/cert
cd /etc/cert
sudo openssl genrsa -out greydesign.key 1024 #生成私钥key文件
sudo openssl req -new -key greydesign.key -out greydesign.csr #生成证书申请csr文件
sudo openssl x509 -req -days 3650 -in greydesign.csr -signkey greydesign.key -out greydesign.crt #生成自签发证书crt文件
sudo vi /etc/nginx/sites-enabled/default #修改nginx配置文件,加入https支持

生成csr证书时,注意Common Name (e.g. server FQDN or YOUR name) []:写入自己的域名,比如http://www.greydesign.tk,最后两个问题直接回车即可:

Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:Shangdong
Locality Name (eg, city) []:Qingdao
Organization Name (eg, company) [Internet Widgits Pty Ltd]:greydesign
Organizational Unit Name (eg, section) []:greydesign
Common Name (e.g. server FQDN or YOUR name) []:www.greydesign.tk
Email Address []:qdmcad@gmail.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

nginx配置文件,加入https支持:

listen 443 ssl default_server; #取消注释
listen [::]:443 ssl default_server; #取消注释
ssl on; #打开ssl,再用http访问主页就会出错,提示The plain HTTP request was sent to HTTPS port
ssl_certificate /etc/cert/greydesign.crt; #公钥
ssl_certificate_key /etc/cert/greydesign.key; #私钥

重启nginx,用https访问自己的主页试试,应该外网也可以顺利访问了。遗留问题:用http访问会提示400错误,如何自动转向https访问?

sudo nginx -t #检测nginx配置
sudo nginx -s reload #重启nginx

4、安装Wordpress以及mysql插件

cd /var/www/html/
sudo rm * #清空主页目录,可选
sudo wget http://wordpress.org/latest.tar.gz #下载最新版wordpress
sudo tar xzf latest.tar.gz
sudo mv wordpress/* .
sudo rm -rf wordpress latest.tar.gz

现在访问自己的主页,会提示Your PHP installation appears to be missing the MySQL extension which is required by WordPress.,这是因为目前还需要安装支持wordpress的mysql插件:

cd /var/www/html/wp-content/plugins
sudo wget https://downloads.wordpress.org/plugin/sqlite-integration.1.8.1.zip
sudo unzip sqlite-integration.1.8.1.zip
sudo rm sqlite-integration.1.8.1.zip
sudo mv ./sqlite-integration/db.php /var/www/html/wp-content
cd /var/www/html
sudo  cp wp-config-sample.php wp-config.php
sudo vi wp-config.php #加入一行 define('USE_MYSQL', false);

问题:如果需要使用Mysql,把那行改为true就可以了,是吧?

现在访问自己的主页,会提示错误

Unable to create the required directory! Please check your server settings.

这是因为目录权限问题,在/var/www/html后加入的文件与目录所有者是nobody,所有组是nogroup,改一下:

sudo chown -R www-data: .

访问wordpress面板https://192.168.1.232/wp-admin/setup-config.php会提示错误:

The file 'wp-config.php' already exists. If you need to reset any of the configuration items in this file, please delete it first. You may try installing now.

删除新创建的wp-config.php文件,刷新https://192.168.1.232/wp-admin/setup-config.php,就进入wordpress首次设置。选择简体中文,点击继续

欢迎使用WordPress。在开始前,我们需要您数据库的一些信息。请准备好如下信息。
数据库名
数据库用户名
数据库密码
数据库主机
数据表前缀(table prefix,特别是当您要在一个数据库中安装多个WordPress时)
我们会使用这些信息来创建一个wp-config.php文件。	如果自动创建未能成功,不用担心,您要做的只是将数据库信息填入配置文件。您也可以在文本编辑器中打开wp-config-sample.php,填入您的信息,并将其另存为wp-config.php。

点击现在就开始

数据库名称:greydesign
用户名:qdmcad #这里是不是应该添root?
密码:j2
数据库主机:localhost
表前缀:wp_

点击提交,出现HTTP ERROR 500错误,无法继续进行下一步配置,访问主页,会重新进入wordpress配置,为啥?先换mysql!

$sudo apt-get install mysql-server php5-mysql #安装mysql
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
  libaio1 libdbd-mysql-perl libdbi-perl libhtml-template-perl libmysqlclient18
  libterm-readkey-perl mysql-client-5.5 mysql-common mysql-server-5.5
  mysql-server-core-5.5
Suggested packages:
  libclone-perl libmldbm-perl libnet-daemon-perl libsql-statement-perl
  libipc-sharedcache-perl mailx tinyca
The following NEW packages will be installed:
  libaio1 libdbd-mysql-perl libdbi-perl libhtml-template-perl libmysqlclient18
  libterm-readkey-perl mysql-client-5.5 mysql-common mysql-server
  mysql-server-5.5 mysql-server-core-5.5 php5-mysql
0 upgraded, 12 newly installed, 0 to remove and 69 not upgraded.
Need to get 8,372 kB of archives.
After this operation, 89.5 MB of additional disk space will be used.

会提示设置root密码,我输入j2两次,问题,这是mysql的数据库密码吧?
建立mysql数据库:

mysql -uroot -p
mysql> create database wordpress;
Ctrl + D

在浏览器打开主页,我的是https://www.greydesign.tk,会显示wordpress设置,注意用户名是root,密码是刚才设置的j2,设置站点标题为“Grey Design”,用户名为qdmcad,密码j2,电子邮件为qdmcad@gmail.com,点击安装wordpress,又出现HTTP ERROR 500错误!后来设置数据库名mysql而不是greydesign,提示500错误后,再重新刷新一次主页,却提示wordpress已配置好了,登录wordpress,用qdmcad:j2,顺利登录,先用着,以后重装,把数据库这段搞明白。进入面板,更新wordpress到WordPress 4.7.2–zh_CN版本。更新成功后,导入qdmcad.wordpress.com博客,选择了primer主题,有两个问题,在chrome上与firefox上看主页,字体不一致,如何设计网站缺省字体?还有,代码块为啥在chrome上没有底色?

5、安装配置Wordpress的注意事项:

a、中文地址问题:
几篇文章用了中文题目,Wordpress就用了中文地址,开始访问没有问题,晚上回家后,发现中文地址都出现了访问错误,只好挨个手动改成了英文地址。如果网站规模庞大,岂不得累死?有高效的检查链接有效性的办法吗?后来发现文章分类的中文地址也失效了,别名改成英文就好了。
b、网站备份:
自己写的文章,满含多日的付出与心得,不小心丢失了可受不了。先提出自己的需求吧。备份成tar.zip文件不直观,不考虑。备份到本地的话,我喜欢将文章打印成册,基本达到出版的要求,目前还没有看到好的教程。备份到异地的话,首先我喜欢同步到我的wordpress.com站点。就朝这两个方向努力吧。同步到自己的wordpress站点的步骤:
将本地文章export:a、进入仪表盘界面;b、工具c、导出d、所有内容e、下载导出的文件。然后到目标wordpress站点import就可以了。
c、代码段美化显示:
不用代码插件,在html模式下,用<pre></pre>对包围需要的代码段即可,或用<code></code>对需要的代码段即可。
d、私密文章:
wordpress博客,有些文章不想公开,如何设置呢?
手机上可以将博客设置为私密,网页编辑时,右上角的眼睛符号,也可以将博客设置为Private。
浏览自己的博客主页时,自己的私密博客标题,会被加上私密:

参考网页:

NGINX配置HTTPS加密访问–自签CA
为nginx配置https并自签名证书
NGINX 設定 HTTPS 網頁加密連線,建立自行簽署的 SSL 憑證
树莓派-nginx+php-fpm +sqlite+wordpress

Advertisements

One thought on “世界,你好!在树莓派上搭建WordPress站点

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s