Windows Server 下通过Caddy、PHP安装Typecho博客程序

Mr.Bai 30 浏览 0

前言

一哥们在华为云买了域名和服务器,但是不怎么用,之前是用 WordPress 的一为导航(onenav)模板做的站点,但因工作原因精力有限,就放弃做了,随后他就把系统重装为 Windows Server 系统 ,搁那丢了好久。刚好今天我有点无聊,就想起给他弄个轻量级的博客,起初是想直接弄个静态博客,hexo、hogo 之类的,然后直接丢到赛博菩萨(cloudflare)那里的,但是这样就不方便在移动设备上发布内容,遂直接用 typecho 博客程序了,也无需安装数据库文件占用存储,直接用 sqlite 也可以满足需求了。WEB 运行环境直接选择 Caddy 主要是它也比较轻量,配置文件比较简单,最重要的一点是 Caddy 可以自动站点提供HTTPS证书并保持更新,无需额外的去配置。

环境要求及所需程序

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
Windows Server 下通过Caddy、PHP安装Typecho博客程序

由于当前php环境未开启任何扩展,而安装typecho需要至少安装 mysqli, sqlite3, pgsql, pdo_mysql, pdo_sqlite, pdo_pgsql 中的一个以及 mbstring 扩展,由于选用的数据库为sqlite,所有只需开启 sqlite和mbstring 两个扩展即可 。
Windows Server 下通过Caddy、PHP安装Typecho博客程序

打开php.ini 编辑并修改:
以下扩展开启方法 ,把原配置中以上字段前注释 ; 去掉即可

  1. 开启sqlite扩展
    extension_dir = "ext"
    extension=php_pdo_sqlite.dll
    extension=php_sqlite3.dll
    sqlite3.extension_dir = "ext"
  2. 开启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>
我的caddy_service.xml文件,供参考

在新建一个 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>

当前目录下便有了5个文件:
Windows Server 下通过Caddy、PHP安装Typecho博客程序

在当前目录下打开命令行窗口,依次执行如下命令:

caddy_service.exe install
php_service.exe install

提示 successfully 表示已经成功。
Windows Server 下通过Caddy、PHP安装Typecho博客程序

此时在系统服务里就可以看到对应的服务。

部署博客及配置Caddyfile文件

新建一个文件目录,把typecho文件全面解压到该目录下。
Windows Server 下通过Caddy、PHP安装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 服务即可。
Windows Server 下通过Caddy、PHP安装Typecho博客程序
服务启动后便可通过域名访问到typecho的安装页面。
Windows 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/下载安装即可解决。

相关链接

发表评论 取消回复
表情 图片 链接 代码

分享
请选择语言