Arch Linux ARM 安裝與設定 Nginx + MariaDB + PHP + phpMyAdmin
如何在 Arch Linux ARM 使用 Nginx、MariaDB 與 PHP(簡稱 LEMP)來架設 WEB 伺服器的環境,文章詳細解說安裝與設定的步驟,並使用 phpMyAdmin 這套資料庫管理工具,搭配 MariaDB 來管理資料庫。
以下流程將使用「一般使用者」而非 root 來操作系統,如無法使用
sudo
指令,請參考 安裝與設定 Arch Linux ARM for Raspberry Pi 2使用
pacman -S
指令安裝套件發生失敗或錯誤時,請先執行 pacman -Sy
更新套件列表資料Nginx
Nginx(Ngin 發音同 Engine 在加 x,也就是 LEMP 的 E)。
安裝
使用以下指令安裝 Nginx 這套 WEB 伺服器:
sudo pacman -S nginx
啟動 Nginx,並設定開機自動啟動:
sudo systemctl start nginx.service
sudo systemctl enable nginx.service
測試
先查詢 Arch Linux 主機的 IP:
ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether b8:27:eb:86:49:0c brd ff:ff:ff:ff:ff:ff
inet 192.168.0.170/24 brd 192.168.0.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::ba27:ebff:fe86:490c/64 scope link
valid_lft forever preferred_lft forever
使用瀏覽器連結測試,如顯示下圖的 Nginx 預設頁面,表示 WEB 伺服器己正確啟用:
http://127.0.0 的預設網頁檔案為 /usr/share/nginx/html/index.html
設定檔
說明
- Nginx 所有設定檔:放置於 /etc/nginx 目錄下
- Nginx 主要設定檔:/etc/nginx/nginx.conf
- Nginx 程序設定檔:/usr/sbin/nginx
- Nginx Log 檔:/var/log/nginx
Nginx 主要設定檔:
sudo nano /etc/nginx/nginx.conf
# 啟動 Nginx 伺服器的使用者(預設為 nobody),可自訂使用者
#user html;
# 開啟的程序數量(預設為 1),1.2.5/1.3.8 版本以後設定為自動 auto
worker_processes 1;
# 取消三行中的其中一行註解,來啟用 Log,格式为 error_log Log 位置,第二個參數:
# 1.留空为警告
# 2.notice 和 info,更詳細
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
# ProcessID,也就是程序 ID 的存放路徑
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
# 設定 HTTP 伺服器
http {
include mime.types;
default_type application/octet-stream;
# 自訂 Log 格式
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
# 網站的根目錄
root /usr/share/nginx/html;
# 使用「瀏覽器」瀏覽根目錄時,未指定檔名時預設使用的檔案
index index.html index.htm;
# [須手動新增] 在瀏覽器呈現目錄樹為 on;反之 off,正試上線最好設成 off(預設值 off)
autoindex on;
}
# [須手動新增] 透過 php-fpm 讓 Nginx 與 PHP 之間交互連動
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
# 網站的根目錄
root /home/smalljacky;
include fastcgi.conf;
}
# 404 檔案不存在時,要呈現的自訂頁面
#error_page 404 /404.html;
# 伺服器錯誤時,要呈現的自訂頁面
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# 傳送 PHP 程式到 FastCGI server,透過 127.0.0.1:9000 解析
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# 拒絕訪問 .htacess 檔案
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# 設定其它埠,成為另一個虛擬主機
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# 設定 HTTPS 伺服器
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
設定
考慮到後續撰寫網頁的效率,所以會使用 FTP 的方式來「上/下載」檔案,因此將根目錄更改為「使用者」目錄:
sudo nano /etc/nginx/nginx.conf
...(前面省略)...
http {
server {
...(中間省略)...
location / {
# 預設為 /usr/share/nginx/html;
root /home/smalljacky;
index index.php; index.html index.htm;
autoindex on;
}
...(後面省略)...
本著作係採用創用 CC 姓名標示-相同方式分享 3.0 台灣 授權條款授權.
您好,
我們是支點雲端科技,由三民補習班成立的線上教學機構http://www.3study.com,朝著建立技術人群聚地的目標前進。
我們的課程分為三大塊以及兩小實務區:
i. CCNA + LINUX + MCSE 網管區
ii. Java/ C#/C++ / Python 程式語言區
iii. Web / javascript / node JS/ docker, Jenkins實務應用區
iV. iOS/Android 平台開發區
想要邀請您在 iii 實務應用JavaScript 區貢獻所學,期待您的回覆。
--
支點雲端科技股份有限公司
Vincent
02-7725-5666 ext 13