Ubuntu Linux 安裝 Laravel + Nginx + MariaDB 開發環境教學

本篇介紹如何在 Ubuntu Linux 18.04 的環境中,安裝 Nginx 網頁伺服器、MariaDB 資料庫,打造簡單實用的 Laravel PHP 架構開發與佈署環境。

安裝 Laravel 相依性工具

在安裝好 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 專案

Laravel 專案的建立非常簡單,只要使用 Composer 這個自動化工具就可以快速建立一個新專案:

# 建立新的 Laravel 專案
composer create-project --prefer-dist laravel/laravel myProject

設定專案預設的命名空間:

php artisan app:name myProject

啟動 Lavevel 內建的開發用伺服器:

# 啟動開發用伺服器
cd myProject/
php artisan serve
Laravel development server started: <http://127.0.0.1:8000>

這個 Laravel 內建的伺服器預設會開在本機的 8000 連接埠。

Laravel 新專案

若要將 Laravel 內建的伺服器開在其他的網路介面上,可以以使用 --host--port 自行指定傾聽之 IP 位址與連接埠:

# 指定傾聽之 IP 位址與連接埠
php artisan serve --host=192.168.122.202 --port=8001

若在遠端的伺服器上開發的時候,就可以考慮使用這種方式。

如果擔心將開發用的伺服器開放公開的網路介面上會有安全性的問題,也可以將伺服器開在本機,然後搭配 SSH Tunnel 的方式來開發。

Nginx 伺服器

若要將 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 資料庫後,使用前建議先調整一下安全性的設定:

# 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 中的資料庫設定。

查詢 MariaDB 資料庫

若想要測試一下實際的資料庫連線,可以建立測試用的 Controller:

php artisan make:controller MariaDBInfoController

編輯 app/Http/Controllers/MariaDBInfoController.php,內容如下:

<?php namespace myProject\Http\Controllers;
use Illuminate\Http\Request;

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.orgWebsite for StudentsDigitalOceanHowtoForgeDigitalOceanDigitalOceanLinuxize

Linux, 網頁開發

1 留言

  1. James

    簡單明瞭的教學,非常棒!謝謝大大

Leave a Reply