前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用OpenBSD的httpd在OpenBSD 6.5上运行WordPress

用OpenBSD的httpd在OpenBSD 6.5上运行WordPress

原创
作者头像
cnllww
修改2022-10-20 14:08:01
1.5K0
修改2022-10-20 14:08:01
举报
文章被收录于专栏:OpenBSD中文文档OpenBSD中文文档

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

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
网站建设
网站建设(Website Design Service,WDS),是帮助您快速搭建企业网站的服务。通过自助模板建站工具及专业设计服务,无需了解代码技术,即可自由拖拽模块,可视化完成网站管理。全功能管理后台操作方便,一次更新,数据多端同步,省时省心。使用网站建设服务,您无需维持技术和设计师团队,即可快速实现网站上线,达到企业数字化转型的目的。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档