在 Ubuntu 建構 Laravel 開發環境
在 Ubuntu 建構 Laravel 開發環境
前言
基本上現在去看 Laravel 的官方文件Installation,
在建置開發環境的內容都是以容器化的方式為主。
原因很簡單,因為透過容器化的方式可以確保開發環境條件單一,
比起在自己的系統逐一安裝伺服器、PHP、資料庫會有版本的差異,
也可能還有其他的依賴套件要安裝與設定,
為了寫個網站還要去掌握一堆知識技能點。
結果環境裝起來一個禮拜就先過去了 XDDD。
(迷:但是用 Docker 也還是要具備不少知識儲備阿 XDDD)
不過這邊還是寫一下用 VMware 虛擬機建置 Ubuntu 作業系統的情境來建置一個 Laravel 開發環境。
從頭自己建置一次開發環境,對於一個網站是如何運作會更有概念。
先決條件
有兩個方式
- 使用實體機安裝 Linux 作業系統
- 使用虛擬機安裝 Linux 作業系統
本篇教學使用 VMware 虛擬機建置 Ubuntu 作業系統
安裝步驟
安裝 PHP
這邊要根據自己使用的框架版本來選擇 PHP 的對應版本,
版本對應列表可參照官方發行筆記。
在 Ubuntu 安裝 PHP 7
在 Ubuntu 安裝 PHP 8
安裝 Composer
沒安裝 Composer 也就沒辦法用 Laravel 惹。
安裝 Nginx
基於資安的考量,
會建議在正式環境用官網 Nginx 安裝的方式,
確保可以第一時間得到官方修補的版本。
在 Ubuntu 安裝 Nginx 伺服器(使用 APT 安裝)
在 Ubuntu 安裝 Nginx 伺服器(官網 Nginx 安裝)
安裝 Node.js
雖然 Laravel 是後端框架,但是寫 MVC 架構的網站多少還是會用一些前端套件。
安裝資料庫
這邊提供兩個資料庫的安裝教學,
建議如果是新手可以先從 MariaDB/MySQL 起步是比較簡單的。
微軟爸爸的 SQL Server 牽涉到 Windows 作業系統,
如果要裝在 Linux 環境有限定版本,不然就是要用 Docker 。
為了不要造成太大的負擔就先跳過。
在 Ubuntu 安裝 MariaDB 資料庫
在 Ubuntu 安裝 PostgreSQL 資料庫
安裝 git
為了更好管理程式碼與團隊協作。
安裝 GitHub Desktop
如果安裝的 Ubuntu 是桌面版本,而且 git 是放在 GitHub 可以用看看。
部署設定
參考 Laravel 9 官方文件 Deployment
參考範例
server {
# listen 設定這個 server 監聽的 port
listen 80;
listen [::]:80;
server_name 127.0.0.1 ;
# 將 root 視為一個入口,指到 Laravel 專案資料夾內的 public 資料夾
root /home/pamis/apluspms-laravel/public;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
index index.php;
charset utf-8;
# 將所有的請求都交給 Laravel 的路由去處理,因此如 404 的頁面都是交由 Laravel 處理
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;
# 所有 .php 的檔案交由 php-fpm 去做解析,注意對應的PHP版本
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
權限不足問題
Laravel log 權限不足會出現錯誤訊息,
需要透過指令取得目錄所有權。
# 指向專案目錄
sudo chown -R $USER:www-data storage
sudo chown -R $USER:www-data bootstrap/cache
再設定目錄的訪問權限
chmod -R 775 storage
chmod -R 775 bootstrap/cache
# 指向專案目錄
sudo chown -R $USER:nginx storage
sudo chown -R $USER:nginx bootstrap/cache
再設定目錄的訪問權限
chmod -R 775 storage
chmod -R 775 bootstrap/cache