安装清单
本文的安装环境为1c4g的vps,操作系统为debian 11,其他配置及系统仅供参考,清单如下
- docker
- nginx
- mysql5.7
- php7.4
- typecho v1.2.1
nginx安装
本文选择在宿主机上安装nginx,如果有需求,也可以选择使用docker安装nginx。
apt update && apt-get install -y nginx
// 创建web目录
mkdir -p /data/www
docker安装
apt update
apt install -y gnupg dpkg apt-transport-https lsb-release ca-certificates
curl -sSL https://download.docker.com/linux/debian/gpg | gpg --dearmor > /usr/share/keyrings/docker-ce.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-ce.gpg] https://download.docker.com/linux/debian $(lsb_release -sc) stable" > /etc/apt/sources.list.d/docker.list
apt update && apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
到此docker已安装完成,执行docker ps
查看docker是否运行正常
mysql安装
// 拉取mysql镜像
docker pull mysql:5.7
// 创建mysql对应目录作为挂载,目录可自己修改
mkdir -p /data/docker/mysql/conf
mkdir -p /data/docker/mysql/data
mkdir -p /data/docker/mysql/logs
// 启动容器
docker run -p 3306:3306 --name mysql -v /data/docker/mysql/conf:/etc/mysql/mysql.conf.d -v /data/docker/mysql/logs:/logs -v /data/docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=你的密码 -d mysql:5.7
到此mysql已安装完成,启动容器时需保证宿主机的3306端口未被占用。如果你的机器配置不够高,为了防止mysql占用资源导致OOM,可以对mysql进行如下配置,减少mysql默认占用资源。
cd /data/docker/mysql/conf
touch my.cnf
// 修改文件权限,确保非777,否则mysql启动会报错
chmod 744 my.cnf
将以下内容输入并保存
[mysqld]
performance_schema_max_table_instances=300
table_definition_cache=300
performance_schema=off
table_open_cache=64
innodb_buffer_pool_chunk_size=64M
innodb_buffer_pool_size=64M
docker restart mysql
重启mysql容器,然后可以执行docker stats
查看容器的资源占用。然后我们需要记录一下mysql容器的docker内网ip,后面php连接mysql需要使用到。
docker inspect mysql容器id | grep IPAddress
以本文为例,mysql容器ip为172.17.0.2。然后,我们进入容器,创建typecho的数据库。
docker exec -it mysql容器id /bin/bash
// 连接mysql
mysql -u root -p // 输入密码
// 创建数据库
CREATE DATABASE IF NOT EXISTS typecho DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci;
php安装
本文安装的php版本为7.4,有更高版本需求的可以自己调整,因为我们使用nginx反代,所以安装fpm版本。
// 拉取php7.4镜像
docker pull php:7.4-fpm
// 启动容器
docker run --restart=always -d -p 9000:9000 -v /data/www:/www --name php7.4 php:7.4-fpm
启动容器时需保证宿主机的9000端口未被占用,由于php镜像默认是未安装mysqli或者pdo_mysql扩展的,所以我们需要进入镜像安装对应的扩展,这里我们选择安装pdo_mysql。
// 进入php容器
docker exec -it php容器id /bin/bash
// 使用docker-php-ext-install命令安装扩展
docker-php-ext-install pdo pdo_mysql
安装完成后,需要退出容器重启php。到此php已安装完成,现在我们测试一下服务是否运行正常。创建nginx站点反代配置文件,将请求转发到php-fpm。
cd /etc/nginx/conf.d
touch typecho.conf
// 将以下配置写入配置文件
server {
listen 80;
root /data/www;
index index.php index.html;
location / {
if (!-f $request_filename){
set $rule_0 1$rule_0;
}
if (!-d $request_filename){
set $rule_0 2$rule_0;
}
if ($rule_0 = "21"){
rewrite ^(.*)$ /index.php$1 last;
}
location ~ .*\.php(\/.*)*$ {
include fastcgi.conf;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME /www/$fastcgi_script_name; // 这里需要将目录指定到容器映射的www目录
fastcgi_param PATH_INFO $uri; #necessary for URL rewrite
}
}
}
// 重载nginx配置
nginx -t // 测试配置文件是否无误
nginx -s reload
我们在/data/www
目录新建一个phpinfo.php文件,写入以下内容。
<?php
echo phpinfo();
打开浏览器,输入http://服务器ip/phpinfo.php,可以看到php,并且扩展已正常安装。
typecho安装
我们从官网下载最新版本,截至文章发布最新版本为v1.2.1。
// 进入网站目录
cd /data/www
// 下载
wget https://github.com/typecho/typecho/releases/latest/download/typecho.zip
// 解压
unzip typecho.zip
// 修改目录权限
chmod -R 777 /data/www
访问http://服务器ip/install.php,点击下一步,会在网站目录生成config.inc.php
配置文件,因为我们使用的是mysql,页面此时会报错。不用着急,回到服务器,编辑config.inc.php
配置文件。
// 编辑配置文件,修改数据库连接信息如下
$db = new \Typecho\Db('Pdo_Mysql', 'blog_'); // 表前缀可以自定义
$db->addServer(array (
'host' => '172.17.0.2',
'user' => 'root',
'password' => '你的密码',
'port' => '3306',
'charset' => 'utf8mb4',
'database' => 'typecho'
), \Typecho\Db::READ | \Typecho\Db::WRITE);
然后重新访问http://服务器ip/install.php,按照步骤走下去即可。
结语
如果对主题有需求,可以到官方主题网站选择安装https://typechx.com/
,本文使用的主题为MWordStar
,可以在github
上下载,地址为https://github.com/changbin1997/MWordStar
。
hello~😀