Centos8中用Podman搭建 WordPress

1. 简单介绍

1.1 Podman

Podman 是使用上非常类似 Docker 的容器工具,可以快捷管理镜像(带系统的Time Machine),快捷由镜像创建容器环境(类似虚拟机,但不模拟硬件层),也可以快速由容器制作出镜像进行保存或者分享。

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

  • 配置错了不知道怎么还原?没关系!删容器重建一个新的!
  • 教程学习中不确定某一步的价值?没关系,保存成镜像,完美的运用AB-Test,践寻科学本质观!
  • 想尝试新功能,但需要同一个端口?没关系,如果旧功能跑在容器中就可以暂停一下,研究清楚后再无痕恢复!
  • 不想数据库端口暴露,不确定防火墙是否靠谱?跑容器内不开放端口就能双重保险。
  • 想备份?一行命令搞定。
  • 想迁移?插件都不用,制作一个镜像穿走就ok。
  • 想减少折腾?下载WordPress官方镜像,1分钟建站。

1.2 WordPress

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

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

  • 跨平台,跨设备同步
  • 支持Markdown
  • 方便地图片粘贴
  • 方便固定链接分享(工作上需要写和分享设计文档)
  • 易搜索

所以本着折腾的心尝试一下搭建WordPress,目前发现体验还不错。一个服务器可以搭多个站,可以让一个成为私人笔记本,同时一个作为博客。

2.环境介绍

2.1 服务器选择

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

如果坚持用大陆内的服务器,则需要专门去下载压缩包,或者使用镜像服务器。

2.2 系统选择

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

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

3. Podman安装

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

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

完成后便可以安装 Podman :

dnf install podman -y
Podman安装完成

4.搭建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。

5. 搭建WordPress

5.1 安装相关环境

类似之前对centos8的操作,首先更新一下dnf

dnf update -y && dnf makecache

完成后安装wordpress相关的各种服务和软件

  • mariadb 为一种数据库,也可以用其他数据库。用于之后wordpress存储文章、用户等数据信息
  • httpd 是apache网站服务,wordpress可以选择搭建在apache之上。当然还可以选择用nigix。
  • php是wordpress基于的脚本语言
  • weget是常用的下载工具,之后会用于下载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瞅一瞅内存状态。

5.2 配置数据库

前面检查没问题的话,则可以开始建立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
刷新权限并退出

5.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/

5.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

5.5 配置WordPress

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

初始配置

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

填入之前数据库相关信息

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

设置站点名和密码

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

大功告成

7. 后续可选操作

使站点由http变为https (待补充)

一个服务器搭建多个wordpress (待补充)

8.参考资料

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

https://linuxhint.com/install_wordpress_centos8/

2 thoughts on “Centos8中用Podman搭建 WordPress”

  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

    Reply
    • Oh sorry for the late reply.I am using WordPress with a theme named GeneratePress. WordPress seems very easy to use and maintain with its various of plugins and tools. Welcome to discuss about it.

      Reply

Leave a Comment