手頭有一臺買來搭梯子的搬瓦工雲伺服器,系統是Centos 7,正好拿來練習下部署Laravel專案。這裡使用XShell連結到雲主機,並且所有操作都在root賬號下操作,非root賬號時終端命令前面需新增
sudo
。
LNMP 環境搭建
參考本論壇大牛的這篇:Laravel 之道特別篇一: yum 安裝 LNMP 環境 。
我的雲主機已經是Centos 7,所以不用安裝Centos 7 的步驟。期間可能會遇到nginx配置好了,訪問主機IP卻沒有效果的問題,這時候可以嘗試重啟nginx:systemctl restart nginx
。
安裝和配置git
-
開啟 Wandisco GIT 源,這樣能保證下載到較新版本的git。開啟方法:
- 雲主機終端輸入以下程式碼:
vi /etc/yum.repos.d/wandisco-git.repo
這樣就在
/etc/yum.repos.d/
目錄新建了一個 yum 原始檔wandisco-git.repo
。
按鍵盤上的i
或o
進入編輯模式,複製貼上以下程式碼:[wandisco-git] name=Wandisco GIT Repository baseurl=http://opensource.wandisco.com/centos/7/git/$basearch/ enabled=1 gpgcheck=1 gpgkey=http://opensource.wandisco.com/RPM-GPG-KEY-WANdisco
按
esc
鍵退出編輯模式,輸入:wq
儲存並退出 vi/vim 編輯器。 - 匯入GPG keys
rpm --import http://opensource.wandisco.com/RPM-GPG-KEY-WANdisco
- 安裝git
yum install git
- 檢視版本號
git --version
我這裡安裝的版本是2.18.0 。
- 雲主機終端輸入以下程式碼:
- 配置git
執行以下命令:git config --global user.name "Your Name" git config --global user.email "youremail@yourdomain.com"
使用者名稱和郵箱改為你自己的。
- 生成金鑰對
金鑰對生成後,將公鑰 id_rsa.pub
的內容拷貝新增到你的github上,新增地址: https://github.com/settings/keys 。
安裝Composer
Composer 依賴 php-cli,該應用已經在搭建LNMP環境的時候安裝了,這裡不需要再次安裝。Composer 安裝步驟依次如下:
yum -y update
cd /tmp
curl -sS https://getcomposer.org/installer | php
讓composer全域性可用:
mv composer.phar /usr/local/bin/composer
安裝redis
依次執行以下命令:
yum install epel-release
yum install redis -y
systemctl start redis.service
systemctl enable redis
檢查執行狀態:
systemctl status redis.service
如看到Active: active (running) ...
則表示redis已在執行中。
測試redis:
redis-cli ping
如輸出PONG
,則表示redis已經可以連通。
Laravel專案安裝
拉取github上的Laravel專案程式碼
cd /www/wwwroot
git clone git@github.com:Your-User-Name/larabbs.git larabbs
將clone後面的地址替換成你自己的github上的專案地址。
安裝依賴
cd larabbs
composer install
安裝過程中,如果缺少相關php擴充套件,會有報錯。從報錯資訊中,將所有缺少的擴充套件記錄下來,逐個安裝。
如,缺少pdo
擴充套件,則執行yum -y install php72w-pdo
,依此類推,安裝xxx擴充套件,則執行yum -y install php72w-xxx
。
安裝後重啟nginx和php-fpm,依次執行:systemctl restart nginx
和systemctl restart php-fpm
。
配置環境變數
- 在專案目錄
larabbs
下複製.env.example
為.env
cp .env.example .env
- 生成APP_KEY
php artisan key:generate
- 開啟
.env
進行配置vi ./.env
- 需更改的配置如下,依照備註進行修改
APP_NAME=你的APP名字 APP_ENV=production # 這裡設為生成環境 APP_KEY=base64:前面生成的key不用改 APP_DEBUG=false # 關閉除錯模式 APP_URL=你的主機地址 LOG_CHANNEL=stack DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=larabbs DB_USERNAME=root DB_PASSWORD=你的資料庫密碼 BROADCAST_DRIVER=log CACHE_DRIVER=redis # 這裡使用redis SESSION_DRIVER=file SESSION_LIFETIME=120 QUEUE_DRIVER=redis # 這裡使用redis . . . MAIL_DRIVER=smtp MAIL_HOST=smtp.qq.com MAIL_PORT=25 MAIL_USERNAME=你的QQ郵箱 MAIL_PASSWORD=你的smtp服務的密碼 MAIL_ENCRYPTION=tls MAIL_FROM_ADDRESS=你的郵箱地址 MAIL_FROM_NAME=LaraBBS . . . BAIDU_TRANSLATE_APPID=你的百度翻譯APPID BAIDU_TRANSLATE_KEY=你的百度翻譯KEY
資料庫和資料表建立
登入資料庫後執行以下命令建立資料庫:
CREATE DATABASE larabbs DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
接著進行資料表遷移:
php artisan migrate
如出現這樣的報錯:could not find driver ...,可能缺少了pdo_mysql擴充套件,執行
yum -y install php72w-pdo_mysql
安裝。安裝後同樣重啟 nginx 和 php-fpm 。
Nginx配置
在 /etc/nginx/conf.d 下面新建 larabbs.conf nginx配置檔案,輸入下列內容:
server {
listen 80;
server_name localhost;
root /www/wwwroot/larabbs;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
index index.php index.html index.htm;
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; }
error_page 404 /index.php;
location ~ \.php$ {
root /www/wwwroot/larabbs;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
注意
conf.d
的其他配置檔案,如有listen 80
,需把埠改為其他的,以免跟本配置衝突。
Crontab配置
由於程式中使用到了計劃任務,需要在系統中配置Crontab。執行以下命令:
export EDITOR=vi && crontab -e
在開啟的檔案中,複製貼上以下程式碼:
* * * * * php /home/vagrant/Code/larabbs/artisan schedule:run >> /dev/null 2>&1
按esc
鍵並輸入:wq
儲存退出。
遇到的一些問題
- 執行
composer update
後輸出Killed
原因:系統記憶體不足
解決方法:- 在本地環境執行
composer update
- 上傳新的
composer.lock
檔案到伺服器 - 伺服器上執行
composer install
這樣就解決的依賴包更新的問題。
- 在本地環境執行
- 執行 composer 時提示:Do not run Composer as root/super user...
雖然有提示,但還是可以正常執行,暫時不用解決。 -
檔案寫入許可權問題
storage、uploads等檔案/資料夾沒有寫入許可權會報錯,這時需要給他們足夠的許可權。執行chmod -R 777 /path/to/filename
授權。 - 更改配置後注意重啟 nginx 和 php-fpm 。
- 使用yum直接安裝 php、mysql 等軟體,版本都很低, 需要重新配置yum源。
結尾
在這過程中,感覺centos 7 的 yum 不是很好用,倉庫老舊,需要重新配置yum源,不知道這是什麼歷史遺留問題。
最後,驕傲地貼一下本次折騰的成果吧:http://144.34.151.40/ 。