iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 13
1

本文同步刊載於作者部落格:https://medium.com/@shengyou/2018ironman-eos-for-php-developer-day13-124a0903e937

以建置 PHP/Laravel 開發環境來說,大體上需要四個主要元素:作業系統、網頁伺服器、資料庫、PHP 直譯器。而又因為最常見的組合就是 Linux、Apache、MySQL、PHP,所以坊間常見的簡稱就是所謂的 LAMP。當然,隨著近幾年開發典範的轉移,這個簡稱就出現了很多混種,像是在不同作業系統上演伸出來的 W(indows)AMP、M(ac)AMP;或是更換成不同的伺服器 LN(ginx)MP、不同的資料庫 LAP(ostgreSQL)P 等,由此可見 PHP 在環境上的廣適性。

由於各 Linux 發行版都會自帶套件管理庫,所以在安裝/更新/移除這些 PHP 開相關開發元件時顯得相形容易,再加上大多數的 PHP/Laravel 開發者也會選擇使用 Linux 做為上線主機的作業系統。因此,直接在 elementary OS 上架 LAMP 環境做開發其實很直覺,也近似於在跟上線主機一樣的環境底下做開發。

elementary OS 屬於 Debian 流派,因此在這篇介紹裡,筆者就以 apt 套件管理工具示範如何安裝 AMP 環境,讓讀者可以直接在 elementary OS 上擁有一個開發 PHP/Laravel 的環境。

預備動作

在開始安裝前,先讓我們把系統更新到最新版,請先用 Meta+T 開啟終端機應用程式。另外,安裝過程中常會需要一些開發工具,在開始之前也先把這些工具安裝起來。

$ sudo apt update
$ sudo apt upgrade
$ sudo apt install software-properties-common

安裝 Apache

先從 Apache 開始安裝起。Apache 當前穩定版本為 2.4 系列,而在 apt 裡的套件名稱就叫 apache2,所以直接下一行指令搞定,完成後也可以檢查一下安裝的版本是否為 2.4.18。

# 安裝 Apache
$ sudo apt install apache2

# 檢查安裝版本
$ sudo apache2 -v

完成後直接用瀏覽器打開 http://localhost 應該就可以看到 Apache 預設的啟動畫面:

安裝 MySQL

接著來安裝 MySQL 資料庫。由於每一個套件管理庫裡的套件名稱可能略有差異,在安裝時請務必留意。以 apt 來說,MySQL 的套件名稱為 mysql-server,請用以下指令安裝,完成後也請檢查一下安裝的版本是否為 5.7.20。

# 安裝 MySQL
$ sudo apt install mysql-server

# 檢查安裝版本
$ sudo mysql --version

在安裝過程中,會出現對話提示來設定 root 帳號的密碼 (輸入兩次),輸入後請把密碼記起來,之後開發時會用到。

安裝 PHP

然後來安裝 PHP。在文章撰寫的當下,PHP 的穩定版本為 7.2。不過,由於 PHP 釋出的版本變快了,各發行版在釋出更新的速度不會這麼即時,所以會建議使用信任來源的 ppa 安裝最新版的 PHP。另外,由於開發 Laravel 時有需要一些必要的外掛擴充,可以在這個時候一併安裝,安裝完後確認一下版本是否為 7.2.1,也可以用 php -m 確認一下安裝的外掛是否都有載入。

# 新增 ppa 來源
$ sudo apt-add-repository ppa:ondrej/php
$ sudo apt update

# 安裝 PHP 及相關擴充
$ sudo apt install php7.2 php7.2-common php7.2-cli php7.2-curl php7.2-gd php7.2-json php7.2-dev php7.2-pgsql php7.2-sqlite3 php7.2-gd php7.2-curl php7.2-memcached php7.2-imap php7.2-mysql php7.2-mbstring php7.2-xml php7.2-zip php7.2-bcmath php7.2-soap php7.2-intl php7.2-readline

# 安裝 Apache 的 PHP 模組
$ sudo apt install libapache2-mod-php7.2

下載/安裝 Composer

Composer 是 PHP 生態系最廣為使用的相依管理工具。只要您在開發程式時不想要重新打造輪子、想快速引入別人寫好的函式庫、輕鬆管理套件之間的相依性且可以無腦的下載/安裝/更新/載入這些套件的話,那 Composer 就是您的最佳助手。若您以前有使用過 PEAR 的經驗,那您可以簡單地把 Composer 當做是繼任取代品,現在 Composer 幾乎已成為 PHP 開發者的標準配備。

由於 Composer 就是用 PHP 程式語言撰寫後打包成 .phar 的執行檔。因此我們才會在前一步先安裝 PHP,有了 php 指令後,就可以直接使用 Composer 官網上的下載指令來安裝 Composer:

$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
$ php -r "if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
$ php composer-setup.php
$ php -r "unlink('composer-setup.php');"

註:這段指令會從 Composer 官網下載 composer-setup.php 這個安裝程式,由於指令裡會驗證這個 .php 檔的雜湊值,所以請自行到官網複製這段指令

完成後,可以把 composer.phar 變成全域指令:

$ sudo mv composer.phar /usr/local/bin/composer

最後,透過取得安裝版本來測試一下是否成功安裝。

$ composer --version
$ composer

安裝 Laravel

有了以上的基礎建設後,要安裝 Laravel 就變得非常簡單,不過因為我們常常需要同時開發多個 Laravel 專案,所以我會建議在自己的家目錄底下開個專門放專案的目錄 (比方說 /home/shengyou/Projects),然後在這個專案目錄底下建立 Laravel 專案。

建立新 Laravel 專案

請先切換工作目錄到您的專案目錄 (Projects) 底下,然後執行 Composer 建立專案的指令即可:

$ mkdir ~/Projects
$ cd ~/Projects
$ composer create-project laravel/laravel --prefer-dist

Laravel 在運行的時候,會將應用程式的 cache 及 log 寫入檔案,因此別忘了把資料夾權限開大:

$ chmod -R 777 storage
$ chmod -R 777 bootstrap/cache

建立/開啟虛擬站台

為了讓我們開發時可以支援多個專案,因此我們要在 Apache 上設定虛擬站台。請用 root 權限新增虛擬站台設定檔 /etc/apache2/site-available/laravel.local.conf 輸入以下設定檔:

<VirtualHost laravel.local:80>
    DocumentRoot "/home/shengyou/Projects/laravel/public"
    ServerAdmin laravel.local

    <Directory "/home/shengyou/Projects/laravel">
        Options All
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

完成後要在 Apache 裡啟動這個站台,成功啟動後要重新載入 Apache 設定檔

# 開啟站台
$ sudo a2ensite laravel.local

# 重新載入 Apache 設定檔
$ sudo systemctl reload apache2

設定 hosts

在上一步裡,您會看到我們站台的網址是 laravel.local,但這個網址只是拿來開發時使用,實際上並不存在。所以我們必需在本機上設定 DNS 對應,讓瀏覽器輸入這個網址時,會被導向到 XAMPP。換句話說,我們必需強制讓 laravel.local 會被導向本機 IP,也就是 127.0.0.1

所以請用 root 權限編輯 /etc/hosts 這個檔案,並在裡面新增一行:

127.0.0.1 laravel.local

完成後打開瀏覽器,輸入網址 laravel.local 應該就可以看到 Laravel 的專案啟動畫面如下:

完成了!一個可以開發 PHP/Laravel 的開發環境就完成了!

系統服務的啟動/關閉/重啟

由於 Linux 預設被當成網路主機使用,所以 apt 在安裝完 Apache 或 MySQL 時,也會預設就把這些服務在開機時預設啟動。但因為我們只是拿來做開發機,並不需要一開機就啟動,所以可以把這個設定關閉。目前主流 Linux 的服務管理大多採用 systemd,所以要管理各服務的運作狀態可以統一使用 systemctl 這個指令來操作:

# 讓服務不要預設啟動
$ sudo systemctl disable apache2
$ sudo systemctl disable mysql

以後要了解各服務的狀態,或是要啟動/關閉/重啟這些服務時,就使用這些指令即可:

# 查看服務狀態
$ sudo systemctl status apache2
$ sudo systemctl status mysql

# 啟動各服務
$ sudo systemctl start apache2
$ sudo systemctl start mysql

# 關閉各服務
$ sudo systemctl stop apache2
$ sudo systemctl stop mysql

# 重啟各服務
$ sudo systemctl restart apache2
$ sudo systemctl restart mysql

經過這篇的介紹,相信您就可以在 elementary OS 上用 apt 套件管理工具搭建起一個可以開發 PHP/Laravel 的環境。只要抓到重點的 AMP 三個元件的安裝流程,安裝所需花費的時間並不多,之後要移除或更新也很方便。由於所有軟體都是原生安裝,因此在啟動/載入/重開的速度和效能應該都是不錯的。環境安裝一次後,後續要背起來的指令也不多,對熟悉 Linux 操作的讀者應該不是問題。

不過在最後要提醒一下讀者,在本篇的介紹裡,目標先放在建置本機可運作的開發環境。為了讓內容不致於過長或失焦,所以並沒有描述太多關於安全性設定的細節。若您安裝的是上線運作的主機,請務必依照您的環境做安全性防禦的設定,以確保主機的安全喔!

參考資料


上一篇
第 12 天:git 版本管理系統
下一篇
第 14 天:以 XAMPP 建置 PHP/Laravel 開發環境
系列文
簡潔高效的 PHP & Laravel 工作術:從 elementary OS 下手的聰明改造提案31

1 則留言

0
becomegood
iT邦新手 5 級 ‧ 2019-04-05 22:28:03

版主你好~
我使用virtualBox ubuntu 18.04.2
建立/開啟虛擬站台
遇到以下問題https://ithelp.ithome.com.tw/upload/images/20190405/20111666o9fdr8B0t8.png
$ sudo a2ensite laravel.local
出現 site does not exist
懇請求教~謝謝。

fv1230 iT邦新手 5 級 ‧ 2019-08-30 18:38:53 檢舉

我也是用ubuntu 18.04
我的apache其他的conf檔所在的資料夾是在/etc/apache2/sites-available/底下,跟版主的不一樣
把檔案建在這個資料夾底下是可以執行sudo a2ensite laravel.local
供你參考

我要留言

立即登入留言