如果碰到 Homestead 部署多站點在 /etc/nginx/sites-enabled 只自動生成一個 xxx.app 檔案,可以移步這裡看看

storefee發表於2017-08-02

前提:

已經部安裝好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 中檢視錯誤出在那裡,一般情況是路徑錯誤。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

努力是不會騙人的!

相關文章