寒夏摸鱼站

Live your dream, and share your passion.

猴子都能明白的 Typecho 建站教程 #2

磨刀不误砍柴工,我们拿到了一台干净的服务器,第一件事就是配置环境。

教程示范环境

我们教程所使用的环境是 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.18.2.18.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 站点的文件结构和各种配置。