背景
笨熊人如其名,有些愚鈍。僅僅是將本地寫好的Laravel項目部署到服務器上,就花了整個端午假期。痛定思過后,笨熊決定開始記錄下自己曾經踩過的坑,一方面防止自己再次遇到相同的問題時手足無措,一方面希望能夠幫助和我一樣的小白們解決問題,如有錯誤,盡請指正。
環境簡介
操作系統:Linux Ubuntu 16.04
Web服務器:Apache / 2.4.18 (Ubuntu)
編譯引擎:PHP 7.0.18
數據庫:Mysql 5.7.18
數據庫管理工具:PhpMyAdmin
一、上傳方式
代碼的上傳可以分兩種方法:
1.使用FTP軟件或SFTP軟件
優點:便捷,界面友好,可視化
缺點:上傳速度受服務器帶寬限制,大文件上傳耗時長
這里我使用的軟件是WinSCP以及PhpStorm,服務器是騰訊云1元學生機,配置為1核 1GB 1Mbps,上傳27M的項目代碼耗時約為一個半小時。
2.使用Git
優點:快速,方便修改
缺點:對新手而言操作繁瑣,界面不友好
本篇文章我著重講解方法二:使用Git
二、項目搬家
這里我們使用Github作為代碼托管平臺。
1.在github上創建項目
2.本地上傳項目至Github
Git下載地址:git-scm.com/downloads
(1)下載并安裝完成后,在【開始】菜單,打開Git Bash。
(2)配置用戶名和郵件地址
我們需要設置一個用戶名和郵箱,當本地倉庫至Github時后,在Github會顯示上傳者。
在Git Bash中輸入以下命令。假設用戶名是ClumsyBear,郵箱是clumsybear@gmail.com
git config --global user.name "Clumsybear"
git config --global user.email "clumsybear@gamil.com"
(3)生成SSH密匙
在Git Bash中輸入以下命令。
ssh-keygen -t rsa -C "user@email.com"
注意:這里的user@email.com請使用注冊Github時所使用的郵箱。
不建議新手設置密碼,三個連續回車后,會在~/.ssh下生成兩個文件:私鑰id_rsa和公鑰id_rsa.pub。
(4)添加SSH公鑰
第一步:
第二步:
第三步:
請不要使用Windows自帶的記事本,最好使用開源軟件Notepad++打開id_rsa.pub
(5)測試公鑰是否添加成功
在Git Bash中輸入以下命令:
ssh -T git@github.com
如果是第一次連接,會提示是否continue,輸入yes。出現You've successfully authenticated, but GitHub does not provide shell access,則表示已成功連接Github。
(6)生成遷移文件(若已生成過可忽略此步驟)
在本地終端中進入項目文件,輸入以下命令
php artisan make:migration create_users_table
其中users改為自己的用戶名,table改為表名,生成文件會儲存在database\migrations\中。
(7)建立倉庫,上傳項目
在Git Bash中進入項目根目錄,輸入以下命令:
git init
出現Initialized empty Git repository in C:/project/.git/,則表示成功建立倉庫。
git add .
注意不要忽略后面的 . ,此操作是把項目文件夾下面的所有文件添加到倉庫。
git commit -m "備注信息"
此操作是把添加的文件提交到倉庫。
git remote add origin git@github.com:yourName/yourProject.git
此操作是添加遠程地址,地址獲取方式如下圖所示:
git push -u origin master
此操作是把本地倉庫push到Github上。
【注意】如果出現以下錯誤:
只需要執行下列代碼后再次push即可:
git pull --rebase origin master
3.下載項目至服務器(需配置LAMP環境)
(1)下載Git至服務器(服務器預裝Git的可以忽略這一步)
命令行如下:git-scm.com/download/linux
(2)下載項目
執行以下命令:
cd /var/www/html
sudo chmod 777 /var/www/html
git clone https://github.com/yourName/yourProjects
地址獲取方式如下:
執行后/var/www/html目錄下會出現一個與Github項目相同名字的文件夾,這就是我們的項目文件了。
(3)下載安裝composer
Laravel使用Composer管理依賴,所以我們需要執行以下命令下載并安裝Composer:
cd usr/local/bin
sudo curl -s https://getcomposer.org/installer | sudo php
sudo chmod a+x composer.phar
mv composer.phar /usr/local/bin/composer
sudo composer.phar self-update
composer --version
(4)安裝項目
執行以下代碼:
composer install
三、配置Laravel
1. 設置storage文件夾權限:
chmod -R 777 storage
chmod -R 777 bootstrap/cache
2. 生成.env文件
mv .env.example .env
3. 應用Key:
php artisan key:generate
4. 配置.env文件:
sudo vim .env
配置項目如下:
需要修改的項目有:
APP_DEBUG=false
DB_HOST=localhost
DB_DATABASE=yourDatabase
DB_USERNAME=yourUsername
DB_PASSWORD=yourPassword
REDIS_HOST=localhost
5. 重啟服務器:
service apache2 restart
6. 瀏覽器訪問
Ubuntu地址/項目名/public/
即可見項目主頁。
7. Apache2 路由配置
此時你可能遇到一個問題,那就是只有項目主頁可見,而訪問其他頁面時會報404錯誤,這是因為laravel的入口文件在public文件夾下,這時我們需要配置Apache2路由:
(1)開啟rewrite模板
sudo a2enmod rewrite
(2)修改修改/etc/apache2/sites-available/000-default.conf
sudo vim /etc/apache2/sites-available/000-default.conf
在下方添加:
<Directory "/var/www/html">
Allowoverride All
</Directory>
【注意】DocumentRoot是根目錄,我們可以把他修改成項目文件夾下public文件夾,這樣服務器的默認主頁就變成了項目的默認主頁,但是<Directory "/var/www/html">中的目錄一定要和DocumentRoot保持一致。
(3)重啟Apache2
service apache2 restart
這樣,我們的laravel項目就成功部署到服務器上了!