磨刀不误砍柴工,我们拿到了一台干净的服务器,第一件事就是配置环境。
教程示范环境
我们教程所使用的环境是 CentOS 7.9,如果您使用 Ubuntu 或其他 Linux 分发,对于一些平台特有的命令(如包管理器使用等)你可以寻找功能相同的替代来使用。
另外,教程中我们没有使用 root 账户来进行操作,因为总是使用 root 来操作不排除有手贱和安全性隐患,所以一些命令会使用到 sudo
来提权。简单起见,我们就不在这里介绍 Linux 系统的用户操作了。
Yum 的基础使用学习
Yum 是 CentOS 上的包管理器,我们需要知道如下几个功能及其对应的命令使用:
更新软件包:
sudo yum update
安装软件包:
sudo yum install {包名列表}
删除软件包:
sudo yum remove {包名列表}
在软件仓库中搜索软件包:
yum search {关键字}
列出已安装的软件包:
yum list installed
其中搜索和列出包不需要 root 权限,所以能少打一个 sudo
就少打一个。
这 5 个命令足够你完成 99% 的软件包管理了,其他的命令不需要特意去学习,有需要的时候动动手指查一下就行。
作为我们建站的第一步,我们首先更新一下软件包:
sudo yum update
如果下载很慢,我们就更换一下镜像,这一部分大家自己搜索一下如何操作即可,这里不再赘述。
Docker 安装
最简单、最方便的方法是使用 Docker 的官方安装脚本,一行就能搞定:
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
安装完成后设置 Docker 开机自启:
sudo systemctl enable docker
systemctl
是 Linux 系统非常重要的一个命令,用它可以管理所有的后台任务和启动任务,如果我们想要查看 Docker 的运行情况,那么就执行如下指令:
systemctl status docker
取消 Docker 开机自启就执行如下指令:
sudo systemctl disable docker
当然我们现在只是设置了 Docker 开机自启,但它本身还没启动,我们使用如下命令启动 Docker:
sudo systemctl start docker
当然你还可以停止 Docker:
sudo systemctl stop docker
除了安装 Docker,我们还需要 Docker 系统的另一大工具 —— Docker Compose,这个安装就简单多了:
sudo yum install docker-compose
下载 Docker 镜像
Docker 系统安装好后什么都没有,我们需要下载一些镜像来给它运行。
根据我们的建站需求,我们需要 Nginx、PHP-fpm 和 MySQL 这三个镜像。使用 docker pull
来从 Docker 仓库中拉取镜像:
sudo docker pull nginx:1.22.1-alpine
sudo docker pull php:8.2.1-fpm-alpine3.17
sudo docker pull mysql:8.0.31
当然,如果你下载缓慢,同样可以通过更换镜像来解决,详细方法不再赘述。
简单解释一下镜像的 Tag 选择,首先诸如 1.22.1
、8.2.1
、8.0.31
啥的一言就是版本号,我们就不提了。
然后就是 alpine
,这代表这个镜像是在 Alpine Linux 下构建的,Alpine 是个非常轻量级的 Linux 分发,完整大小只有 10MB 左右,非常适合用来作为镜像系统,同时还能减少下载大小,节省存储空间。
而 PHP 还带了个 fpm
的后缀,其表示 FastCGI Process Manager(FastCGI 进程管理器)。
以前的网站大多数都是静态网页,各种网站服务端如 Nginx、Apache 等只需要等待用户请求,然后读取文件再传递给用户即可。
当进入了动态网站时代,网站服务端就得想办法把用户请求先发给动态页面程序先处理一遍,然后收集程序的返回内容,再传递给用户,于是在网站服务端与动态页面程序之间就产生了 CGI 协议(Common Gateway Interface,公共网关接口)专门处理这种页面调用。后来效率更高,功能更强的 FastCGI 协议出现了,取代了旧的 CGI 协议。
因为动态页面程序和网站服务端一样需要一直运行来响应请求,所以很多动态页面程序就提供了 FastCGI 进程管理器来常驻内存执行,这就是 PHP 为什么要使用带有 fpm
的版本。
下载 MySQL 客户端
我们需要使用 MySQL 客户端来通过命令行连接 Docker 中的 MySQL,以进行调试工作。我们需要安装一个叫 mysql-community-client
的软件包。然而有些系统的包管理器中没有这个包(比如我的阿里云),我们需要手动在 Yum 中添加 MySQL 的仓库信息。
我们先打开 https://dev.mysql.com/downloads/,可以看见 MySQL 官方提供了 Yum、APT 和 SUSE 三种仓库,我们选择 Yum 仓库,这样子我们会来到这:https://dev.mysql.com/downloads/repo/yum/。
你会发现这个页面里头没有 CentOS,而全是 Red Hat Enterprise Linux(RHEL)和 Fedora。其实 RHEL 和 CentOS 这俩东西核心是一样的,我们需要 CentOS 7,那么选择 RHEL 7 就对了。
点击 RHEL 7 旁边的 Download 按钮,然后在新弹出的页面找到 “No thanks, just start my download.” (没人会注册一个 Oracle 账号来下载) 点击右键复制链接地址。
这样你就得到了 MySQL 仓库文件链接,它长这样:https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
注意:仓库链接可能会随时因为更新而发生变动,旧的链接会失效,所以你应该亲自打开 https://dev.mysql.com/downloads/repo/yum/ 来寻找最新的仓库链接,而不是拷贝我上面给出来的链接
在获得链接后,使用 wget
命令把文件下载下来:
wget {你得到的 MySQL 仓库文件链接}
这样你就得到了一个 .rpm 格式的文件,使用 rpm
命令安装它:
sudo rpm -Uvh {你得到的 .rpm 文件名}
我们还需要使用 rpm
命令,将 MySQL 仓库的秘钥信息添加进去。打开 https://repo.mysql.com/,在里面寻找名字为 RPM-GPG-KEY-mysql-
后面再跟一串数字的文件,如:RPM-GPG-KEY-mysql-2022
。我们点开这个文件,你可以看见网页显示了一堆以 -----BEGIN PGP PUBLIC KEY BLOCK-----
开头的乱码,我们复制这个网站的 URL,然后执行如下命令:
sudo rpm --import {你复制的 URL}
这样一来,MySQL 仓库才算安装好了,我们使用 Yum 更新一下软件包,然后再安装 MySQL 客户端:
sudo yum update
sudo install mysql-community-client
最后测试一下 mysql
命令,如果输出了版本信息,那么就是安装好了:
mysql --version
小结
至此我们的环境搭建已经全部完成了,下一章我们将构建整个 Typecho 站点的文件结构和各种配置。