Roy-Try-Catch
← Back to list

【Laravel】Laravel部署於Ubuntu (Nginx,MariaDB)

Roy • Updated 2026-10-15 15:38:43

更新提醒(2026-10):本文寫於 2021 年,文中以 PHP 7.4 為例,且安裝指令列了 php-json 等套件。PHP 7.4 已結束官方支援,較新的 PHP 8.x 已將 json 內建,套件名稱與 php.ini 路徑中的版本號也會不同;Ubuntu 版本亦請依你的環境確認。建議先依實際的 PHP 與 Ubuntu 版本調整指令,再套用文中的設定。

本篇介紹如何在 Ubuntu Linux 環境中,安裝 Nginx 伺服器與 MariaDB 資料庫,打造 PHP 的開發與部署環境。

# 更新系統套件
sudo apt update
sudo apt dist-upgrade
# 安裝 Nginx、PHP、MariaDB、Composer 等套件
sudo apt install composer php-curl php-mysql php-fpm php-mbstring php-tokenizer php-xml php-json php-common php-dev nginx mariadb-server redis-server supervisor

建立 Laravel 專案

建立 Laravel 專案非常簡單,只要使用 Composer 就可以快速建立新專案:

# 進入/var/www
cd /var/www/
# 建立新的 Laravel 專案
composer create-project --prefer-dist laravel/laravel {專案名稱}

設定 php.ini

Ubuntu 預設的 php.ini 位置為 /etc/php/{php-version}/fpm/php.ini。

需要修改 PHP 的 extension:

# 進入/etc/php/{php-version}/fpm/ 編輯php.ini
vim php.ini
# 調整php.ini參數(參考)
cgi.fix_pathinfo=0
extension=bz2
extension=curl
extension=ftp
extension=fileinfo
extension=gd2
extension=gettext
extension=mbstring
extension=exif
extension=mysqli 
extension=openssl
extension=pdo_mysql

設定 Nginx

Ubuntu 預設的 Nginx 設定位置為 /etc/nginx。

在 sites-available 建立 laravel.conf:

server {
    listen 80;
    listen [::]:80;

    # 網頁目錄
    root /var/www/{專案名稱}/public;

    # 伺服器名稱
    server_name {your_domain};

    location / {
        try_files $uri /index.php?$query_string;
        root /var/www/{專案名稱}/public;
        index index.php index.html;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    error_page 403 404 /404.html;
    location = /40x.html{

    }
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
    }

    #301永久轉址(443),轉址時,改變Request Method為GET,無法保留POST資料
    #return 301 https://$host$request_uri;
    #308永久轉址,轉址時,不改變Request Method,能保留POST資料
    #return 308 https://$host$request_uri;

}

設定完 .conf 之後,利用軟連結(ln)連到 sites-enabled:

# 進入/etc/nginx/sites-enabled
cd /etc/nginx/sites-enabled
# 設定軟連結
sudo ln -s ../sites-available/laravel.conf

設定完成後重新載入 Nginx:

# 重新啟動Nginx
sudo nginx -s reload

設定 MariaDB

安裝好 MariaDB 之後,使用前建議先調整安全性設定:

# MariaDB/MySQL 資料庫安全性設定
sudo mysql_secure_installation

設定完成後,使用 root 管理者帳號登入 MariaDB:

# 使用root登入
sudo mysql -u root -p

建立 Laravel 使用的資料庫:

# 使用root登入
CREATE DATABASE laravel;

新增一位 DB User 並授予資料庫權限:

# 建立一般使用者帳號
CREATE USER `user`@`localhost` IDENTIFIED BY 'yourpassword';

# 設定帳號權限
GRANT ALL ON laravel.* TO `user`@`localhost`;

# 讓設定生效
FLUSH PRIVILEGES;

或者是授予全域的超級管理員權限:

# 建立一般使用者帳號
CREATE USER `user`@`%` IDENTIFIED BY 'yourpassword';

# 設定帳號權限
GRANT ALL PRIVILEGES ON *.* TO 'user';

# 讓設定生效
FLUSH PRIVILEGES;

設定 Laravel 專案

Laravel 專案的設定都寫在專案根目錄的 .env 裡,接下來我們要修改 .env 檔案。

# 進入專案
cd /var/www/{專案名稱}
# 建立新的env
cp .env.example dev.env
# 建立軟連結
ln -s dev.env .env

寫入 DB 相關參數:

DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=

延伸閱讀

Comments

感謝分享

Roy • 2022-03-16 21:48

<p>謝謝大大分享,非常有用的筆記!!</p>

巨垂1 • 2021-09-03 11:03

請先登入