安裝 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 有許多網路的工具,如: arp、ifconfig、netstat…等常用工具
下載 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 啟用/停止
# 啟動 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:
- The MySQL administrator (root) has no password.
- The MySQL daemon is accessible via network.
- 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
發佈留言