从 0 搭建 Typecho 博客

VPS

从 cloudcone 购买的 VPS,地址:https://cloudcone.com/vps/

搭建环境

Typecho、PHP、MySQL、Nginx、CentOS 7。

# 安装 yum-utils 工具,下面后用到
yum install yum-utils -y

MySQL

下载 mysql yum 源,网址:https://dev.mysql.com/downloads/repo/yum/,选择 CentOS 7 版本的

cd ~
wget https://repo.mysql.com/mysql80-community-release-el7-9.noarch.rpm

安装这个 rpm,实际上是在 /etc/yum.repos.d/ 下创建了几个 mysql 的 repo 文件

rpm -ivh mysql80-community-release-el7-9.noarch.rpm

查看 mysql 版本,此 yum 源中包含了多个版本的 mysql,默认启用最新的版本,也就是 mysql 8.0,这里我们使用 mysql 5.7,需要改一下 repo 文件

# 查看 mysql 版本
yum repolist all | grep mysql
# 修改 repo 文件,将 5.7 版本的 enabled 字段改为 1,8.0 的改为 0
vim /etc/yum.repos.d/mysql-community.repo
# 当然,也可以使用以下命令
yum-config-manager --disable mysql80-community
yum-config-manager --enable mysql57-community
# 使用 enabled 参数看下是否修改成功
yum repolist enabled | grep mysql

正式安装 mysql

yum install -y mysql-community-server
# 开机自启
systemctl enable mysqld.service
# 查看开机自启是否设置成功
systemctl list-unit-files | grep mysqld
# 启动 mysql
systemctl start mysqld
# 查看初始密码
grep 'temporary password' /var/log/mysqld.log
# 登录
mysql -u root -p
# 修改默认密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword';
# 刷新权限
flush privileges;
# 设置账号远程访问
use mysql;
update user set host='%' where user='xxx';
# 查看端口是否被占用
netstat -nltp | grep mysql

PHP

下载 rpm

cd ~
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
wget https://rpms.remirepo.net/enterprise/remi-release-7.rpm

安装 rpm

rpm -ivh remi-release-7.rpm epel-release-latest-7.noarch.rpm

启用 php 7.4 repo

yum-config-manager --enable remi-php74

安装 php 及其扩展

yum install -y php php-fpm php-mysql php-mbstring

启动 php-fpm

systemctl enable php-fpm
systemctl start php-fpm

Nginx

cd ~
# 下载 nginx rpm
wget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
# 安装 rpm 获得 nginx repo 文件
rpm -ivh nginx-release-centos-7-0.el7.ngx.noarch.rpm
# 或者一步到位,直接从远端下载安装 rpm
rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
# 正式安装
yum install -y nginx
# 开机自启
systemctl enable nginx
systemctl start nginx

部署 Typecho

去官网下载安装包,这里是 1.21 版本的,https://typecho.org/download

将其解压得到 typecho 根目录,放到 /usr/share/nginx/html 目录下,可以将此目录下默认的文件删除或备份到其他目录。注意设置 typecho 目录的权限,默认应该是 777,设置写权限方便安装程序安装。

chmod 777 typecho

/etc/nginx/conf.d 目录下创建一个名为 typecho.conf 的配置文件。记得将该目录下默认的 default.conf 文件删除或换个名字,如 default.conf.bak,因为里面有个默认的 80 端口的 server,回合我们接下来的配置冲突。

typecho.conf

server {
    listen       80;
    server_name  localhost;

    root   /usr/share/nginx/html/typecho;
    index  index.php;

    location ~ .*\.php(\/.*)*$ {
        root           /usr/share/nginx/html/typecho;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_split_path_info ^(.+?.php)(/.*)$;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

执行检查,并重启 Nginx

nginx -t
nginx -s reload

回到浏览器,输入 xxx.xxx.xxx.xxx,即可看到安装步骤。其中数据库可以使用 sqlite 或 mysql,如果使用 mysql 则需要额外配置连接信息,并且还要事先在数据库中创建一个 typecho 数据库(具体名称由步骤中的配置决定)。CREATE DATABASE typecho default character set utf8mb4 collate utf8mb4_general_ci;然后等待安装完毕即可(记住管理账号和密码)。

安装过程中可能会出现没有目录权限的问题,原因是 nginx 和 php-fpm 不是同一个用户运行的,这里我们统一使用 www 用户运行。

groupadd www
useradd -g www -s /sbin/nologin www

# 然后将 /usr/share/nginx/html/typecho 目录的所属改为 www 用户
chown -R www:www /usr/share/nginx/html/typecho

安装完毕后访问页面,会发现每个页面都带着一个 index.php,如果想要显示为 .html,则需要配置伪静态。

步骤如下:

在 server 块中输入如下配置

if (!-e $request_filename) {
    rewrite ^(.*)$ /index.php$1 last;
}

浏览器输入 xxx.xxx.xxx.xxx/admin 进入管理页面,点击 “设置 - 永久链接”,选中 “启用地址重写功能 - wordpress风格”,点击保存即可。

然后再访问页面,可以看到 index.php 没了,取而代之的是 xxx.html 文件。

OK,教程完毕,如有问题和不足,欢迎指出并在评论区友好探讨。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注