本篇介紹如何在 Ubuntu Linux 18.04 的環境中,安裝 Nginx 網頁伺服器、MariaDB 資料庫,打造簡單實用的 Laravel PHP 架構開發與佈署環境。
在安裝好 Ubuntu Linux 18.04 之後,首先更新一下系統的套件:
# 更新系統套件
sudo apt update
sudo apt dist-upgrade
Laravel 所需要的相依性工具都已經被納入 Ubuntu Linux 18.04 的套件庫中了,所以只要使用 apt
安裝即可:
# 安裝 Nginx、PHP、MariaDB、Composer 等套件
sudo apt install composer php-mysql php-fpm php-mbstring php-tokenizer php-xml php-json php-common nginx mariadb-server
Laravel 專案的建立非常簡單,只要使用 Composer 這個自動化工具就可以快速建立一個新專案:
# 建立新的 Laravel 專案 composer create-project --prefer-dist laravel/laravel myProject
啟動 Lavevel 內建的開發用伺服器:
# 啟動開發用伺服器 cd myProject/ php artisan serve
Laravel development server started: <http://127.0.0.1:8000>
這個 Laravel 內建的伺服器預設會開在本機的 8000
連接埠。
若要將 Laravel 內建的伺服器開在其他的網路介面上,可以以使用 --host
與 --port
自行指定傾聽之 IP 位址與連接埠:
# 指定傾聽之 IP 位址與連接埠 php artisan serve --host=192.168.122.202 --port=8001
若在遠端的伺服器上開發的時候,就可以考慮使用這種方式。
如果擔心將開發用的伺服器開放公開的網路介面上會有安全性的問題,也可以將伺服器開在本機,然後搭配 SSH Tunnel 的方式來開發。
若要將 Laravel 專案佈署至 Nginx 伺服器上,首先要將檔案移至系統目錄:
# 將 Laravel 專案移至系統目錄
sudo mv myProject /var/www/
然後設定好檔案權限:
# 設定檔案權限 sudo chown -R www-data:www-data /var/www/myProject/
在 /etc/nginx/sites-available/
目錄中新增一個 Laravel 網站的設定檔,命名為 myProject
(也可以任意取其他的名字),內容大致如下:
server { listen 80; listen [::]:80; # 網頁目錄 root /var/www/myProject/public; # 伺服器名稱 server_name your_name.com; index index.php; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ .php$ { include snippets/fastcgi-php.conf; # PHP-FPM 的連接方式 fastcgi_pass unix:/run/php/php7.2-fpm.sock; } }
在 /etc/nginx/sites-enabled/
目錄中建立一個指向該設定檔的連結檔案:
# 建立連結檔案 ln -s /etc/nginx/sites-available/myProject /etc/nginx/sites-enabled/myProject
重新啟動 Nginx 網頁伺服器,讓新設定生效:
# 重新啟動 Nginx 網頁伺服器
systemctl restart nginx
這樣 Nginx 的部份就完成了。
在安裝好 MariaDB 資料庫後,使用前建議先調整一下安全性的設定:
# MariaDB/MySQL 資料庫安全性設定
sudo mysql_secure_installation
設定好之後,使用 root
管理者帳號登入 MariaDB 資料庫:
# 使用 root 登入 MariaDB/MySQL 資料庫 sudo mysql -u root -p
進入 MariaDB 資料庫之後,建立 Laravel 專案用的資料庫:
# 建立 laravel 資料庫 CREATE DATABASE laravel;
接著新增一位 Laravel 專案專用的使用者帳號,並賦予此帳號存取資料庫的權限:
# 建立一般使用者帳號 CREATE USER `user`@`localhost` IDENTIFIED BY 'yourpassword'; # 設定帳號權限 GRANT ALL ON laravel.* TO `user`@`localhost`; # 讓設定生效 FLUSH PRIVILEGES;
編輯 Laravel 專案目錄中的 .env
設定檔,將資料庫的相關資訊填入其中:
DB_DATABASE=laravel DB_USERNAME=user DB_PASSWORD=yourpassword
除了 .env
的設定檔之外,也可以直接編輯 config/database.php
中的資料庫設定。
若想要測試一下實際的資料庫連線,可以建立測試用的 Controller:
php artisan make:controller MariaDBInfoController
編輯 app/Http/Controllers/MariaDBInfoController.php
,內容如下:
<?php namespace myProjectHttpControllers; use IlluminateHttpRequest; class MariaDBInfoController extends Controller { public function index() { $result = DB::select('SELECT VERSION();'); return view('MariaDBInfo')->with('dbVersion', $result[0]->{'VERSION()'}); } }
這裡我示範使用簡單的 SQL 語法,查詢資料庫的版本。
建立一個對應的 View,放在 resources/views/MariaDBInfo.blade.php
,內容如下:
<!doctype html> <html> <head> <title>MariaDB Info</title> </head> <body> {{ $dbVersion }} </body> </html>
最後設定路由(route),在 routes/web.php
中加入一行:
Route::get('/db_info', 'MariaDBInfoController@index');
完成後,即可測試 /db_info
這個網址:
參考資料:LinuxConfig.org、Website for Students、DigitalOcean、HowtoForge、DigitalOcean、DigitalOcean、Linuxize