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

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

2017年在树莓派上运行wordpress,2018年想全新安装,竟然失败了,主要是两个错误:

php5模块找不到

PDO Driver for SQLite is missing.
因此,需要有时间研究这些问题,关键是wordpress或者树莓派有没有官方的安装指导呢!?从2017年10月左右,树莓派的这个站点就在web上不可见了,我打算修改https的缺省端口继续发布,竟然出了如此意外,晕!

LNMP一键安装包
zh-cn:安装 WordPress
在树莓派上使用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 #在Windows命令行下输入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月起,树莓派RASPBIAN缺省ssh是关闭的,需要在windows分区boot根目录下写入文件名为“ssh”的空文件,注意不要有扩展名。
是否注意到Windows下的卡片存储大小变小很多,大约只有64兆?这个因为在Windows下无法看到Linux分区,如果需要重新安装树莓派系统,必须将Windows下的linux分区找回来,否则空间就不够啦,格式化方法见上文。
问题:如果缺省关闭ssh 22端口,树莓派如何网络连接?

d、确定树莓派局域网IP地址

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

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

Windows 7下使用软件putty(Windows10不需要),用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是否正常工作:
打开浏览器输入树莓派的ip地址,如果显示Welcome to nginx on Debian!...,就表示nginx正常工作了。

3、配置php:

nginx配置文件/etc/nginx/nginx.conf中有一行include /etc/nginx/sites-enabled/*;,表示此目录下的所有文件,都是可以使用的虚拟机。
查看sites-enabled目录,只有一个default文件,default文件中有一行内容root /var/www/html;表示浏览器打开的树莓派主页是目录/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的语句<? phpinfo(); ?>

sudo vi /etc/nginx/sites-enabled/default #修改nginx配置文件,加入index.php索引和php支持
把索引文件行加入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正常工作了。

4、通过自签名证书(不建议,用免费的let’s encrypt证书吧),改用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) []:写入自己的域名,比如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

5、安装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上没有底色?

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

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

7、Wordpress需要掌握的基本语法

1、代码段美化显示:文本模式,用<pre></pre>,或用<code></code>;

2、<blockquote></blockquote>:可视化模式,在行首输入“<”,行尾回车即可实现;

3、下一页(分页):<!–nextpage–>

4、继续阅读(折叠):<!–more–>

8、Wordpress美化

1、主题选择:为了实现“继续阅读”,theme一直使用Primer,自从学会<!–more–>,就换了Flat主题。

参考网页:

NGINX配置HTTPS加密访问–自签CA
为nginx配置https并自签名证书
NGINX 設定 HTTPS 網頁加密連線,建立自行簽署的 SSL 憑證
树莓派-nginx+php-fpm +sqlite+wordpress
如何讓WordPress有「繼續閱讀」和「下一頁」按鈕? | More Tag
zh-cn:WordPress 新手 - 如何开始 #官方手册,好好学习

更多内容