这是一个建立在一片树莓派上的服务器,它就放在我的显示器旁边:信用卡大小,连着一根网线,一条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]:CNState 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/pluginssudo 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 #安装mysqlReading 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 -pmysql> 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 新手 - 如何开始 #官方手册,好好学习
更多内容