前言
一哥们在华为云买了域名和服务器,但是不怎么用,之前是用 WordPress 的一为导航(onenav)模板做的站点,但因工作原因精力有限,就放弃做了,随后他就把系统重装为 Windows Server 系统 ,搁那丢了好久。刚好今天我有点无聊,就想起给他弄个轻量级的博客,起初是想直接弄个静态博客,hexo、hogo 之类的,然后直接丢到赛博菩萨(cloudflare)那里的,但是这样就不方便在移动设备上发布内容,遂直接用 typecho 博客程序了,也无需安装数据库文件占用存储,直接用 sqlite 也可以满足需求了。WEB 运行环境直接选择 Caddy 主要是它也比较轻量,配置文件比较简单,最重要的一点是 Caddy 可以自动站点提供HTTPS证书并保持更新,无需额外的去配置。
环境要求及所需程序
- Windows 系统下均可
- Scoop 下载对应的软件
- Caddy v2
- PHP7.4
- WinSW
- Typecho 博客程序
说明
Caddy 及PHP7.4 均通过scoop下载,Scoop安装教程见如下:
WinSw下载地址:https://github.com/winsw/winsw/releases/tag/v2.12.0
Typecho博客程序下载地址:https://github.com/typecho/typecho/releases/tag/v1.2.1
运行环境搭建
Scoop安装好之后开始安装Caddy和PHP,通过以下命令安装Caddy:
# 添加仓库
scoop bucket add main
# 安装
scoop install main/caddy
安装 PHP7.4 :
# 添加仓库
scoop bucket add versions
# 安装
scoop install versions/php74
修改PHP配置文件
找到scoop 安装软件仓库,默认安装位置为 C:\Users\[user]\scoop\apps
下,依次进入 php74\7.4.33
目录下,可以看到如下图中两个文件,将其中的 php.ini-production 复制改名为 php.ini
由于当前php环境未开启任何扩展,而安装typecho需要至少安装 mysqli, sqlite3, pgsql, pdo_mysql, pdo_sqlite, pdo_pgsql
中的一个以及 mbstring
扩展,由于选用的数据库为sqlite,所有只需开启 sqlite和mbstring
两个扩展即可 。
打开php.ini 编辑并修改:
以下扩展开启方法 ,把原配置中以上字段前注释 ;
去掉即可
- 开启sqlite扩展
extension_dir = "ext" extension=php_pdo_sqlite.dll extension=php_sqlite3.dll sqlite3.extension_dir = "ext"
- 开启mbstring扩展
mbstring.language = Chinese mbstring.internal_encoding = UTF-8 mbstring.encoding_translation = On mbstring.http_input = UTF-8 mbstring.http_output = UTF-8 mbstring.detect_order = UTF-8 mbstring.substitute_character = none
将Caddy和PHP注册为系统服务
注册为系统服务可使应用程序随系统启动。
新建一个文件夹目录,将下载winsw到该目录下,将下载的文件改名为 caddy_service.exe ,在复制一份改名为 php_service.exe 。
新建一个无后缀名的 Caddyfile
文件,内容先留空,后面再来写。随后新建一个 caddy_service.xml 文件,文件内容如下:
<service>
<id>caddy</id>
<!-- 服务的显示名称 -->
<name>Caddy Web Server (powered by WinSW)</name>
<!-- 服务描述 -->
<description>Caddy Web Server (https://caddyserver.com/)</description>
<!-- 以下的内容改为caddy.exe可执行程序所在的路径 -->
<executable>%BASE%\caddy.exe</executable>
<!-- 以下config后面改为Caddyfile文件所在的路径 -->
<arguments>run --config </arguments>
<log mode="roll-by-time">
<pattern>yyyy-MM-dd</pattern>
</log>
</service>
<service> <id>caddy</id> <!-- 服务的显示名称 --> <name>Caddy Web Server (powered by WinSW)</name> <!-- 服务描述 --> <description>Caddy Web Server (https://caddyserver.com/)</description> <executable>C:\Applications\Scoop\apps\caddy\2.8.4</executable> <arguments>run --config C:\caddy\server\caddyfile</arguments> <log mode="roll-by-time"> <pattern>yyyy-MM-dd</pattern> </log> </service>
在新建一个 php_service.xml 文件,内容如下:
<service>
<id>PHP</id>
<!-- 服务的显示名称 -->
<name>php Server (powered by WinSW)</name>
<!-- 服务描述 -->
<description>php fastcgi service</description>
<!-- 以下的内容改为php-cgi.exe可执行程序所在的路径 -->
<executable>%BASE%\php-cgi.exe</executable>
<arguments>-b 9000</arguments>
<log mode="roll-by-time">
<pattern>yyyy-MM-dd</pattern>
</log>
</service>
在当前目录下打开命令行窗口,依次执行如下命令:
caddy_service.exe install
php_service.exe install
此时在系统服务里就可以看到对应的服务。
部署博客及配置Caddyfile文件
新建一个文件目录,把typecho文件全面解压到该目录下。
完成后打开之前创建的Caddyfile文件,复制以下内容,并修改想对应的路径:
# yourdomain.com改为你的域名
yourdomain.com {
root * C:\Users\Administrator\Desktop\Blog
# 以上改为你放置typecho文件的目录地址
php_fastcgi * 127.0.0.1:9000
encode zstd gzip
file_server
}
最后在系统服务中启动或者重启 caddy 和php 服务即可。
服务启动后便可通过域名访问到typecho的安装页面。
caddy 性能调优,配置优化这里不讲了,请参考官方文档。
遇到的一个坑
在安装完php后可在命令行执行一下 php -m
命令,如果提示
PHP Warning: 'vcruntime140.dll' 14.0 is not compatible with this PHP build linked with 14.16 in Unknown on line 0
这是因为PHP 7.4.x需要用于Visual Studio 2019的Microsoft Visual C ++ Redistributable,如遇到到https://visualstudio.microsoft.com/zh-hans/downloads/下载安装即可解决。
相关链接
本文作者为Mr.Bai,转载请注明。