跳至主要內容

在 Ubuntu 建構 Laravel 開發環境

Pamis Wang大约 4 分鐘後端LaravelPHPUbuntu

在 Ubuntu 建構 Laravel 開發環境

前言

基本上現在去看 Laravel 的官方文件Installationopen in new window
在建置開發環境的內容都是以容器化的方式為主。

原因很簡單,因為透過容器化的方式可以確保開發環境條件單一,
比起在自己的系統逐一安裝伺服器、PHP、資料庫會有版本的差異,
也可能還有其他的依賴套件要安裝與設定,
為了寫個網站還要去掌握一堆知識技能點。
結果環境裝起來一個禮拜就先過去了 XDDD。

(迷:但是用 Docker 也還是要具備不少知識儲備阿 XDDD)

不過這邊還是寫一下用 VMware 虛擬機建置 Ubuntu 作業系統的情境來建置一個 Laravel 開發環境。

從頭自己建置一次開發環境,對於一個網站是如何運作會更有概念。

先決條件

有兩個方式

  • 使用實體機安裝 Linux 作業系統
  • 使用虛擬機安裝 Linux 作業系統

本篇教學使用 VMware 虛擬機建置 Ubuntu 作業系統

安裝步驟

安裝 PHP

這邊要根據自己使用的框架版本來選擇 PHP 的對應版本,
版本對應列表可參照官方發行筆記open in new window

在 Ubuntu 安裝 PHP 7
在 Ubuntu 安裝 PHP 8

安裝 Composer

沒安裝 Composer 也就沒辦法用 Laravel 惹。

在 Ubuntu 安裝 Composer

安裝 Nginx

基於資安的考量,
會建議在正式環境用官網 Nginx 安裝的方式,
確保可以第一時間得到官方修補的版本。

在 Ubuntu 安裝 Nginx 伺服器(使用 APT 安裝)
在 Ubuntu 安裝 Nginx 伺服器(官網 Nginx 安裝)

安裝 Node.js

雖然 Laravel 是後端框架,但是寫 MVC 架構的網站多少還是會用一些前端套件。

在 Ubuntu 安裝 Node.js

安裝資料庫

這邊提供兩個資料庫的安裝教學,
建議如果是新手可以先從 MariaDB/MySQL 起步是比較簡單的。

微軟爸爸的 SQL Server 牽涉到 Windows 作業系統,
如果要裝在 Linux 環境有限定版本,不然就是要用 Docker 。
為了不要造成太大的負擔就先跳過。

在 Ubuntu 安裝 MariaDB 資料庫
在 Ubuntu 安裝 PostgreSQL 資料庫

安裝 git

為了更好管理程式碼與團隊協作。

安裝與設定 git

如果你打算這樣管理程式的版本就可以不用裝XD
如果你打算這樣管理程式的版本就可以不用裝XD

安裝 GitHub Desktop

如果安裝的 Ubuntu 是桌面版本,而且 git 是放在 GitHub 可以用看看。

github_desktop_ubuntu.shopen in new window

部署設定

參考 Laravel 9 官方文件 Deploymentopen in new window

參考範例

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
上次編輯於:
貢獻者: pamis,EXMAIL\pamis