OpenBSDhttpdOpenBSD 6.5上运行WordPress

 

翻译:柳尉 链接 链接

2019-09-20

介绍

OpenBSD安装越接近默认值、并且没有添加多少包,它就越安全。虽然WordPress更常见的设置是使用ApachePHP,但使用OpenBSD的内置httpd绝对是可行的(而且更可取)。本教程将让您完成获取一个Let's Encrypt证书、一个WEB服务器和WordPress的完整设置。您需要root用户访问权限才能执行此操作。

初始配置

如果您还没有这样做,您需要创建一个/etc/doas.conf文件,doas命令是OpenBSDsudo命令的简单替代。

su -

echo "permit nopass keepenv :wheel" > /etc/doas.conf

我们必须告诉OpenBSD安装包的网络位置,写入/etc/installurl文件中。

doas su

echo "https://cdn.OpenBSD.org/pub/OpenBSD" > /etc/installurl

exit

现在我们必须添加PHPWordPress需要的一些额外模块,以便处理图像和加密等事情。输入以下命令,当出现提示时,选择安装最新的PHP包。您还需要将模块配置文件.ini从示例目录复制到主目录,必须这样做才能启用这些PHP模块。

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证书。

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

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,然后获取颁发的证书,您将看到已颁发的证书。

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以执行从httphttps的重定向,因为您有一个免费的SSL证书,并且您永远不想冒险通过不安全的链接发送登录名和密码。注意这行: location "/posts/*",这一组设置是为了让WordPress的永久链接看起来更漂亮。此外,此配置文件还包含一组防止暴力尝试登录WordPress后台管理页面的方法。

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脚本。

doas su

cd /var/www/htdocs

htpasswd htpasswd wp_user

chown www:www htpasswd

chmod 0640 htpasswd

准备和配置MariaDB

MariaDBMySQL的一个替换分支,我们需要为WordPress做一些初始配置及数据库准备工作。

 

在我们能够有效地使用MariaDB之前,我们需要允许mysql守护进程使用比默认值更多的资源,为此,通过在/etc/login.conf文件底部添加以下条目进行更改。

mysqld:\

    :openfiles-cur=1024:\

    :openfiles-max=2048:\

    :tc=daemon:

 

启用并启动MariaDB。此过程将设置一个root密码并有选择地删除测试数据库,在安装阶段遵循此建议是个好主意。

 doas mysql_install_db

 doas rcctl enable mysqld

 doas rcctl start mysqld

 doas mysql_secure_installation

 

创建WordPress数据库和数据库用户。

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安装文件夹即可。

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后面管理站点下载插件和主题。

doas mkdir /var/www/etc

doas cp /etc/hosts /var/www/etc/.

doas cp /etc/resolv.conf /var/www/etc/.

 

启动httpdphp73-fpm

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