用OpenBSD的httpd在OpenBSD 6.5上运行WordPress

2022-10-20 14:08:01 浏览数 (1)

翻译:柳尉 本文链接 原文链接

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

0 人点赞