Centos8在Podman中搭建WordPress

0.备注

由于 centos 已停止维护,个人已转用 debian 系统,并基于 debian 系统重新搭建了基于 WordPress 的本博客。

这是个人基于 debian 搭建 WordPress 的教程:https://pangruitao.com/post/2079

不过即使坚持继续使用 centos,讲道理问题也不大。下面是以前用 centos 时写的教程。


1. 简单介绍

由于个人是是在 Podman 在容器中搭建的 WordPress。所以把 Podman 部分的一起写了。

注意:Podman 本身不是必要的,如果不想用,可以跳过 Podman 部分,直接从下面的【3. 搭建WordPress】开始

1.1 Podman 简介

Podman 可以算做 centos8下的 Docker,可以快捷管理镜像(类似带系统的Time Machine),能快捷由镜像创建容器环境(类似虚拟机,但不模拟硬件层),也可以快速由容器制作出镜像进行保存或者分享。

非常适合我这样的新手基于 Podman 或 Docker 折腾和学习各种其他内容:

  • 配置错了不知道怎么还原?没关系!删容器重建一个新的!
  • 教程学习中不确定某一步的作用风险?没关系,保存成镜像,完美的运用AB-Test,践寻科学本质观!
  • 想尝试新功能,但需要同一个端口?没关系,如果旧功能跑在容器中就可以暂停一下,研究清楚后再无痕恢复!
  • 不想数据库端口暴露,不确定防火墙是否靠谱?跑容器内不开放端口就能双重保险。
  • 想备份?一行命令搞定。
  • 想迁移?插件都不用,制作一个镜像传走就ok。
  • 想减少折腾?下载WordPress官方镜像,1分钟建站。
  • 想一个服务器搭建多个服务(如多个网站+jupyterlab+梯子+webdav+我的世界服务器等等)并希望相互隔离避免交叉感染,多个容器也正好可以完美满足。

1.2 WordPress

由于国内 Notion 访问较慢,且未来有被封的风险。最近在寻找代替的笔记工具。

尝试过 Typora、Bear、Mweb、蚂蚁笔记、Quiver、Devonthink 3、Evernote。总或多或少有一些不满意,后来了解到 WordPress 。虽然是个博客而非笔记,但似乎正好符合我的大部分笔记需求:

  • 方便地固定链接分享
  • 跨平台,跨设备同步
  • 可支持Markdown
  • 方便地图片粘贴
  • 搜索功能将就能用,配合 Alfred 基本体验不差(但暂时没找到能媲美Notion Evernote等专门笔记本的搜索插件,未来有空了可能自己搞一下)

所以最初本着折腾的心尝试一下搭建WordPress,目前体验还不错。

且可以用反向代理等手段一个 ip 可以搭多个站,用域名区分,可以让一个成为私人笔记本,同时一个作为对外博客,一个用于放工作文档,很灵活方便。

1.3 服务器选择

由于 WordPress 最近似乎把大陆封禁了,各种访问提示 Too Many Request。所以可以选择位于大陆以外的云服务器进行搭建。谷歌云和AWS首年都有非常大的优惠,甚至免费。也可以尝试阿里云,对大陆访问应会有更高的稳定性,还可以很方便地备案和申请SSL证书。个人目前用的阿里云。

如果坚持用大陆内的服务器,则可能需要专门去下载压缩包(可以先试试,万一可以连通了),或者使用镜像服务器。

1.4 系统选择

个人选择 CentOS 8.1 64位,主要由于我对各个版本都不太熟悉,干脆选择较新版。

目前体验上和 Centos6 和 7 差别不大,最明显的是 yum 换为了 dnf ,但用法感觉几乎一致。

2. Podman 安装配置

2.1 Podman 安装

不需要的话,可以跳过,直接看 【3. 搭建WordPress】

首先更新一下 dnf (类似yum或brew的centos8中自带的软件管理器)。之后顺便 makecache 一下,使之后搜索更快。两个操作用 && 间隔即可。 -y 是为了自动确认,懒得中途去输入y 。

dnf update -y && dnf makecache
dnf更新完成

完成后便可以安装 Podman :

dnf install podman -y
Podman安装完成

2.2 搭建WordPress的初始容器

Podman安装完成后,个人选择基于Centos 8的镜像搭建WordPress。

也可以直接在Docker Hub (Podman兼容Docker) 中找 WordPress的镜像,会更快捷,但个人还是选择多折腾一步吧,了解一下具体结构,会更方便驾驭后续的,比如添加https,或者搭多个WordPress等自定需求。

首先可以尝试用podman进行搜索centos 8的镜像,用于之后搭建WordPress,个人由于podman的搜索配置可能有问题,直接通过podman search centos:8 找不到官方的image。

搜索centos8镜像

但由官网查询确实是有centos:8的image的所以直接尝试拉取就行。

podman pull centos:8
拉取镜像

拉取后可以查看一下本地的镜像

podman image ls
查看本地镜像

显示的镜像和我之前另一个服务器拉取的不一致,看从签名来是centos官方,应该也比较靠谱。

下一步便是基于此镜像创建容器。

可以用 podman run –help 查看跑容器的具体参数。这里 –name mywordpress 将容器命名为mywordpress。 -dit是三个选项的合体 主要保证能够后台运行,-p 表示映射一个服务器端口至容器,这里映射了80用于http默认端口,443用于https默认端口。/sbin/init 为赋予容器systemctl等命令的权限,方便后续管理。

podman run --name mywordpress -dit -p 80:80 -p 443:443 centos:8 /sbin/init 
创建成功

创建成功后还可以用

podman ps -a #-a用于展示所有容器,不加-a则只展示运行中的容器

观察当前所有容器状态

查看容器状态

确定和需求一致后,可以用以下命令进入容器

podman exec -it 4901375e48cb bash #中间那串4901375e48cb是刚才查询的容器id,也可以使用容器的name,bash是选择的shell
进入容器

进入容器后可发现主机名改变为了容器的id。

3. 搭建WordPress

3.1 安装相关环境

如果使用 Podman 或 Docker 不建议在容器中 dnf update,会使容器不必要地增大很多。

首先安装wordpress相关的各种支持服务和软件

  • mariadb 为一个数据库,也可以用其他数据库。用于之后 wordpress 存储文章、用户等数据信息
  • httpd 是 apache 网站服务,wordpress 可以选择搭建在 apache 之上。当然还可以选择用 nigix。
  • php 是 wordpress 基于的脚本语言
  • wget 是常用的下载工具,之后会用于下载 wordpress 包
dnf install mariadb mariadb-server httpd httpd-tools php php-cli php-json php-gd php-mbstring php-pdo php-xml php-mysqlnd php-pecl-zip wget -y
安装完毕

安装完毕后,我们先用systemctl启动httpd和mariadb,并且将其设置为开启自动启动,减少以后重启容器的额外操作

systemctl start httpd && systemctl start mariadb && systemctl enable httpd && systemctl enable mariadb

启动后,可以通过

systemctl status httpd

查看httpd的运行状态

正常运行

也可以用

systemctl status mariadb

查看数据库运行状态。确认运行正常后可以输入

:q

退出。如果状态非active,则意味着有一些问题,可能是配置问题(但当前还没有进行配置,但之后可能会遇到,到时候可以通过报错提示的日志查看方式,确定问题所在),也可能是内存不足等等,可以使用top瞅一瞅内存状态。

3.2 配置数据库

注:如果用了 Podman ,通常不建议将数据库放在容器中。除非只是小网站,问题就不显著。个人还是图省事,装在容器中的。

前面检查没问题的话,则可以开始建立wordpress所需要的数据库。首先用以下命令进入数据库,初始时没有密码,提示输入密码时直接确认就行。

mysql -u root -p
进入数据库

创建mywordpress数据库,名字可以自定,但需要记住,之后配置wordpress需要用到

CREATE DATABASE mywordpress;
创建数据库

建立wordpressuser用户(名字也可以自定),并且使其拥有对刚才建的mywordpress数据库的权限。同时设置密码为mywordpresspassword(自定)。

GRANT ALL ON mywordpress.* TO 'wordpressuser'@'localhost' IDENTIFIED BY 'mywordpresspassword';
创建数据库用户

刷新一下权限

FLUSH PRIVILEGES;

如果需要建立多个WordPress站,可以在这里建立多个数据库并赋予权限。搞定后退出数据库。

quit
刷新权限并退出

3.3 下载WordPress

WordPress是php写的页面服务,跑在网站服务器上(apache或nigx),所以不需要安装。管理起来也几乎和管理一堆网页文件差别不大。

这里选择安装至 /var/www 目录下。

首先进入目录:

cd /var/www

再下载wordpress压缩包至当前目录:

wget https://wordpress.org/latest.tar.gz

解压缩至当前目录:

tar xvzf latest.tar.gz

查看一下当前目录文件,确认有wordpress文件夹:

ls -l
解压并查看文件

此时文件夹的所属者是nobody,需要将其修改为apache,并赋予权限,使WordPress能修改自己的配置或者自动更新等等。

首先将拥有者修改为apache,所属group也修改为apache。 -R参数表示递归修改,会一起修改文件夹内所有文件,-f是不看报错消息,可以不加f。

chown -Rf apache:apache ./wordpress/

接着修改其权限为775,权限值三个数,对应三个组(拥有者、所属组、其他组)的权限,每个数字由 4(如果可读) + 2(如果可写)+1(如果可执行)

加和而成。所以775对应于apache和apache组可读、可写、可执行,而其他组可读、不可写、可执行。

chmod -Rf 775 ./wordpress/

3.4 配置Apache

Apache配置位于 /etc/httpd/ ,可以简单了解一下配置结构

Apache配置

其中conf是主配置文件夹,开启运行时apacha会优先加载其中的配置文件 httpd.conf ,可以查阅其配置,每一条官方都自带有比较详细的备注和说明。

conf.d是额外配置的文件夹,根据httpd.conf中的配置,appache会默认加载里面所有以 .conf 结尾的文件。

conf.modules.d是模块的配置文件夹,根据httpd.conf中的配置,appache也会默认加载这里面所有以 .conf 结尾的文件,一些比如ssl、webdav等常用的模块配置就位于这个文件夹中。

而我们的wordpress配置可以放在conf.d中,首先进入conf.d,用vi创建并编辑配置文件:

cd /etc/httpd/conf.d && vi mywordpress.conf

并粘进下方配置

  • 服务监听 80 端口
  • 服务根文件夹为 /var/www/wordpress
  • 给文件夹配置服务权限和跳转方式
<VirtualHost *:80> 
    ServerAdmin root@localhost
    DocumentRoot /var/www/wordpress #服务的根文件夹
    <Directory "/var/www/wordpress"> #文件夹相关配置
        Options Indexes FollowSymLinks
        AllowOverride all
        Require all granted
    </Directory>
    ErrorLog /var/log/httpd/wordpress_error.log
    CustomLog /var/log/httpd/wordpress_access.log common
</VirtualHost>

完成后Esc进入vi的普通模式,并键入 :wq 保存与退出。

之后重启apache服务

systemctl restart httpd

3.5 配置WordPress

浏览器中输入 http://自己服务器的IP

初始配置

即进入配置页面,选择语种,填入之前建立的数据库名、数据库用户名、数据库密码WordPress就能自动进行配置。

填入之前数据库相关信息

设定站点名(之后可修改)和初始用户和密码

设置站点名和密码

安装完成后登陆后台便可以玩自己的博客了

大功告成

4. 可能遇到的问题和解决方案

如果遇见其他问题也可以站内留言说明一下,我可以看看是否在自己能力范围内。

4.1 显示Index Of

浏览器输入ip后可能显示只含 Index Of 的一个页面。

有可能是由于 Apache 的根配置没有配置去加载 mywordpress.conf 。可以检查一下根配置文件 位于 /etc/httpd/conf/httpd.conf,可以

vi /etc/httpd/conf/httpd.conf

打开看看

/etc/httpd/conf/httpd.conf

到文件最下面,看看 IncludeOptional conf.d/*.conf 是否被 # 注销,是的话按I编辑模式下删掉其前方的#,再esc后:wq保存退出。最后systemctl restart httpd重启Apache即可。

5. 其他可选操作

使站点由http变为https (待闲开心了再补充)

一个服务器搭建多个Wordpress (待闲开心了再补充)

上传文件或图片的大小限制修改 (待闲开心了再补充,也可以自己查)

5.1 还不错的插件

个人踩坑后认为还不错的插件,可以按需要试试

  • MathJax-LaTeX : 支持插入 latex 公式,如 \(\frac{\pi^2}{\lambda}\)
  • Easy Table of Contents : 自动生成目录,如本文的目录
  • Category Order and Taxonomy Terms Order : 分类顺序设置支持
  • Ivory Search : 搜索增强插件,对中文支持还不错。可以加权搜内容、标签、标题等等。可以网站右上角搜个“数学”或其他什么试试
  • UpdraftPlus : 自动备份数据库和文件,可以备份至 Google Drive
  • OSS Upload : 将图片自动上传至 阿里云OSS ,可以设置图片样式(需要阿里云预配好),压缩或者加水印。
  • WP Super Cache : 自动页面静态化,我测试时并发支持至少提升了 4 倍
  • W3 Total Cache:比 WP Super Cache 包含更多功能的加速插件
  • Search Regex : 支持正则表达式匹配和替换,方便快速修改链接或者 latex 格式之类的东西
  • Yet Another Related Posts Plugin : 自动在文章末尾加相关文章推荐

当然,通常原则上,插件应该尽量少用,或者能自己写就自己写,减少不可控风险。

5.2 可免费使用的图库

https://unsplash.com/

https://pixabay.com

5.3 用CDN加速Wordpress

6.参考资料

https://www.cnblogs.com/yanli0302/p/10899270.html

https://linuxhint.com/install_wordpress_centos8/

《Centos8在Podman中搭建WordPress》有1条评论

  1. Hey there would you mind stating which blog platform you’re using?
    I’m looking to start my own blog soon but I’m having a hard time deciding
    between BlogEngine/Wordpress/B2evolution and Drupal.
    The reason I ask is because your design and style seems different then most blogs and I’m looking
    for something completely unique. P.S My apologies for getting off-topic but
    I had to ask!

    Feel free to visit my homepage; CBD for Sale

    回复

发表评论