本文 Linux 系统环境为 CentOS 8.2。
搭建 typecho 开发环境需要安装并配置以下这些
- nginx
- SQLite
- php & php-fpm
- typecho
开始前的几个建议,避免踩坑:
1. 在系统中单独创建一个具有 root 权限的用户来配置 typecho 环境;
2. 安装 php 的时候要格外注意,要安装一些依赖,以及一些扩展,搞错了的话会比较麻烦。
这里仅指导新手第一次成功配置 typecho,具体某些配置项的作用大家后面再自行了解。
下面逐个解决上面列出的,这里假定你已经以一个具有 root 权限的用户登录到 CentOS,
如果你直接在 root 用户下操作的话,下面的 sudo
就都不用加了。
1. Nginx
1.1 安装 nginx
Nginx 安装比较简单,直接输入命令安装即可:
1 | sudo yum install nginx |
1.2 配置 nginx 使其支持 php 与 typecho
找到 nginx 的安装目录,里面有一个 nginx.conf
配置文件,修改它。
我这里是默认安装目录 /etc/nginx
,如果你的 nginx 安装在其他位置,就去其他位置找就可以。
1 | sudo vim /etc/nginx/nginx.conf |
找到 http 字段中的 server 字段,将其中的
1 | location / { |
替换为
1 | if (!-e $request_filename) { |
-
另外一个,如果你即将执行 nginx 启动命令的不是 root 用户,建议配置下面这些
还是 nginx.conf 文件,找到 user
字段,改成你的用户名,我这里是 user typecho;
。
然后执行命令
1 | sudo chown -R your_username /var/lib/nginx |
我这里是 sudo chown -R typecho /var/lib/nginx
。
不管怎样,一定要保证 nginx 的启动用户,和 /var/lib.nginx
这个目录的用户一致,不然后面写文章、传文件都可能会出现 500 错误。
其他配置不需要改动。
1.3 启动 nginx
输入命令 sudo nginx
即可启动 nginx。
另:
重启 nginx: sudo nginx -s reload
停止 nginx: sudo nginx -s stop
2. SQLite
安装 SQLite
1 | sudo yum install sqlite-devel |
3. Php & php-fpm
3.1 下载并解压 Php 的 tar.gz 压缩包
这是 php 官网的下载页面:https://www.php.net/downloads.php
复制下来你要下载的 php 版本的 tar.gz 的链接,我这里下载的版本是 7.4.23,链接是 https://www.php.net/distributions/php-7.4.23.tar.gz 。
然后命令行输入
1 | wget https://www.php.net/distributions/php-7.4.23.tar.gz |
这样 php 就下载到服务器本地了。如果你下载太慢的话,也可以用其他方式,比如先下载到自己的电脑,再上传到服务器,这里就不讲述这个操作了。
解压下载下来的 php-7.4.23.tar.gz
并进入此目录
1 | tar -zxvf php-7.4.23.tar.gzcd php-7.4.23/ |
3.2 安装 Php & php-fpm
在这里输入
1 | ./configure --enable-fpm --enable-mbstring --with-zlib --with-curl --with-openssl |
注意这里是容易踩坑的,这几个选项一个都不能少,不然后面再改就比较麻烦,具体用处这里先不解释了。
* 常见问题
错误信息:
Package 'libxml-2.0', required by 'virtual:world', not found
解决方案:
sudo yum install libxml2-devel
错误信息:
Package 'libcurl', required by 'virtual:world', not found
解决方案:
sudo yum install libcurl-devel
错误信息:
Package 'openssl', required by 'virtual:world', not found
解决方案:
sudo yum install openssl-devel
错误信息:
Package 'oniguruma', required by 'virtual:world', not found
解决方案:https://www.cnblogs.com/architectforest/p/12433640.html
可能还会有其他类似问题,我暂时只遇到了这几个,如果有其他问题,自己谷歌百度看看还需要安装哪些。
上面的命令完成后,会有提示 “Thank you for using PHP.”,输入
1 | make |
1 | sudo make install |
php 安装完成。
3.3 修改 Php & php-fpm 配置文件
先拷贝默认的配置文件到我们需要的目录下
1 | sudo cp php.ini-development /usr/local/php/php.ini |
3.3.1 编辑 www.conf
1 | vim /usr/local/etc/php-fpm.d/www.conf |
找到 user
字段,值改为 typecho
,即user = typecho
, 这个用户就是 linux 专门操作 typecho 的那个用户,我的是 typecho
,你就是你的。group
字段不用改, 就默认的 nobody
就行,没什么影响。
3.3.2 编辑 php-fpm.conf
1 | sudo vim /usr/local/etc/php-fpm.conf |
找到 include 字段,一般是最后一行,默认是 include=NONE/etc/php-fpm.d/*.conf
,把这个路径改为我们上面配置的 www.conf 的正确路径。
我这里是 include=/usr/local/etc/php-fpm.d/*.conf
,改完后保存退出。
3.4 启动 php-fpm
1 | sudo /usr/local/bin/php-fpm |
如果没有输出任何内容,就说明启动成功了。
4. Typecho
4.1 下载 typecho
建议下载 GitHub 上的最新版本,因为目前官网上的最新稳定版(1.1.17.10.30)有个关于 cookie 的 bug。
1 | git clone https://github.com/typecho/typecho.git |
这样 typecho 就下载到服务器本地了。同样的,如果你下载太慢的话,也可以用其他方式,比如先下载到自己的电脑,再上传到服务器,这里就不讲述这个操作了。
clone 下来的是一个名为 typecho-master
的文件夹。
4.2 将 typecho 目录中的内容移动到 nginx 的 root 目录中
root 目录是 nginx 配置文件里那个
先删除 root 目录下原来的内容
1 | sudo rm -rf /usr/share/nginx/html/* |
然后把我们的 typecho 中的内容移动过去
1 | sudo mv ./* /usr/share/nginx/html/ |
* 修改 root 目录所有者,要把这个 root 目录的所有者改成和 php-fpm 用户一样的,不然可能会出现权限问题。
我们上面 php-fpm 的 user 已经设置为了 typecho
,这里也一样
1 | sudo chown -R typecho /usr/share/nginx/html |
5. 开始使用 typecho
在浏览器中输入你的服务器 ip 或者域名,即可进入 typecho开始页面。
根据提示依次配置好各项信息即可,这里的用户名和密码就是 typecho 后台管理页面的用户与密码。
到这里 typecho 配置就全部完成了!