更新提醒(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=
延伸閱讀
- 【CI/CD】Jenkins 打造安全的 Laravel 部署:JCasC 與受限 SSH:文中是手動部署,想把上線流程自動化且限制 SSH 權限,可接著看這篇
- 【監控】Prometheus + Grafana 監控 Docker 服務與 Slack 告警:環境架好之後,下一步通常是讓 CPU、記憶體與磁碟用量可被監控並能告警
感謝分享
Roy • 2022-03-16 21:48<p>謝謝大大分享,非常有用的筆記!!</p>
巨垂1 • 2021-09-03 11:03