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

 添加Ondřej Surý的PHP源

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中设置端口的重定向。这一部分本文就不再赘述,各位自行百度吧~

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部