翻译:柳尉 本文链接 原文链接
2019-09-20
介绍
OpenBSD安装越接近默认值、并且没有添加多少包,它就越安全。虽然WordPress更常见的设置是使用Apache和PHP,但使用OpenBSD的内置httpd绝对是可行的(而且更可取)。本教程将让您完成获取一个Let's Encrypt证书、一个WEB服务器和WordPress的完整设置。您需要root用户访问权限才能执行此操作。
如果您还没有这样做,您需要创建一个/etc/doas.conf文件,doas命令是OpenBSD对sudo命令的简单替代。
代码语言:javascript复制su -
echo "permit nopass keepenv :wheel" > /etc/doas.conf
我们必须告诉OpenBSD安装包的网络位置,写入/etc/installurl文件中。
代码语言:javascript复制doas su
echo "https://cdn.OpenBSD.org/pub/OpenBSD" > /etc/installurl
exit
现在我们必须添加PHP和WordPress需要的一些额外模块,以便处理图像和加密等事情。输入以下命令,当出现提示时,选择安装最新的PHP包。您还需要将模块配置文件.ini从示例目录复制到主目录,必须这样做才能启用这些PHP模块。
代码语言:javascript复制doas pkg_add -r mariadb-client mariadb-server php php-curl php-mysqli pecl73-mcrypt pecl73-imagick
doas su -
cp /etc/php-7.3.sample/* /etc/php-7.3/.
获取Let's Encrypt证书
OpenBSD有一个很好的应用程序,叫做acme-client ,这个小小的创新应用将为您生成帐户密钥、私钥,并为您获取证书。acme-client依赖于一个WEB服务器,因此我们定义了一个快速的默认服务器。
使用您喜欢的编辑器,创建/etc/httpd.conf,我们稍后还会将其他服务器定义添加到此文件中。我们现在需要做的是准备httpd来执行质询响应,以获得免费、有效的SSL证书。
代码语言:javascript复制prefork 5
types { include "/usr/share/misc/mime.types" }
server "default" {
listen on egress port 80
root "/htdocs"
directory index "index.html"
location "/.well-known/acme-challenge/*" {
request strip 2
root "/acme"
}
}
同时使用您喜爱的编辑器,创建/etc/acme-client.conf 。
代码语言:javascript复制authority letsencrypt {
api url "https://acme-v01.api.letsencrypt.org/directory"
account key "/etc/acme/letsencrypt-privkey.pem"
}
authority letsencrypt-staging {
api url "https://acme-staging.api.letsencrypt.org/directory"
account key "/etc/acme/letsencrypt-staging-privkey.pem"
}
domain example.com {
alternative names { www.example.com }
domain key "/etc/ssl/private/example.com.key"
domain full chain certificate "/etc/ssl/example.com.fullchain.pem"
sign with letsencrypt
}
启用并启动httpd,然后获取颁发的证书,您将看到已颁发的证书。
代码语言:javascript复制doas rcctl enable httpd php73_fpm
doas rcctl start httpd
doas acme-client -ADFv example.com
doas rcctl stop httpd
添加服务器定义
在获取到Let's Encrypt证书文件后,将以下配置行添加到/etc/httpd.conf中。设置httpd以执行从http到https的重定向,因为您有一个免费的SSL证书,并且您永远不想冒险通过不安全的链接发送登录名和密码。注意这行: location "/posts/*",这一组设置是为了让WordPress的永久链接看起来更漂亮。此外,此配置文件还包含一组防止暴力尝试登录WordPress后台管理页面的方法。
代码语言:javascript复制server "example.com" {
listen on egress port 80
alias "www.example.com"
block return 302 "https://$SERVER_NAME$REQUEST_URI"
}
server "example.com" {
listen on egress tls port 443
alias "www.example.com"
root "/htdocs/example.com
directory index "index.php"
location "/posts/*" {
fastcgi {
param SCRIPT_FILENAME "/htdocs/example.com/index.php"
socket "/run/php-fpm.sock"
}
}
location "/wp-json/*" {
fastcgi {
param SCRIPT_FILENAME "/htdocs/example.com/index.php"
socket "/run/php-fpm.sock"
}
}
location "/wp-login.php*" {
authenticate "WordPress" with "/htdocs/htpasswd"
fastcgi socket "/run/php-fpm.sock"
}
#Uncomment the following lines to disable xmlrpc. You increase security
#at the expense of being able to use to use
#the Android and iPhone WordPress App.
#location "xmlrpc.php*" {
# block return 404
#}
location "*.php*" {
fastcgi socket "/run/php-fpm.sock"
}
tls {
certificate "/etc/ssl/example.com.fullchain.pem"
key "/etc/ssl/private/example.com.key"
}
}
创建用于登录WordPress后台管理页面的用户名和密码文件,以提高WordPress管理站点的安全级别。选择一个好的密码,这里将提示您输入用户名和密码,以便运行wp-login.php脚本。
代码语言:javascript复制doas su
cd /var/www/htdocs
htpasswd htpasswd wp_user
chown www:www htpasswd
chmod 0640 htpasswd
准备和配置MariaDB
MariaDB是MySQL的一个替换分支,我们需要为WordPress做一些初始配置及数据库准备工作。
在我们能够有效地使用MariaDB之前,我们需要允许mysql守护进程使用比默认值更多的资源,为此,通过在/etc/login.conf文件底部添加以下条目进行更改。
代码语言:javascript复制mysqld:
:openfiles-cur=1024:
:openfiles-max=2048:
:tc=daemon:
启用并启动MariaDB。此过程将设置一个root密码并有选择地删除测试数据库,在安装阶段遵循此建议是个好主意。
代码语言:javascript复制 doas mysql_install_db
doas rcctl enable mysqld
doas rcctl start mysqld
doas mysql_secure_installation
创建WordPress数据库和数据库用户。
代码语言:javascript复制mysql -u root -p
CREATE DATABASE wordpress;
GRANT ALL PRIVILEGES ON wordpress.* TO 'wp_user'@'localhost' IDENTIFIED BY '<password>';
FLUSH PRIVILEGES;
EXIT
安装和配置WordPress
已经有很长一段时间WordPress没有提供官方的OpenBSD安装包了,因为它基本上是开箱即用的。下载、解压缩并移动WordPress安装文件夹即可。
代码语言:javascript复制cd /tmp
wget https://wordpress.org/latest.tar.gz
tar xvfz latest.tar.gz
doas mv wordpress /var/www/htdocs/example.com
chown -R www:www /var/www/htdocs/example.com
我们必须将/etc/resolve.conf和/etc/hosts复制到/var/www/etc下面,这样WordPress才能成功运行应用市场,你需要这样才能通过WordPress后面管理站点下载插件和主题。
代码语言:javascript复制doas mkdir /var/www/etc
doas cp /etc/hosts /var/www/etc/.
doas cp /etc/resolv.conf /var/www/etc/.
启动httpd及php73-fpm
代码语言:javascript复制doas rcctl start httpd php73_fpm
浏览到服务器定义中使用的URL。您将看到WordPress安装向导。对于数据库服务器选项一栏,将localhost替换为127.0.0.1。
一旦WordPress安装完成,就可以设置永久链接了,这样它们看起来更适合搜索引擎优化。从WordPress管理屏幕,转到设置->永久链接(Settings -> Permalinks),单击自定义结构(Custom Structure)并键入/posts/%postname%。进行此更改后,单击“保存更改(Save Changes)”按钮。你现在就能有好看的链接了,例如,永久链接如下所示:https://example.com/posts/example-blog-post