在 ArchLinux 下利用Caddy PHP-FPM MariaDB 迅速搭建 WordPress 博客

其实对于个人博客来说,任何一个Web Server都足够了,无论是Apache、Nginx、Lighttpd还是Caddy。这里选择Caddy,主要是自己可以去Let’s Encrypt自动获取SSL证书,也不用再去关注证书过期或者配置crontab来定期更新了。

这里记录一下在ArchLinux下面迅速搭建一个WordPress博客的步骤。当然更简洁的方法可能是用Docker,但是我已经转行多年,实在是懒得去研究Docker了。

第一步,升级软件和安装Caddy

首先在全新的系统上面滚一下,如果这里滚挂了,请允悲。

pacman -Syu
pacman -S caddy

第二步,安装MariaDB/MySQL

这里推荐直接参考ArchLinux的官方Wiki上的教程

pacman -S mariadb
mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
mysql_secure_installation

配置完成以后,进入MySQL/MariaDB的控制台

mysql -u root -p

之后,创建一个数据库供WordPress使用,再创建一个允许访问此数据库的新用户。我们使用用户名wp来简化,请用安全的密码替换password

CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL ON wordpress.* TO 'wp'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
EXIT;

第三步,安装PHP-FPM

pacman -S php php-fpm php-gd phpmyadmin

其中,phpMyAdmin是可选的。安装完成之后,修改/etc/php/php.ini,打开一些必须的扩展。不过ArchLinux官方给出的建议是配置conf文件夹来启用扩展,而不是修改php.ini,我这里搞不明白还是直接修改了,不知道应该怎么改进。

extension=bz2
extension=curl
extension=gd
extension=mysqli
extension=xmlrpm
extension=zip

之后即可启用PHP-FPM和MariaDB

systemctl enable mariadb
systemctl enable php-fpm
systemctl restart php-fpm

第四步,安装WordPress

按照惯例,到/var/www或者/home下面建立一个文件夹用来存放WordPress,我这里在/var/www下面建立。

cd /var/www
sudo curl -O https://wordpress.org/latest.tar.gz
sudo tar zxf latest.tar.gz
sudo rm latest.tar.gz
sudo chown -R http:http wordpress

需要注意的是,最后一句修改权限看一下Caddy和PHP-FPM具体是在什么用户下面运行的。如果是CentOS可能是caddy。可以简单的用ps aux | grep php-fpm看一下。

在这里,启动caddy应该可以在IP地址80端口上直接看到欢迎界面了。

systemctl enable caddy
systemctl restart caddy

如果遇到问题可以运行journalctl –no-pager -u caddy查看日志。

第五步,配置Caddy

这里贴一下针对WordPress的最简单的配置,需要注意的是,修改配置前务必讲域名指向到服务器的IP,不然Caddy启动自动请求Lets Encrypt去获取证书就会失败,重试次数过多就会被禁止一段时间。

/etc/caddy/caddy.conf

m0nkey.cn {
	gzip
	root /var/www/wordpress
	fastcgi / /run/php-fpm/php-fpm.sock php {
		ext .php
		split .php
		index index.php
	}
    	rewrite {
        	if {path} not_match ^\/wp-admin
        	to {path} {path}/ /index.php?_url={uri}
    	}
}



phpmyadmin.m0nkey.cn {
	gzip
	root /usr/share/webapps/phpMyAdmin
	fastcgi / /run/php-fpm/php-fpm.sock php {
		ext .php
		split .php
		index index.php
	}
}

以上就是全部的配置。其实还可以有优化的地方,例如静态文件添加缓存日期,控制Log的格式等等,在这里就不再赘述了。需要注意rewrite部分是替代.htaccess的一部分功能以实现固定链接。一些WordPress缓存等依赖.htaccess插件可能还是无法使用,需要注意。不需要phpMyAdmin的就不需要第二部分了。

这样就完成了最简单的WordPress博客搭建,不需要再去手动设置证书等繁琐的事情了。另外这种自动证书也非常适合去搭建一种在🇨🇳必须的WebSocket+TLS服务。

有必要的话可以启用UFW:https://wiki.archlinux.org/index.php/Uncomplicated_Firewall

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注