前提:
已經部安裝好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 協議》,轉載必須註明作者和本文連結