51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Windows 手动搭建 Caddy + PHP + MySQL 的 PHP 开发环境

我这篇文章配置的是 Windows 的 PHP 开发环境,如果要看 Linux 服务器环境可以访问 Linux 安装和配置 Caddy + PHP + MySQL

我之前的 PHP 开发环境使用的是 Apache + MySQL + PHP 的集成工具,比较常见的 XAMPP、phpStudy 我都用过。PHP 集成工具对于刚学 PHP 的新手来说确实比较方便,不用写配置文件,安装完成就能自动配置一个 PHP 网站环境。

最近电脑重装了系统,我准备把本地的 PHP 开发环境的 Web 服务器换成 Caddy,MySQL 和 PHP 也准备手动安装配置。

我这里使用的 PHP 环境都是免安装的,PHP 下载解压后就能用,Caddy 是一个 exe 单文件,可以直接运行,MySQL 官方提供了安装包和免安装版,我这里会选择免安装版手动初始化。

Windows 没有完善的包管理器,寻找和下载可能会比 Linux 要麻烦一些,如果你只想快速搭建一个 PHP 开发环境,或者你是刚学 PHP 的新手的话,建议使用 phpStudy 之类的集成环境。

注意,我这里配置的环境主要用来本地开发,不适合用于线上的服务器环境!

一些可选的软件推荐 {#%E4%B8%80%E4%BA%9B%E5%8F%AF%E9%80%89%E7%9A%84%E8%BD%AF%E4%BB%B6%E6%8E%A8%E8%8D%907905}

Terminal新版命令行终端

这是微软的新版命令行终端,支持一个窗口多个标签页的方式来管理多个终端,后面的 MySQL、Caddy、PHP 可能需要开多个终端,用这个新版终端方便管理。

Visual Studio Code

微软的代码编辑器,也是现在最流行的代码编辑器之一。各种语言的项目开发或用来编辑配置文件之类的都可以。

下载和配置 PHP {#%E4%B8%8B%E8%BD%BD%E5%92%8C%E9%85%8D%E7%BD%AE+PHP9820}

访问 https://windows.php.net/downloads/releases/archives/ ,这是 PHP 官方的 Windows 版 PHP 存档,这里提供了从 5.2 到最新版本的 PHP 下载,你可以选择需要的版本下载,你也可以同时下载多个版本。

如果你用的是 Apache 可以选择 Win32-vc15-x64.zip 的链接,如果是其它服务器的话可以选择 nts-Win32-vc15-x64.zip 的链接,我用的 Caddy 选择的是 nts-Win32-vc15-x64.zip 的链接。

你可以创建一个目录来存放 PHP,我下面的 PHP 会放到 D:\www\bin\php

把下载的 PHP 压缩包移动到存放位置解压,解压完成后应该能看到 php.exephp.ini-developmentphp.ini-production 这些文件,把 php.ini-development 重命名为 php.ini

打开 php.ini,默认的 PHP 配置可能会有一些扩展功能没有启用,你可以查找下面列表中的配置项,如果前面有 ; 就去除 ;,配置完成后保存。

  • extension=mysqli
  • extension=pdo_mysql
  • extension=pdo_pgsql
  • extension=pdo_sqlite
  • extension=pgsql
  • extension=openssl
  • extension=curl
  • extension=sqlite3

上面都是一些常用功能和数据库扩展。

为了方便在命令行操作 PHP,可以配置一下环境变量,Windows 配置 PHP 环境变量可以参考 Win10 配置 MySQL 和 PHP 的环境变量

下载 MySQL {#%E4%B8%8B%E8%BD%BD+MySQL6010}

访问 https://downloads.mysql.com/archives/community/ ,Product Version(MySQL)版本可以选择你需要的版本,我这里选择的是 8.0,Operating System(操作系统)选择 Microsoft Windows。

选择完成后可能会有几个文件可以选择:

  • MSI Installer(Windows 安装程序)
  • ZIP Archive(ZIP免安装版)
  • ZIP Archive, Debug Binaries & Test Suite(用于 MySQL 相关的开发)

为了避免安装程序在我电脑里生成我不需要的组件和文件,我这里会选择 ZIP 免安装版。

下载的 ZIP 压缩包解压后可能还会有一个带版本号的 mysql 目录,MySQL 相关的程序和库就在 mysql 目录里。

继续配置 MySQL 的环境变量,参考 Win10 配置 MySQL 和 PHP 的环境变量

MySQL 初始化 {#MySQL+%E5%88%9D%E5%A7%8B%E5%8C%969043}

这里的初始化是用于 ZIP 免安装版的,安装程序在安装的时候就已经初始化了。

在你的 MySQL 目录创建一个 my.ini 文件,可以拷贝下面的内容到你的 my.ini 文件中,部分需要修改为你自己的设置:

[client]
# MySQL 客户端字符编码
default-character-set=utf8mb4

[mysqld]
# MySQL 端口,这里使用 3306
port = 3306
# MySQL 的文件目录
basedir=D:\\www\\bin\\mysql-8.0.21-winx64
# MySQL 数据库文件的存放目录
datadir=D:\\www\\bin\\mysql-8.0.21-winx64\\data
# 最大连接数
max_connections=20
# MySQL 服务端字符编码
character-set-server=utf8mb4
# 存储引擎
default-storage-engine=INNODB

我的 MySQL 目录是 D:\www\bin\mysql-8.0.21-winx64,MySQL 数据库文件存放目录是 D:\www\bin\mysql-8.0.21-winx64\data,路径分隔符我这里使用了两个反斜杠 \\,如果使用一个 \ 的话,会被识别为转义符号。

配置文件保存后你还需要手动创建 MySQL 数据库文件的存放目录,我上面配置的是 D:\www\bin\mysql-8.0.21-winx64\data,我需要在 D:\www\bin\mysql-8.0.21-winx64 创建一个 data 目录。

打开命令行,输入:

mysqld --initialize --user=root --console

成功初始化应该会输出类似下面的提示:

2024-08-06T15:42:17.347652Z 0 [System] [MY-013169] [Server] D:\www\bin\mysql-8.0.21-winx64\bin\mysqld.exe (mysqld 8.0.21) initializing of server in progress as process 15260
2024-08-06T15:42:17.360276Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2024-08-06T15:42:26.711751Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2024-08-06T15:42:39.866313Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: 0w#PMOd&;B7t

同时也会自动为 root 用户生成一个密码,我上面的 root 密码就是 0w#PMOd&;B7t

启动 MySQL:

mysqld --console

成功启动应该会输出类似下面的日志信息:

2024-08-06T15:47:01.461882Z 0 [System] [MY-010116] [Server] D:\www\bin\mysql-8.0.21-winx64\bin\mysqld.exe (mysqld 8.0.21) starting as process 4292
2024-08-06T15:47:01.771951Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2024-08-06T15:47:03.970285Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2024-08-06T15:47:04.896276Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060
2024-08-06T15:47:06.348869Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2024-08-06T15:47:06.349340Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.
2024-08-06T15:47:06.455195Z 0 [System] [MY-010931] [Server] D:\www\bin\mysql-8.0.21-winx64\bin\mysqld.exe: ready for connections. Version: '8.0.21'  socket: ''  port: 3306  MySQL Community Server - GPL.

这时候命令行应该无法输入,你需要再开一个命令行终端,不要关闭之前的命令行终端。

下面连接到数据库,输入:

mysql -uroot -p

如果显示 password 就输入初始化时生成的密码,连接成功后会显示一段欢迎信息。

下面修改默认的 root 密码,输入:

ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';

比如我要把密码修改为 misterma.com

ALTER USER 'root'@'localhost' IDENTIFIED BY 'misterma.com';

修改完成后输入:

EXIT;

退出 MySQL。

你可以再输入:

mysql -uroot -p

使用新密码尝试连接数据库。

下载和配置 Caddy {#%E4%B8%8B%E8%BD%BD%E5%92%8C%E9%85%8D%E7%BD%AE+Caddy4849}

访问 https://caddyserver.com/download ,Platform(平台)选择 Windows amd64,直接点击 Download 下载。

下载完成后是一个 .exe 的单文件,你可以把文件名称改为 caddy.exe,你可以把这个 caddy.exe 放到一个单独的目录中,在存放 caddy.exe 的目录中创建一个 Caddyfile 文件作为 Caddy 的配置文件。

下面在 Caddyfile 中配置一个 PHP 站点:

http://:80 {
    # 网站目录
    root * D:\www\site
    # 启用静态文件服务和文件目录显示
    file_server browse
    # 配置 caddy 和 php-cgi 的通信
    php_fastcgi 127.0.0.1:9000
}

在你存放 caddy.exe 的目录中打开一个命令行终端,如果你用的是我上面推荐的新版命令行终端的话,直接在资源管理器鼠标右击,选择 在终端中打开,就可以在当前的路径下打开一个命令行终端。

如果你要用自带命令行终端的话,也可以打开 Powershell,通过 cd 跳转到指定路径,比如我的 caddy.exe 和配置文件放到了 D:\www\bin\caddy 目录,我就可以直接输入:

cd D:\www\bin\caddy

跳转到存放 caddy 的目录。

进入存放 caddy.exe 和配置文件的目录后输入:

./caddy run

启动 Caddy,成功启动后应该会输出一些日志信息。

Caddy 启动成功后你的命令行应该无法输入,你需要再开一个命令行,输入:

php-cgi -b 127.0.0.1:9000

启动 php-cgi,启动成功后不会输出任何信息,你也不能关闭命令行窗口。

测试 {#%E6%B5%8B%E8%AF%952725}

进入你的 PHP 网站目录,我上面 Caddyfile 配置的是 D:\www\site,在网站目录创建一个 index.php,加入:

<?php

phpinfo();

index.php 文件保存后打开浏览器,在地址栏输入 localhost,如果你配置的不是 80 端口的话,需要加端口号,比如 localhost:8080

如果 Caddyfile 配置没有错误,并且成功启动了 Caddy 和 php-cgi 的话,你应该能看到一个 PHP 的信息页面,这个页面会显示 PHP 版本和扩展功能之类的信息。

phpinfo页面截图

如果要测试数据库连接的话,你也可以下载一个 phpMyAdmin,这是一个使用 PHP 编写的 MySQL 管理工具,也是使用量最多的 MySQL 管理工具之一。

访问 https://www.phpmyadmin.net/,直接点击Download 下载,下载完成后应该是一个 ZIP 的压缩包,把这个压缩包放到你的 PHP 网站目录解压。打开浏览器,在地址栏输入 localhost,就像访问本地 PHP 网站一样的使用 phpMyAdmin。

常用命令 {#%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A43848}

在配置了环境变量后,可以在任何位置使用命令。

启动 MySQL:

mysqld --console

启动后命令行终端无法输入,关闭终端就会关闭 MySQL。

启动 PHP-cgi:

php-cgi -b 127.0.0.1:9000

启动后命令行终端无法输入,关闭终端就会关闭 PHP-cgi。

Caddy 也可以配置环境变量,只需要把存放 caddy.exe 的目录路径添加到环境变量,你就可以在任何位置使用 caddy 命令。我下面会使用 caddy 命令来操作 Caddy。

使用当前目录下的 Caddyfile 文件启动 Caddy:

caddy run

启动前需要先进入存放 Caddyfile 的目录,启动后命令行终端无法输入,关闭终端也会关闭 Caddy。

如果你要在其它目录运行 caddy run,你需要使用 --config 参数来指定 Caddyfile 的位置,比如我的 Caddyfile 在 D:\www\bin\caddy\Caddyfile,我可以使用:

caddy run --config D:\www\bin\caddy\Caddyfile

启动 Caddy。

Caddy 可以在后台启动,启动后命令行终端可以继续输入和使用,使用当前目录下的 Caddyfile 在后台启动 Caddy:

caddy start

如果要在其它目录使用 caddy start 还是一样的使用 --config 参数来指定 Caddyfile:

caddy start --config D:\www\bin\caddy\Caddyfile

关闭命令行终端也会关闭 Caddy。

如果你要手动关闭后台启动的 Caddy 可以使用:

caddy stop

如果你感觉输入命令比较麻烦的话,也可以编写一个 Powershell 脚本。

创建一个 .ps1 后缀的文件,比如 start.ps1,编写脚本内容:

# 启动 MySQL
Start-Process -NoNewWindow -FilePath "mysqld" -ArgumentList "--console"

# 启动 PHP-CGI
Start-Process -NoNewWindow -FilePath "php-cgi" -ArgumentList "-b 127.0.0.1:9000"

# 启动 Caddy
Start-Process -NoNewWindow -FilePath "caddy" -ArgumentList "run --config D:\www\bin\caddy\Caddyfile"

上面的 Caddyfile 需要改成你的 Caddyfile 路径,文件保存后 右击 ,选择 使用 Powershell 运行,上面的命令会在一个 Powershell 窗口中运行,关闭 Powershell 也会关闭启动的 PHP-cgi、MySQL、Caddy。

赞(1)
未经允许不得转载:工具盒子 » Windows 手动搭建 Caddy + PHP + MySQL 的 PHP 开发环境