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
完成后便可以安装 Podman :
dnf install podman -y
2.2 搭建WordPress的初始容器
Podman安装完成后,个人选择基于Centos 8的镜像搭建WordPress。
也可以直接在Docker Hub (Podman兼容Docker) 中找 WordPress的镜像,会更快捷,但个人还是选择多折腾一步吧,了解一下具体结构,会更方便驾驭后续的,比如添加https,或者搭多个WordPress等自定需求。
首先可以尝试用podman进行搜索centos 8的镜像,用于之后搭建WordPress,个人由于podman的搜索配置可能有问题,直接通过podman search centos:8 找不到官方的image。
但由官网查询确实是有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/ ,可以简单了解一下配置结构
其中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
打开看看
到文件最下面,看看 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 : 自动在文章末尾加相关文章推荐
当然,通常原则上,插件应该尽量少用,或者能自己写就自己写,减少不可控风险。
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