Typecho是一个非常轻量化的开源博客程序,发展至今已经比较成熟,但是在部署时也会遇到一些问题。本文将根据Typecho的安装需求,从零开始部署一个完整的typecho博客。
Typecho需要的组件:
1. PHP5.1 以上
2. 支持Mysql, PostgreSQL, SQLite 中的任意一种并在PHP中安装了相关扩展
3. CURL或Socket支持
4. mbstring或iconv扩展支持
1 PHP的安装
1.1 更新源
首先安装一个管理源的工具包
apt-get install software-properties-common
add-apt-repository ppa:ondrej/php
更新本地系统的源
apt-get update
1.2 安装 PHP7.4
安装PHP7.4,注意需要带上mbstring和mysql。
apt-get install php7.4 php7.4-fpm php7.4-mysql php7.4-gd php7.4-mbstring
安装完成后启动。
service php7.4-fpm start
PHP安装完成之后,并不能直接使用,因为PHP是一个处理页面的工具,并不能处理http请求。所以我们需要安装Nginx做代理。如果想要搭建支持https的博客,建议编译安装带ssl模块的nginx,安装方法可以参考这篇博客。
nginx安装完成以后,我们还需要连接PHP和Nginx,我们既可以通过socks连接,也可以通过端口连接。我自己尝试socks连接出了一些问题,大概于nginx的版本有关,这里有一些相关的讨论。稳妥起见,我们用端口连接PHP和Nginx。
1.3 配置PHP7.4
我们需要更改配置文件,让PHP以端口的方式连接nginx。
nano /etc/php/7.4/fpm/pool.d/www.conf
找到 listen 项,把/run/php/php7.4-fpm.sock 改为 127.0.0.1:9000,并保存文件。
重启PHP服务
service php7.4-fpm reload
此时可以通过 lsof -i:9000 命令查看9000端口的监听情况,如果输出以下信息,说明PHP的配置没有问题。
2 Mysql的安装
ubuntu下安装Mysql非常简单,只需要一行命令:
sudo apt install mysql-server
此时root用户密码为空,我们以root身份进入mysql修改密码,并创建一个用于typecho的数据库:
mysql
#进入mysql后更改root密码为mynewpassword
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'mynewpassword';
#创建一个名为typecho_blog的数据库
CREATE DATABASE typecho_blog;
#随后退出mysql
exit
之后要以root身份进入mysql,就需要使用 'mysql -u root -p' 命令了。
3 typecho的部署
在某个你喜欢的地方新建一个目录,我们即将把typecho程序安装在这里(本文演示的目录为/home/typecho)。
#新建目录
mkdir -p /home/typecho
#进入目录
cd /home/typecho
#下载源码(可以在typecho官网找到)
wget https://github.com/typecho/typecho/releases/latest/download/typecho.zip
#解压源码
unzip typecho.zip
#对整个源码目录赋予足够的权限
chmod -R 777 /home/typecho
解压完成后,我们开始配置Nginx。
4 Nginx与PHP的连接、博客的安装
以下是Nginx与PHP连接的一个示例配置,完成配置之后,重启nginx并在浏览器访问你自己的域名。
server {
listen 80;
server_name abc.com;
root /home/typecho/;
index index.php;
location ~ .*\.php(\/.*)*$ {
root /home/typecho/;
fastcgi_split_path_info ^(.+?.php)(/.*)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
点击“下一步”
根据刚才的信息配置数据库
配置完成后,就可以进入博客了。
5 支持https的配置
要让博客支持https,必须满足以下条件:
1. 你的域名有SSL证书
2. Nginx包含了ssl模块
首先,我们来到typecho的后台—设置,将站点地址的http改为https。
接下来,我们进入typecho的安装目录,编辑“config.inc.php”文件,加上这句代码:
define('__TYPECHO_SECURE__',true);
随后,我们也要相应地将nginx的配置文件改为支持ssl的,以下是一个配置文件的示例:
server {
listen 443 ssl;
server_name abc.com;
#注意ssl证书路径,替换成你自己的
ssl_certificate /home/ssl_cert/abc.com_bundle.pem;
ssl_certificate_key /home/ssl_cert/abc.com.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
root /home/typecho/;
index index.php;
location ~ .*\.php(\/.*)*$ {
root /home/typecho/;
fastcgi_split_path_info ^(.+?.php)(/.*)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
重启nginx后再次访问https的网站,可以发现已经变成了安全连接。
现在还有一个问题,如果直接访问域名的话,浏览器一般会默认访问http(80端口),要想强制访问443端口就需要在nginx中设置端口的重定向。这一部分本文就不再赘述,各位自行百度吧~