前言

以前在一些大佬口中得知很多大神都有自己的博客,也觉得很神奇、厉害。
我是一个.Net的开发者,最初也是想使用Vue+mysql+.Net/Node.Js来开发自己的博客。

在一次开发的过程,发现要解决的事情非常多,并且前端方面时常遇到很多不好解决的问题。
最近在公司研究Frp的时候,感觉自己的服务器网速不行,又无法使用XTPC,导致远程掉帧。
在搜索解决方案时,看到有人分享了一个线上免费Frp。Sakura Frp | Frp文章 |

打开发现,很熟悉的页面,飞机场既视感。
好奇作者的其他技术内容,点开了博客,找寻一番,发现博客是使用 Typecho。
其查了一些资料,似乎很好部署,支持皮肤更换,功能插件支持,还有一定的社区。
于是决定,自己也要搞一个

一、准备工作

Typecho 官网
其技术是PHP,服务端直接在官方即可下载,记文使用的是正式版1.1

此前,先来准备部署需要的东西:
Win 可以使用 IIS
Linux 可以使用 Apache2

sudo apt-get install libapache2-mod-php

这里就不详细说明安装过程了。需要注意的是,IIS的话需要安装CGI,安装时需要留意一下
image.png

因为我的服务器上还有运行其他内容运行在80端口,我比较习惯使用Nginx来反代
Nginx 官网

Win系统可以直接下载解压包,免安装
Linux可以通过命令行直接一键安装 这里都不展开详说了

数据库我直接使用习惯的mysql
Win 平台不细说,装就是了
Linux需要为PHP装扩展

sudo apt-get install php-mysql

二.Win部署

到这一步,我们应该装好了Mysql,解压了PHP,安装了IIS,也放好了Nginx
路径:E:PHP 为PHP程序存放的位置(php-cgi.exe所在位置)

1.我们先调整下PHP的配置

先给php.ini-production去除后缀,改名为 php.int
在配置中找到下面内容,将其改为自己PHP目录中的ext文件夹,并取消前面';'注释

extension_dir = 
extension_dir ="E:PHPext"     ;示例
session.save_path = 
session.save_path = "E:PHPextse" ;示例

找到下面的插件内容,把前面的注释去除掉,我们启用这些插件
image.png

2.接着我们来配置IIS

右击网站,选择添加网站.我们填入网站名称,对应Typecho 的路径,和端口即可(不推荐使用80端口)
image.png
接来下为IIS添加映射,模块我们选择FastCgiModule,执行文件就选择PHP目录下的php-cgi.exe
image.png
image.png
image.png

添加完后.我们的网站就能打开了.
在浏览器访问http://127.0.0.1:端口/index.php
即可打开安装页面.

3.准备安装

image.png
在打开页面后,填写相关信息.因为我使用的是MySql,所以选择 Pdo驱动Mysql
这里的数据库名,我们在Mysql中也创建一个同名的数据库

create database typecho;

创建好数据库后,就可以下一步了,"确认,开始安装".
若数据库没有创建,则可能会报错'对不起,无法连接数据库,请先检查数据库配置再继续进行安装'
image.png

至此,我们的Typecho就已经安装完毕了.
如果你的IIS直接对外开放,可以通过 IP:端口/index.php来使用.
但一般我们都会注册一个域名,DNS到服务器上来访问,这里就不展开介绍了.

4.使用Nginx来反代!

因为工作中经常使用Nginx,并且自己的服务器有地方需要使用80端口,我这边就使用Nginx来反代我们的Typecho
打开配置文件 nginxconfnginx.conf
填入以下内容

server {
    listen 访问端口;
    server_name 你的域名;
    location / {
        proxy_set_header Host $host;//把域名带上,避免外网访问时,导致页面有些链接变成了本地IP
        proxy_set_header X-real-ip $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_pass 反代本地地址;//这里填入我们的本地IIS访问地址即可
    }
}

三、新手坑

因为我使用了最新的PHP7.4,部分函数已经过时不支持,如:
错误都是语法问题,PHP的语法可以在网上找到,一般都是函数过时需要替换,参数为空.

PHP Deprecated:  Function get_magic_quotes_gpc() is deprecated in ** on line 208
Undefined variable: _SESSION
Trying to access array offset on value of type null

Q.E.D.


随意游世