如果碰到 Homestead 部署多站点在 /etc/nginx/sites-enabled 只自动生成一个 xxx.app 文件,可以移步这里看看
10

前提:

已经部安装好homestead,vagrant,配置好/etc/hosts

解决方法1:

正常部署好后,在本机中输入 homestead up provision进行启动,就重新部署一次新的环境(注意,之前虚拟机中的配置会被清除掉,比如修改了某配置文件)

解决方法2(碰到502错误):

  • homestead启动时,虚拟机中php的版本指向。可以打开vagrant@homestead:~/Codes/project1$ sudo vim /etc/nginx/sites-enabled/project1.app 修改php版本。

    NGINX: connect() to unix:/var/run/php7.0-fpm.sock failed (2: No such file or directory)

  • 如果发现curl_init 找不到的情况,说明php版本不正确。或者文件地址不对:
    【我本机正确地址】/var/run/php/php7.0-fpm.sock
  • 一般网上都是建议修改成:
    /var/run/php7.0-fpm.sock

    所以一定要根据自己实际情况来看

解决方法3:

serve domain.app /home/vagrant/Code/path/to/public/directory

解决方法4:

也许因为开启了vpn代理软件造成的问题,关闭试试看(单项目部署一般没有这个问题)

解决方法5:

碰到 Homestead 部署多站点在 /etc/nginx/sites-enabled 只自动生成一个 xxx.app 文件

server {
    listen 80;
    listen 443 ssl;
    server_name project1.app;
    root "/home/vagrant/Codes/project1/public";
    index index.html index.htm index.php;
    charset utf-8;
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }
    access_log off;
    error_log  /var/log/nginx/project1.app-error.log error;
    sendfile off;
    client_max_body_size 100m;
    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_intercept_errors off;
        fastcgi_buffer_size 16k;
        fastcgi_buffers 4 16k;
        fastcgi_connect_timeout 300;
        fastcgi_send_timeout 300;
        fastcgi_read_timeout 300;
    }
    location ~ /\.ht {
        deny all;
    }
    ssl_certificate     /etc/nginx/ssl/project1.app.crt;
    ssl_certificate_key /etc/nginx/ssl/project1.app.key;
}
  • 将这份文件内容复制为project2的

    sudo cp project1.app project2.app
    sudo vim project2.app

  • 这里我们需要修改:

    server_name project1.app;
    root "/home/vagrant/Codes/project1/public";
    error_log /var/log/nginx/project1.app-error.log error;

  • 为:

    server_name project2.app;【这一句没修改会导致2个app指向同一个url
    root "/home/vagrant/Codes/project2/public";
    error_log /var/log/nginx/project2.app-error.log error;

  • 但是这两句千万不要改,否则会一直报502错误的:

    ssl_certificate /etc/nginx/ssl/project1.app.crt;
    ssl_certificate_key /etc/nginx/ssl/project1.app.key;

  • 修改完配置文件后,

    sudo service nginx restart
    sudo service php7.1-fpm restart

如果出现No input file specified,去/var/log/ngnix/project_name_error.log 中查看错误出在那里,一般情况是路径错误。

努力是不会骗人的!

本帖由系统于 6个月前 自动加精
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 5

昨天遇到过多站点问题,纳闷为啥不是自动的,大佬的方法我还没试

1年前
Summer

这个很明显是 『Homestead 虚拟机盒子』与『Homestead 脚本』的版本不搭导致的。

当虚拟机盒子初始化时,流程大致如下:

  1. 第一次 vagrant up 时,或者执行 vagrant provision 时,虚拟机进入初始化状态;
  2. Vagrant 提供的钩子,触发 『Homestead 脚本』,具体为 homestead.rb
  3. Homestead 脚本读取 Homestead.yaml 文件,对 sites, folders, databases 进行重新初始化;
  4. 初始化 sites 时,会读取 Homestead 脚本仓库里带着的 Nginx 站点模板,具体为 serve-laravel.sh
  5. 完成初始化。

你看,问题出在『步骤4』这里,Laravel 的所有盒子在这里 https://app.vagrantup.com/laravel/boxes/homestead ,不同的盒子,里面安装的软件版本不一样,甚至连系统都不一样,如 v0.5.0 以下使用的是 Ubuntu14。

负责创建站点的脚本 —— serve-laravel.sh ,也有不同的版本 PHP 7PHP 5.6

解决方案:把盒子和管理脚本的版本对应上,虽然官方没有给出很明显的版本对应信息,不过可以从发布日期上入手,或者看执行脚本的代码。

1年前
阿文

@Summer :+1:

1年前

@Summer 请教一下Homestead中多个站点想为不同步站点Nginx 单独配置有什么方法可以实现呢通过修改 serve-laravel.sh 模板么且不想被provision 重置掉

10个月前

配置多站点之后,要先执行vagrant provision,再执行vagrant reload,才会生效。之前我没有执行vagrant provision,直接就执行vagrant reload,新配置的域名就不会生效

7个月前

  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 Emoji 自动补全来咯,可用的 Emoji 请见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!