WordPress建站从入门到弃坑#3

发布于 2021-10-17  83 次阅读


对VPS进行了些许调整优化后,就可以开始部署WordPress的运行环境了。

WordPress的代码是用PHP写的,所使用的数据库是基于MySQL的,所以这2样是必装的。另外还需要一个Web服务端用于发布网站,可以从Apache和Nginx里面选一个自己用得比较习惯的。

根据使用的Web服务端,这种运行环境一般被称为LAMP(Linux,Apache,MySQL,PHP)和LEMP(Linux,Nginx,MySQL,PHP)。

顺带一提,LEMP在不少圈子内也被称为LNMP。两者本质上指的是一个东西。LNMP的命名方式是取每个组件的首字母;而由于Nginx发音近似于“Engine-X”,所以取其发音首字母E就成了LEMP。

本篇文章主要记录的是Apache / Nginx、MySQL(或其衍生版)、PHP的初心者向部署方式。

1.演示环境

这次的演示环境和上篇文章中一样,用的是1个内网环境的vSphere虚拟机。部分配置信息如下:

  • 处理器:1核
  • 内存:1GB
  • 硬盘:20GB
  • 操作系统:Debian 11
  • 演示用域名:blog.demo.local
  • 演示用IP:10.2.3.3

注意,文章中进行操作的账号为1个具有sudo权限的账号,由于Debian默认没安装sudo,所以在使用root账号进行操作时记得手动去掉命令里面所有的sudo

2.事前规划

2.1.运行环境选择

目前(2021年10月)WordPress官网对于MySQL和PHP的版本推荐如下:

  • PHP:≥7.4
  • MySQL:≥5.6(使用MariaDB的话则是≥10.1)

PHP环境可以多版本并存,所以在首次使用的时候可以就按照推荐来安装PHP 7.4,后期根据使用的主题再安装PHP 5.x或者PHP 8.x。

MySQL的话,5.6版本建议系统内存大于1GB,5.7版本建议系统内存大于2GB。

Web服务端建议安装Apache或者Nginx比较新的主线版本。目前(2021年10月)应该分别是Apache 2.4.x和Nginx 1.19.x。

2.2.部署方式选择

部署LAMP或LEMP环境的方式有很多种,接下来将会介绍一下各种部署方式的特点。

2.2.1.手动安装

LAMP、LEMP环境所需的软件都可以通过包管理器直接安装,也可以直接下载源代码,装上编译工具自己编译安装。

这样子的安装方式需要一点相关知识与操作,比较费时费事,对于初心者来说不是很推荐。

2.2.2.一键包安装

一键安装包指的是一套能够在输入必要的安装信息后自动安装相关运行环境的Shell脚本。以下是2个比较老牌的一键安装包官网地址。

  • 秋水逸冰的LAMP一键安装包:https://lamp.sh/
  • 军哥的LEMP(LNMP)一键安装包:https://lnmp.org/

通过一键安装包来部署LAMP或LEMP环境就无需进行繁琐的操作了,运行脚本后输入想要装的组件和版本,就能泡杯咖啡等滚屏完成环境装好了。

2.2.3.Web面板安装

Web面板会提供一个HTML控制台,便于对服务器进行可视化管理。

和一键安装包相比,Web面板主要有3个短板:会占用一些系统资源;控制台暴露在公网,安全性难以保障;面板本身可能会收集VPS操作系统信息。

所以对于大佬来说,是否用面板就是一个值得考虑的问题了。但是对初心者来说,通过面板来部署环境是最容易上手的,这个阶段可以暂时先用着,以后可以根据自己的使用习惯进行更改。

目前(2021年10月)功能比较不错的免费面板如下:

  • 国内面板↓
  • 小皮面板(https://www.xp.cn/linux.html):兼容性不错,然而已经一年多没更新了
  • InPanel(https://inpanel.org/install.html):内存占用较小,只支持RHEL/CentOS
  • AppNode(https://www.appnode.com/install):功能较多,操作略复杂,只支持RHEL/CentOS
  • 宝塔(https://www.bt.cn/download/linux.html):应该是这几年最常见的国内面板,至于风评嘛就一言难尽了
  • aaPanel(https://www.aapanel.com/index.html):相当于国际版的宝塔,免费版相比之下更加干净一些
  • 海外面板↓
  • VestaCP(https://www.vestacp.com/install/):功能挺强,只是在大陆地区拿它来部署环境时有点卡
  • FastPanel(https://fastpanel.direct/):功能不错,甚至还支持中文,需要登录账号来给VPS的IP申请免费授权
  • TinyCP(https://tinycp.com/page/show/download):轻量级,比较好用,只支持Debian/Ubuntu

3.LEMP环境部署

本文将以aaPanel面板部署的方式演示LEMP环境的部署。

由于演示环境的虚拟机内存只有1GB,所以MySQL的版本将选择5.6,其他组件的版本将选择当前最新版。

3.1.确认挂载点

首先使用这个命令确认下硬盘的挂载点。

df -h

输出信息大致如下:

Filesystem  Size  Used  Avail  Use% Mounted on
...
/dev/sda1   20G  2G   18G   10%  /
...

主要看的是第2列“Size”和最后1列“Mounted on”,确认下是不是基本所有空间都挂载在根目录“/”。

绝大多数VPS都是一个分区挂载在根目录,这样的话安装位置就可以随意了。

3.2.安装面板

使用大陆地区的IP访问aaPanel官网会直接跳转到宝塔,但是下载安装脚本就不会被重定向。

如果当前没法接入“互联网”,那么就直接记住脚本的下载地址即可。通过这个命令下载面板安装脚本。

wget https://www.aapanel.com/script/install-ubuntu_6.0_en.sh

赋予脚本可执行权限,运行脚本进行安装。

chmod +x install-ubuntu_6.0_en.sh
sudo bash install-ubuntu_6.0_en.sh

脚本会将面板安装在/www/目录。这个路径是写在脚本里的,尝试过修改路径后会导致安装失败。

如果一定要换个位置安装的话,建议做个软链接让/www/指向实际的安装位置即可。

面板安装完成后,会输出类似以下内容:

==================================================================
Congratulations! Installed successfully!
==================================================================
aaPanel Internet Address: http://1.1.1.1:8888/hgja2bd5
aaPanel Internal Address: http://10.2.3.3:8888/hgja2bd5
username: 18aesdsf
password: nnfofliv
Warning:
If you cannot access the panel,
release the following port (8888|888|80|443|20|21) in the security group
==================================================================
Time consumed: 1 Minute!

将“aaPanel Internet Address”那行的地址复制到浏览器中打开,使用面板自动生成的用户名和密码登录。

3.3.安装软件包

首次登录面板,会弹出LAMP / LEMP环境的安装窗口。

本次演示中我选了Nginx 1.19,MySQL 5.6,PHP 7.4,剩下的Pure-Ftpd和phpMyAdmin就用默认的了。

选好之后点击左边的“One-click”按钮进行安装。

安装的过程中可以顺便点开“Settings”菜单,决定一下面板的安全入口、用户名、密码改成什么样的。

有安装任务的时候不能修改“Settings”菜单里面的东西,可以先考虑好了等安装完成后再改。

4.WordPress安装准备

LEMP安装完成,“Settings”菜单里面的东西也修改好后,可以做一点安装WordPress前的准备。

4.1.新建数据库

在面板中定位到“Databases”菜单,点击“Add database”按钮新建1个给WordPress用的数据库。

在“DBName”一栏中指定数据库名称,下一行的“Username”将自动填写成一样的用户名。一般情况2个名字保持一致即可。

密码的话,自动生成的那个已经比较安全了,可以直接使用。

本次演示中我新建了1个叫“wordpress”的库。

4.2.新建FTP账号

在面板中定位到“FTP”菜单,点击“Add FTP”按钮新建1个FTP账号。

在“Username”一栏指定用户名,密码就用自动生成的,点击“Submit”进行创建。

本次示例中我新建的FTP账号也叫“wordpress”。

4.3.新建Web站点

在面板中定位到“Website”菜单,点击“Add Site”按钮新建1个Web站点。

“Domain name”一栏填写你解析到VPS上的域名。本次演示环境中填写的是已经解析到演示用虚拟机的blog.demo.local

“Description”一栏是关于这个网站的描述,可以根据实际情况随便填写。

“Website Path”一栏填写的是网站根目录。默认值是/www/wwwroot/<your_domain_name>。演示环境中自动生成的默认值是/www/wwwroot/blog.demo.local。直接使用默认值也问题不大,有实际需求的话可以修改。

FTP和数据库由于之前创建过了,所以在这里就保持“Not create”选项,不进行新建。

PHP版本目前只装了7.4,也保持默认值。

“Site category”是在面板上对站点进行分类的,直接默认值即可。

勾上SSL选项中的“Apply SSL”复选框的话,面板将会自动申请适用于“Domain name”一栏填写的域名的SSL证书,这就要求域名解析已经做好。

SSL选项中的“HTTP redirect to HTTPS”可以将所有HTTP访问重定向到HTTPS。如果决定使用HTTPS的话不妨也勾上。

全部设置好后,点击“Submit”按钮完成站点的创建。

4.4.设置URL重写策略

如果在WordPress中修改了固定链接格式,就需要在Nginx配置文件里面加上URL重写策略防止404了。

还是在“Website”菜单里点击“Site Name”一列中的站点名称,打开站点修改菜单。

点击“URL rewrite”选项,在下拉菜单中找到“wordpress”并点击“Save”保存,重写策略就配置好了。

接下来就可以上传WordPress网站代码到网站根目录,开始安装并使用WP了。

5.个人吐槽

看了看字数统计,整理了下WordPress安装以及个性化所需要记录的内容,感觉又可以放在下一篇文章了。

刚开始玩建站的时候,我很喜欢用各种面板来进行操作。后来就感觉这样多开了1个端口,多挂了1个Web服务,就有可能也会多出现1个安全隐患。

相比之下,没有对外发布组件的一键包就安全不少。用一键包确实没有用面板来得省事,不过对于真正重要的业务来说,牺牲少许便捷性换来一些安全性肯定不亏。