安裝 laravel 在ubuntu live server

安裝 Ubuntu 22.04.3 live Server 虛擬主機規格

規格如下:

安裝 ubuntu 22.04.3 live server

開機後, 選擇第一項 Try or Install Ubuntu Server

前幾頁面用預設值,在網路設定的地方,subnet 是要用 CIDR 寫入。

什麼是 CIDR?

CIDR 標記法 Classless Inter-Domain Routing (CIDR) 是一種 IP 地址分配方法,可提高網際網路上的資料路由效率。連線至網際網路的每台機器、伺服器和最終使用者裝置都有一個與之關聯的不重複編號,稱為 IP 地址。裝置透過使用這些 IP 地址找到彼此,並進行通訊。組織使用 CIDR 在其網路中靈活高效地分配 IP 地址。

安裝 OpenSSH

安裝 net-tools

$ sudo apt install net-tools

net-tools 有許多網路的工具,如: arpifconfignetstat…等常用工具

下載 XAMPP 及安裝

$ wget https://sourceforge.net/projects/xampp/files/XAMPP%20Linux/8.1.17/xampp-linux-x64-8.1.17-0-installer.run                                              
$ chmod 755 xampp-linux-x64-8.1.17-0-installer.run
$ sudo ./xampp-linux-x64-8.1.17-0-installer.run

wget 指令下載 XAMPP 的 Linux 版本,下載後用指令 chomd 755 將檔案轉成可以執行的檔案,再用 sudo 去安裝

XAMPP 啟用/停止

XAMPPUbuntu 上常用的指令如下

# 啟動 XAMPP
sudo /opt/lampp/lampp start

# 停止 XAMPP
sudo /opt/lampp/lampp stop

# 查看狀態
sudo /opt/lampp/lampp status

若是在 Windows 的話,它的指令如下

Apache & MySQL start: \xampp\xampp_start.exe
Apache & MySQL stop: \xampp\xampp_stop.exe
Apache start: \xampp\apache_start.bat
Apache stop: \xampp\apache_stop.bat
MySQL start: \xampp\mysql_start.bat
MySQL stop: \xampp\mysql_stop.bat
Mercury Mailserver start: \xampp\mercury_start.bat
Mercury Mailserver stop: \xampp\mercury_stop.bat
FileZilla Server start: \xampp\filezilla_start.bat
FileZilla Server stop: \xampp\filezilla_stop.bat

在 desktop 的版本, 若您偏好使用圖形工具來操作 XAMPP 的話,可以用指令工具將圖形管理介面叫出來使用

$ cd /opt/lampp
$ sudo ./manager-linux-x64.run

設定防火牆

安裝 UFW

UFW 是 Ubuntu 標準安裝的一部分,通常不需要額外安裝,但如果您因為某些原因沒有安裝 UFW,也可以透過以下指令進行安裝。

$ sudo apt install ufw

啟用/停止 UFW

$ sudo ufw enable            // 啟動防火牆,執行後開機也會自動啟動
$ sudo ufw disable           // 關閉防火牆
$ sudo ufw status            // 查看防火牆狀態
$ sudo ufw status verbose    // 查看防火牆詳細狀態

設定防火牆的規則

$ sudo ufw default deny  // 拒絕所有連線
$ sudo ufw default allow // 允許所有連線
$ sudo ufw allow 80        // 允許通過 80 Port 使用 tcp 與 udp 連線
$ sudo ufw allow 80/tcp    // 允許通過 80 Port 使用 tcp 連線
$ sudo ufw allow 443       // 允許通過 443 Port 使用 tcp 與 udp 連線
$ sudo ufw allow 443/tcp   // 允許通過 443 Port 使用 tcp 連線

詳細的指令有很多網站可以參考: Ubuntu based GNU/Linux 上的防火牆 (ufw) 基本設定Ubuntu Server 20.04.1 預設 UFW 防火牆 Firewall 設定規則詳解和教學

安裝 Composer

在早期開發 PHP 應用程式時,往往都需要開發者自行手動管理程式內各函式庫之間的相依性。隨著應用程式的增長,管理相依性就變成一件苦差事。因此,PHP 社群陸續出現了 PEAR、Pyrus 等專案嘗試解決這個問題。近年來,Composer 成為新一代的相依管理工具的主流選擇,目前已是 PHP 開發者的標準配備。

Composer 採 phar 的封裝檔進行散佈。所謂 phar 檔可以把它想像成用 PHP 程式語言寫的執行檔,概念上雷同在 Microsoft Windows 上的 .exe,只是需要透過 PHP 引擎來趨動運行。換句話說,當我們要安裝 Composer 前,必需把 PHP 的執行路徑加到系統的環境變數內。

將 PHP 設定在 PATH 內

XAMPP 在安裝的時候,會把所有 bin (binary 檔) 放在 /opt/lamp/bin 底下。所以,我們只需要將這個路徑加到 PATH 裡即可。依據您習慣使用的 Shell 的不同,設定的檔案也會稍有差異 (若您使用的是 Bash 的話請編輯 .profile;若您使用的是 Zsh 的話請編輯 .zshrc,不知道自己的 Shell 是什麼的話,請用 $ echo $SHELL 來查),打開後請新增以下語法:

PATH="/opt/lampp/bin:$PATH"

完成後,先存檔並重載 (可用 $ source ~/.profile 或重新登入或直接重開機),隨後測試一下是不是能執行 PHP 指令?

$ php -v
PHP 8.1.17 (cli) (built: Apr  6 2023 09:25:34) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.17, Copyright (c) Zend Technologies

下載/安裝 Composer

有了 php 指令後,就可以直接使用 Composer 官網上的下載指令來安裝 Composer

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'e21205b207c3ff031906575712edab6f13eb0b361f2085f1f1237b7126d785e826a450292b6cfd1d64d92e6563bbde02') { 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 的版本
$ composer --version
Composer version 2.6.2 2023-09-03 14:09:15

phpmyadmin 可以在其它網段或主機連入設定

XAMPP 預設 phpmyadmin 只能在本機 localhost 上使用,若要在其它網段也可以連上,要修改 /opt/lampp/etc/extra/httpd-xampp.conf 這個檔案。

$ sudo vi /opt/lampp/etc/extra/httpd-xampp.conf

然後將檔案內的設定

# since XAMPP 1.4.3
<Directory "/opt/lampp/phpmyadmin">
    AllowOverride AuthConfig Limit
    Require local
    ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
</Directory>

改成下面的設定

<Directory "/opt/lampp/phpmyadmin">
    AllowOverride AuthConfig Limit
    Order allow,deny
    # 下一行也可改為 Allow from 192.168.133 (內部網段 192.168.133.0/24)
    Allow from all
    Require all granted
    ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
</Directory>

修改好後,記得重開服務

# 重啟 XAMPP 服務
$ sudo /opt/lampp/xampp restart

# 若仍無法連入 phpmyadmin 就重啟主機
$ sudo shutdown -r now

若有apache 錯誤

XAMPP: Stopping Apache...fail.
apachectl returned 1.
XAMPP: Stopping MySQL...not running.
XAMPP: Stopping ProFTPD...not running.

#  httpd.pid 手動移除
$ sudo rm -f /opt/lampp/logs/httpd.pid

設定開機時, XAMPP 自動啟動

$ sudo ln -s /opt/lampp/lampp /etc/init.d/lampp
$ sudo update-rc.d lampp start 80 2 3 4 5 . stop 30 0 1 6 .

安裝 git

$ sudo apt-get install git

安裝 NVM

使用 NVM 已經是 Node.js 開發者必備的工具,它最大的用途在於可以輕鬆切換不同版本的 Node.js,尤其在後端的專案中,團隊需要統一的開發環境時可以精確切換到同一個 Node.js 子版本上,避免發生版本不同所發生的問題。NVM 為 Node Version Manager 的縮寫,顧名思義就是「Node 版本管理控制」。

接下來到 NVM 的 GitHub 儲存庫下載,無論你是 Windows、MacOS、Unix 系統都有對應的安裝方式。

$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash

安裝完後,記得將NVM環境變數放入 .profile 中

# set PATH to includes XAMPP
PATH="/opt/lampp/bin:$PATH"

# set nvm
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

常用 NVM 指令

$ nvm ls-remote列出目前可用的遠端 Node.js 版本
$ nvm install安裝特定版本的 Node.js
$ nvm ls列出本定端所安裝的 Node.js 環境
$ nvm alias default node設定命令列預設開啟的 Node.js 版本
$ nvm use當前命令列套用特定版本的 Node.js

安裝 nodejs

$ nvm install 14

安裝完成以後可以輸入 node 查看是否有正確安裝。

建立新 Laravel 專案

在 /opt/lampp 目錄下執行

$ cd /opt/lampp

$ composer create-project laravel/laravel example-app

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

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

開啟虛擬站台支援

為了讓 XAMPP 可以支援多個虛擬站台,我們要先編輯 Apache 設定檔,將功能打開。請用 root 權限編輯 /opt/lampp/etc/httpd.conf 檔案,並把其中 Include etc/extra/httpd-vhosts.conf 這行取消註解:

## /opt/lampp/etc/httpd.conf 檔案

# Virtual hosts
Include etc/extra/httpd-vhosts.conf

編輯 /opt/lampp/etc/extra/httpd-vhosts.conf 檔案

$ sudo vi /opt/lampp/etc/extra/httpd-vhosts.conf

內容如下

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "/opt/lampp/example-app/public"
    ServerName example-app.local
    <Directory "/opt/lampp/example-app">
        Options All
        AllowOverride All
        Require all granted
    </Directory>
    ErrorLog "logs/dummy-example-app-error_log"
    CustomLog "logs/dummy-example-app-access_log" common
</VirtualHost>

設定 hosts

在上一步裡,您會看到我們站台的網址是 example-app.local,但這個網址只是拿來開發時使用,實際上並不存在。所以我們必需在本機上設定 DNS 對應,讓瀏覽器輸入這個網址時,會被導向到 XAMPP。換句話說,我們必需強制讓 example-app.local 會被導向本機 IP,也就是 127.0.0.1。所以請用 root 權限編輯 /etc/hosts 這個檔案,並在裡面新增一行。

127.0.0.1 localhost example-app.local

安裝 Laravel & vite 套件

請用 root 權限安裝

/** 安裝 Laravel 套件 **/
# composer install

/** 安裝 npm 套件 **/
# npm install
/** 若安裝發生錯誤時, 改用下列指令 **/
# npm cache --force clean && npm install --force

/** 編譯 vite 到 public 目錄 **/
# npm run build

在這邊還是要提醒一下讀者,在這篇介紹裡的目標是協助 PHP 開發者在 elementary OS 上建置開發工作環境,而非正式的上線環境。在沒有做適當的調校前,請不要將這個環境當上線機使用,安全性是沒有經過認證的。若真的想拿 XAMPP 當上線機,XAMPP 官方有為我們準備了一個提升安全性的設定指令,請至少先把這個指令跑完:

Here a list of missing security in XAMPP:

  1. The MySQL administrator (root) has no password.
  2. The MySQL daemon is accessible via network.
  3. ProFTPD uses the password “lampp” for user “daemon”.

To fix most of the security weaknesses simply call the following command:

? sudo /opt/lampp/lampp security

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *