0%

如何在树莓派上搭建WordPress博客

原文章于2020年8月25日发表于本人博客(现已关闭)

在树莓派上搭建一个博客,这个想法实际上有很久了。

年龄一大,眼睁睁看着那些不受控的博客网站一个个倒下。不少优质内容可能再无重现天日的机会,就感到害怕。

尤其对于我这种喜欢记录的人来说。


废话少说,我们直接上教程。

思路很简单,先在树莓派上搭建LAMP(Linux Apache Mysql PHP),然后内网穿透出去。

这篇文章主要参考了一个CSDN上的博文,写的不是很详实,但是我按照其的做法成功了。然而就在我全部部署完毕后,那篇博文就404了。

注:现在是2021年8月13日,那个文章又可以访问了,链接树莓派搭建Wordpress博客完整版-作着:凉拌糖醋鱼-发布事件: 2019-12-28 00:51:28


搭建LAMP(Linux Apache MySQL/MariaDB PHP)

LAMP,也就是:Linux+Apache+MySQL+PHP

Linux指的是部署的系统,我这里采用树莓派官方的Raspberry Pi OS。SD卡烧录、系统设置、换下载源等步骤就不再赘述了。

Apache,是世界使用排名第一的Web服务器软件,不做过多介绍。

MySQL,我们要用到的数据库。实际使用中会用MariaDB替代。至于MariaDB和MySQL的关系,MariaDB是由原本开发MySQL的一些原始开发者领导,他们担心Oracle收购MySQL后会有一些隐患。MariaDB与MySQL保持这高度兼容性,并使用了一个新的存储引擎Aria。

PHP,我们用到的语言(实际上你几乎不会碰到用PHP编写的情况,大部分内容都是可视化的)

更新源列表

1
sudo apt-get update

没什么好说的,最好在下载安装软件前更新一次软件列表。

安装部署Apache

1
2
sudo apt-get install apache2
systemctl status apache2 #检查是否开启Apache

一些指令:

1
2
3
/etc/init.d/apache2 start #开启服务器
/etc/init.d/apache2 stop #关闭服务器
/etc/init.d/apache2 restart #重启服务器

此时可以访问:<树莓派的内网IP>来查看Apache的信息。

安装部署MySQL(MariaDB)

现在使用安装MySQL的指令,你会发现返回错误告诉你根本没有MySQL的包,可以选择MariaDB替代。我们就选MariaDB了。

安装MriaDB

1
sudo apt-get install mariadb-server 

安装完成后就可以通过以下命令连接到MariaDB:

1
sudo mysql 

出现如下讯息表示已成功连接到MariaDB了:

1
2
3
4
5
6
7
8
9
Welcome to the MariaDB monitor. Commands end with ; or \g. 
Your MariaDB connection id is 6
Server version: 10.1.38-MariaDB-0+deb9u1 Raspbian 9.0

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

配置密码访问

默认情况下MariaDB安装好后都没有配置访问用户的密码,如果需要远程连接时会无法连接。因此需要先对root用户设置密码。首先透过上一步中的命令连接至MariaDB,输入如下语句进行密码的修改:

1
2
3
4
5
use mysql; 
UPDATE user SET password=password('password') WHERE user='root';
UPDATE user SET plugin='mysql_native_password' WHERE user = 'root';
flush privileges;
exit

以上执行完成后,重启服务:

1
sudo systemctl restart mariadb 

重启完成后,试用密码进行mariadb登录,验证是否修改成功:

1
mysql -u root -p 

输入上面设置的密码就可以看到第一步安装完成登录时一样的画面了。

配置MariaDB可远程连接

MariaDB默认只监听了127.0.0.1这个IP地址,这个时候是无法从外部连接到树莓派上MariaDB。
先使用一下命令打开配置文件:

1
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

打开文件后有一段如下的内容:

1
# Instead of skip-networking the default is now to listen only on# localhost which is more compatible and is not less secure.bind-address            = 127.0.0.1

bind-address表示只监听了127.0.0.1这个IP,将这一行的前面加上# 将这一行注释起来,这样MariaDB就监听了所有的IP。
此时从外部的电脑连接MariaDB会提示”xxx.xxx.xxx is not allowed to connect to this MariaDB Server”。同样使用上一步中的mysql命令连接到MariaDB,输入如下命令:

1
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;--格式如下GRANT ALL PRIVILEGES ON *.* TO 'user'@'remoteip' IDENTIFIED BY 'password' WITH GRANT OPTION;--更新权限FLUSH PRIVILEGES;

至此可从外部连接到树莓派上的MariaDB了。

安装PHP

1
sudo apt-get install php7

安装phpmyadmin

1
sudo apt-get install phpmyadmin

然后可以通过访问:<树莓派的内网IP>/phpmyadmin进入控制面板。


安装WordPress

首先下载WordPress的.tar.gz压缩包。因为官网下载速度过慢,可以考虑用镜像。

.tar.gz文件解压到/var/www/html

然后访问:<树莓派的内网IP>即可进入配置页面。

对于配置好后,可以访问<树莓派的内网IP>/wp-admin进入管理员界面。

配置内容很简单,中途可能遇到无法自动添加内容至某个文件的问题(可能是权限问题,全程在root下操作理论上可以避免),按照指示将其添加入对应文件即可。

然后就按教程部署WordPress即可,不做赘述。


常见问题

phpmyadmin不工作

在安装phpmyadmin后,访问:<树莓派的内网IP>/phpmyadmin提示页面未找到。

解决办法:

参考文章:https://askubuntu.com/questions/55280/phpmyadmin-is-not-working-after-i-installed-it

根据UbuntuWiki(树莓派OS和Ubuntu操作相同)

需要配置apache2.conf使phpMyAdmin正常工作。

1
gksu gedit /etc/apache2/apache2.conf

然后将以下行添加到文件的末尾。

1
Include /etc/phpmyadmin/apache.conf

然后重新启动apache

1
/etc/init.d/apache2 restart

phpmyadmin报错

报错内容:

1
Warning in ./libraries/sql.lib.php#601count(): Parameter must be an array or an object that implements CountableBacktrace./libraries/sql.lib.php#2038: PMA_isRememberSortingOrder(array)./libraries/sql.lib.php#1984: PMA_executeQueryAndGetQueryResponse(array,boolean true,string 'alternativegirls',string 'tgp_photo',NULL,NULL,NULL,NULL,NULL,NULL,string '',string './themes/pmahomme/img/',NULL,NULL,NULL,string 'SELECT * FROM `tgp_photo`',NULL,NULL,)./sql.php#216: PMA_executeQueryAndSendQueryResponse(array,boolean true,string 'alternativegirls',string 'tgp_photo',NULL,NULL,NULL,NULL,NULL,NULL,string '',string './themes/pmahomme/img/',NULL,NULL,NULL,string 'SELECT * FROM `tgp_photo`',NULL,NULL,)./index.php#53: include(./sql.php)

这是因为官方的配置文件多个括号的问题(多个符号害死人系列)

解决办法:

参考文章:https://stackoverflow.com/questions/48001569/phpmyadmin-count-parameter-must-be-an-array-or-an-object-that-implements-co

简单的解决办法:

1
sudo sed -i "s/|\s*\((count(\$analyzed_sql_results\['select_expr'\]\)/| (\1)/g" /usr/share/phpmyadmin/libraries/sql.lib.php

手工办法:

打开sql.lib.php

1
nano /usr/share/phpmyadmin/libraries/sql.lib.php

找到count($analyzed_sql_results[‘select_expr’]

修改:

1
|| (count($analyzed_sql_results['select_expr'] == 1)

为:

1
|| ((count($analyzed_sql_results['select_expr']) == 1)

WordPress上传内容报错:无法建立目录wp-content/uploads/2020/08。有没有上级目录的写权限?

这是Linux文件夹问题,进入root账户,到WordPress安装目录,开放wp-content文件夹的全部权限即可。