整理了自己在佈署Laravel專案到Server時(Linux)所遇到的一些問題處理方式。
環境若沒特別說明就代表使用的OS為Ubuntu
Q1. 如何設定Laravel .env檔的APP_KEY?
Ans:在專案跟目錄執行 php artisan key:generate
Q2. 如何從Github上Clone私人專案到網站目錄
Ans:
1 | git clone https://[email protected]/username/repo |
其中username
為Github帳號名稱,repo
為專案名稱。
Q3. 在瀏覽器開啟網頁時出現以下錯誤訊息
Error in exception handler: The stream or file "/var/www/laravel/app/storage/logs/laravel.log" could not be opened: failed to open stream: Permission denie
Ans:( Apache )
目錄權限不足,在專案目錄執行 sudo chmod -R 777 storage
(注意,此方法較不安全)
安全的做法是把不同的權限分開,使用ACL(Access Control List)設定
1 | // nginx = web server user |
如果沒有ACL的設定方法
1 | sudo chgrp -R www-data storage bootstrap/cache |
Ans:( Nginx )
1 | sudo chown USERNAME:USERNAME /var/www/html/SITE_FOLDER |
Q4. 如何切換不同的PHP版本 ( Apache )
Ans: 安裝好需要的版本後執行以下指令 (範例為 7.0 => 7.2)
停用先前的PHP版本(重要)
1 | sudo a2dismod php7.0 |
啟動所需的PHP版本
1 | sudo a2enmod php7.2 |
重啟Apache2服務
1 | sudo service apache2 restart |
( Nginx )
設定預設PHP版本
1 | update-alternatives --set php /usr/bin/php7.0 |
Q5. 首頁能夠正常顯示,但切換不同的 Get 路徑顯示 404 Not Found (Ex: www.domainname.com/login)
Ans:( Apache )
啟動Rewrite模組
1 | sudo a2enmod rewrite |
重啟Apache2服務
1 | sudo service apache2 restart |
重啟後還是顯示404錯誤,使用文字編輯器開啟 000-default.conf
設定檔 (個人習慣使用vim)
1 | sudo vim /etc/apache2/sites-available/000-default.conf |
在 DocumentRoot /var/www/html
下方新增以下設定
1 | <Directory /var/www/html> |
儲存設定後,重啟Apache2服務,這時就能正常顯示 GET 路徑了
1 | sudo service apache2 restart |
Ans:( Nginx )
以文字編輯器下列設定檔 /etc/nginx/sites-enabled/default
新增下列設定
1 | server { |
重整Nginx服務
1 | sudo systemctl reload nginx |
Q6. Bitnami LAMP Stack 更換DocumentRoot目錄?
Ans:
更改以下檔案的DocumentRoot,80與443(有SSL的話)。
YOUR_INSTALLATION_DIRECTORY/apache2/conf/bitnami/bitnami.conf
重啓Apache
1 | sudo /opt/bitnami/ctlscript.sh restart apache |
Q7. 上傳檔案移動到只訂資料夾時出現權限不足
單純使用chmod無效(由於改變的權限爲user非操作移動的www-data),需要使用以下方法給予權限。
1 | sudo chown -R www-data:www-data /path/to/folder |
Q8. 利用 Laravel Installer 新增 Laravel 專案 [MacOS]
MacOS 環境變數設定:
1 | export PATH=~/.composer/vendor/bin:$PATH |
參考資料
Laravel framework file permission - Security
Laravel 5.4 problem - Wrong Route (Not Found) on Ubuntu 16.04
How To Deploy a Laravel Application with Nginx on Ubuntu 16.04
How to install PHP (7 or 7.2) on Ubuntu
Changes to Apache httpd.conf not applying on WAMP stack
Unable to write in directory Laravel
日後遇到其他問題會再持續更新
Comments