作为一名长期在MacOS环境下工作的全栈开发者,我深知搭建本地开发环境的痛点。每次换新机器或者重装系统后,手动配置Nginx和PHP环境需要花费大量时间,而且容易出错。特别是在团队协作时,确保所有开发者的本地环境一致更是挑战。
这个脚本的价值在于:
在运行脚本前,请确保你的Mac满足以下条件:
提示:如果你尚未安装Homebrew,可以在终端执行以下命令安装:
bash复制/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
让我们拆解这个脚本的主要组成部分:
软件包管理部分:
服务管理部分:
权限配置部分:
Nginx配置部分:
测试页面部分:
服务重启与状态显示:
脚本中的Nginx配置已经做了基础优化,但我们可以进一步理解每个参数的意义:
nginx复制worker_processes auto; # 自动根据CPU核心数设置工作进程
events {
worker_connections 1024; # 每个工作进程的最大连接数
}
http {
sendfile on; # 启用高效文件传输模式
keepalive_timeout 65; # 保持连接的超时时间
# PHP处理配置
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
}
}
对于开发环境,我建议增加以下配置:
nginx复制# 在http块中添加
client_max_body_size 20m; # 允许上传大文件
fastcgi_read_timeout 300; # PHP脚本执行超时时间
虽然脚本没有直接修改PHP-FPM配置,但了解其关键参数很重要:
ini复制; /usr/local/etc/php/8.5/php-fpm.d/www.conf
pm = dynamic ; 进程管理方式
pm.max_children = 10 ; 最大子进程数
pm.start_servers = 2 ; 启动时的进程数
pm.min_spare_servers = 1 ; 最小空闲进程数
pm.max_spare_servers = 3 ; 最大空闲进程数
对于开发环境,可以适当降低这些值以节省资源:
ini复制pm.max_children = 5
pm.start_servers = 1
pm.min_spare_servers = 1
pm.max_spare_servers = 2
如果遇到端口80被占用的情况,可以通过以下命令查找并解决:
bash复制# 查找占用80端口的进程
sudo lsof -i :80
# 如果必须使用80端口,可以停止占用进程
sudo kill -9 <PID>
或者修改Nginx配置使用其他端口:
nginx复制server {
listen 8080; # 改为8080端口
# 其他配置保持不变
}
MacOS的权限系统较为严格,如果遇到权限问题,可以尝试:
bash复制# 重置网站目录权限
sudo chown -R $(whoami):staff /usr/local/var/www
sudo chmod -R 755 /usr/local/var/www
# 重置Nginx运行目录权限
sudo chown -R $(whoami):staff /usr/local/var/run/nginx
如果需要使用其他PHP版本,可以修改脚本中的安装命令:
bash复制# 例如安装PHP7.4
brew install php@7.4
然后相应地调整服务启动命令:
bash复制sudo brew services start php@7.4
如果需要完整的LEMP环境,可以在脚本中添加数据库安装:
bash复制# 安装MariaDB
brew install mariadb
# 启动服务
sudo brew services start mariadb
# 安全初始化
mysql_secure_installation
对于需要多个开发项目的情况,可以扩展Nginx配置:
nginx复制# 在http块中添加
server {
listen 80;
server_name project1.test;
root /usr/local/var/www/project1;
# 其他配置相同
}
server {
listen 80;
server_name project2.test;
root /usr/local/var/www/project2;
# 其他配置相同
}
然后在/etc/hosts中添加:
code复制127.0.0.1 project1.test
127.0.0.1 project2.test
为开发环境添加本地HTTPS支持:
bash复制# 安装mkcert工具
brew install mkcert
# 创建本地CA
mkcert -install
# 为项目生成证书
mkcert project1.test
然后在Nginx配置中添加:
nginx复制server {
listen 443 ssl;
server_name project1.test;
ssl_certificate /path/to/project1.test.pem;
ssl_certificate_key /path/to/project1.test-key.pem;
# 其他配置
}
bash复制# 启动/停止/重启服务
sudo brew services start nginx
sudo brew services stop php@8.5
sudo brew services restart nginx
# 查看服务状态
brew services list
# 查看Nginx错误日志
tail -f /usr/local/var/log/nginx/error.log
bash复制# 查看Nginx工作进程
ps aux | grep nginx
# 查看PHP-FPM进程
ps aux | grep php-fpm
# 实时监控资源使用情况
htop
推荐安装以下工具提高开发效率:
bash复制# 安装Composer
brew install composer
# 安装Node.js
brew install node
# 安装Redis
brew install redis
保持环境更新很重要:
bash复制# 更新Homebrew和所有安装的软件
brew update && brew upgrade && brew cleanup
建议定期备份重要配置文件:
bash复制# 备份Nginx配置
cp /usr/local/etc/nginx/nginx.conf ~/backup/nginx.conf.bak
# 备份PHP配置
cp /usr/local/etc/php/8.5/php.ini ~/backup/php.ini.bak
遇到问题时可以按照以下步骤排查:
brew services listtail -f /usr/local/var/log/nginx/error.logcurl 127.0.0.1:9000netstat -an | grep LISTENsudo nginx -t虽然只是本地环境,但仍需注意:
正确的权限设置:
bash复制# 网站目录权限
find /usr/local/var/www -type d -exec chmod 755 {} \;
find /usr/local/var/www -type f -exec chmod 644 {} \;
# 敏感文件保护
chmod 600 /usr/local/etc/nginx/ssl/*.key
启用macOS防火墙:
bash复制# 启用防火墙
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate on
# 添加Nginx例外
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /usr/local/bin/nginx
经过多年的实践,我发现这个一键配置脚本确实能大幅提升开发环境搭建效率。特别是在团队协作时,确保所有成员使用相同的环境配置可以避免很多"在我机器上能运行"的问题。建议将脚本纳入版本控制系统,随着项目需求变化不断更新完善。