Arch Linux ARM 安裝與設定 Nginx + MariaDB + PHP + phpMyAdmin

Raspberry Pi

如何在 Arch Linux ARM 使用 Nginx、MariaDB 與 PHP(簡稱 LEMP)來架設 WEB 伺服器的環境,文章詳細解說安裝與設定的步驟,並使用 phpMyAdmin 這套資料庫管理工具,搭配 MariaDB 來管理資料庫。

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 伺服器己正確啟用:

設定檔

說明

  • 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;
        }

...(後面省略)...

在〈Arch Linux ARM 安裝與設定 Nginx + MariaDB + PHP + phpMyAdmin〉中有 1 則留言

  1. 您好,

    我們是支點雲端科技,由三民補習班成立的線上教學機構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

發表留言