:clap: 本系列持續更新中,歡迎關注:https://github.com/wi1dcard/laravel-deploy...。
由於課程上下文關聯比較緊密,在開始前請先閱讀 本文。
你的支援是我寫作的動力;關注我的客官們,請在右上角點個贊,將會讓文章在首頁展示,幫助更多人。
感謝 :clap: !
在上一節,我們終於安裝好了基本執行環境,是時候將程式碼部署到伺服器上了。
使用 Git 拉取專案(HTTPS 協議)
目前幾乎所有的 Laravel 開發者都會使用 Git 作為版本控制系統,而常見的 Git 倉庫託管平臺 GitHub、GitLab、Gitea,以及國內的 Gitee、Coding 等,幾乎都支援兩種常見的傳輸協議 —— SSH 和 HTTPS。由於使用 SSH 協議通常需額外配置,本節我們先嚐試 HTTPS 協議。
首先,我們需要得到 Git 倉庫的地址。以 GitHub 為例,在瀏覽器內開啟倉庫頁面,點選綠色的 Clone or download 按鈕,選擇彈出框內的 Use HTTPS:
確保連結為 HTTPS 協議,點選複製:
記住此連結,稍後需要使用。接下來請登入到伺服器,執行:
$ cd /var/www/
cd
命令用於切換當前工作目錄,/var/www
是 Nginx 預設的站點存放目錄。
隨後便可以將倉庫克隆到本地了:
$ git clone https://github.com/wi1dcard/hello-deployment.git deployment
提示:若倉庫包含大量提交歷史,以上命令可能耗時較久;你可以嘗試使用
--depth
選項來優化,詳情請搜尋Git 淺克隆
等關鍵字。
請將命令中的 URL 替換為剛剛從 GitHub 或其它倉庫託管平臺內複製的連結。末尾的 deployment
參數列示將此倉庫克隆至當前工作目錄下的 deployment
子目錄內。
稍等將會出現以下輸出:
Cloning into 'hello-deployment'...
remote: Enumerating objects: 130, done.
remote: Counting objects: 100% (130/130), done.
remote: Compressing objects: 100% (95/95), done.
remote: Total 130 (delta 50), reused 105 (delta 32), pack-reused 0
Receiving objects: 100% (130/130), 2.73 MiB | 850.00 KiB/s, done.
Resolving deltas: 100% (50/50), done.
Checking connectivity... done.
如果你的專案是「私有」的,那麼可能需要輸入使用者名稱和密碼:
Cloning into 'hello-deployment'...
Username for 'https://github.com': <輸入你的使用者名稱>
Password for 'https://wi1dcard@github.com': <請輸入你的密碼>
提示:還記得之前提到的嗎?密碼輸入是不可見的。
使用 Composer 安裝依賴
首先,請切換至 deployment
目錄內:
$ cd deployment
接著執行:
$ composer install
稍等片刻,你可能會看到這樣的警告:
Failed to download foo/bar from dist: The zip extension and unzip command are both missing, skipping.
Now trying to download from source
意為 PHP Zip 擴充套件和 unzip
命令均找不到,此時 Composer 會嘗試從依賴的 Git 倉庫內直接克隆原始碼,這是不推薦的;因此我們使用 Ctrl + C
(macOS 為 Cmd + C
)中止正在執行的命令。
針對該警告資訊,可以想到兩種解決思路:
- 使用之前小節提到的
apt-cache search
搜尋php zip
關鍵字,查詢 Zip 擴充套件並安裝。 - 安裝
unzip
命令。
第一種方法本節不再贅述,我們來嘗試第二種方法。首先,嘗試手動執行 unzip
,確認它的確未安裝:
$ unzip
The program 'unzip' is currently not installed. You can install it by typing:
apt install unzip
看樣子在當前系統中確實找不到 unzip
。不過,貼心的 APT 幫我們找到了包含 unzip
的軟體包,並直接提供了安裝命令:
$ apt install unzip
稍等片刻便安裝好了。此時再次執行:
$ unzip
UnZip 6.00 of 20 April 2009, by Debian. Original by Info-ZIP.
...
完美。
實際上,不僅是 Composer,其它多數命令都支援使用 Ctrl + C
中止執行;如果 Ctrl + C
無效,你也可以試試 Ctrl + D
;另外,結合 APT 的提示和 apt-cache search
,可以幫助我們很快地解決絕大多數命令缺失的錯誤,而無需遵從百度來的手動而又複雜的原始碼編譯步驟。
我們回到主題,再次執行 composer install
:
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Package operations: 72 installs, 0 updates, 0 removals
- Installing dragonmantank/cron-expression (v2.2.0): Downloading (100%)
- Installing erusev/parsedown (1.7.1): Downloading (100%)
- Installing symfony/var-dumper (v4.2.3): Downloading (connecting...)
恭喜,等待安裝完畢即可。
配置環境變數
依賴安裝完成後,我們還需要將 .env.example
檔案複製為 .env
檔案,並生成 APP_KEY
金鑰:
$ cd /var/www/deployment
$ php -r "file_exists('.env') || copy('.env.example', '.env');"
$ php artisan key:generate --ansi
提示:實際上,以上兩條命令都是從部署應用的
composer.json
-scripts
小節內摘抄出來的,這也解釋了為何使用laravel new
建立專案後.env
檔案就已經存在。有興趣可深入瞭解 Composer Scripts。
配置檔案所有者
最後,別忘記修改檔案所有者:
$ chown -R www-data:www-data .
由於目前所在的工作目錄為 /var/www/deployment
,所以可用表示當前工作目錄的 .
代替之前的 /var/www/deployment
,它們是等效的。
至此,本小節目標完成。你可以通過 ll
命令來列出當前目錄:
$ ll
total 440
drwxr-xr-x 13 www-data www-data 4096 Mar 9 01:26 ./
drwxr-xr-x 5 root root 4096 Mar 9 00:49 ../
drwxr-xr-x 6 www-data www-data 4096 Mar 9 00:45 app/
-rw-r--r-- 1 www-data www-data 1686 Mar 9 00:45 artisan
...
本作品採用《CC 協議》,轉載必須註明作者和本文連結