我是可以ping的通 homestead.test, 但是打开网页显示拒绝服务
最终发现是因为 vagrant 上的homestead 虚拟机上的nginx没有挂载到80端口上
可以 vagrant ssh 进入终端,输入 lsof -i:80 命令查看有没有输出
如果没有, 就要查看nginx的软连接是否有内容
一、确认 Homestead 虚拟主机配置文件是否存在
ls -la /etc/nginx/sites-available/
正常情况下,Homestead 应自动生成homestead配置文件。若不存在,需手动创建。
二、手动创建 Homestead 虚拟主机配置
1. 创建配置文件
sudo vi /etc/nginx/sites-available/homestead
粘贴以下内容(根据实际项目路径修改root字段):
server {
listen 80;
server_name homestead.test;
root /home/vagrant/code/your-project/public; # 替换为实际项目public目录
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; # 替换为实际PHP版本
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
2. 创建软链接到 sites-enabled
sudo ln -s /etc/nginx/sites-available/homestead /etc/nginx/sites-enabled/
三、验证配置并重启 Nginx
1. 检查配置语法
sudo nginx -t
若提示test is successful,说明配置正确。
2. 重启 Nginx 服务
sudo systemctl restart nginx
四、查看80端口
lsof -i:80 我在这步就解决问题了
五、访问 homestead.test 就ok了
但是可能会报错502,是因为php没启动
查看 PHP-FPM 运行状态
sudo systemctl status php7.4-fpm # 替换为实际PHP版本
sudo systemctl start php7.4-fpm
然后就部署laravel项目,但是发现Laravel 9 要php > 8.2.0 于是要更新php
一、 添加 PHP 8.2 源并安装
# 安装必要工具
sudo apt-get update
sudo apt-get install software-properties-common
# 添加PHP 8.2源
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
# 安装PHP 8.2及其扩展
sudo apt-get install php8.2 php8.2-fpm php8.2-mysql php8.2-mbstring php8.2-xml php8.2-curl php8.2-zip
二、切换默认 PHP 版本
# 设置PHP 8.2为默认版本
sudo update-alternatives --set php /usr/bin/php8.2
# 验证PHP版本
php -v # 应显示PHP 8.2.x
三、更新 Nginx 配置以使用 PHP 8.2-FPM
sudo vi /etc/nginx/sites-available/homestead
将fastcgi_pass修改为 PHP 8.2 的套接字路径:
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
四、重启服务
sudo systemctl restart php8.2-fpm nginx