由于采用拥抱前沿软件的滚动发布(Rolling Release)模式,Arch Linux 并非为作为服务器运行以提供可靠的网络服务而设计和开发,因为它需要额外的时间进行维护、持续升级以及合理的文件配置。

但是,由于 Arch Linux 的核心安装仅预装了极少的软件,它仍然可以作为一个坚实的基础起点,用于安装当今大多数流行的网络服务,包括 LEMP 或 LAMP、Apache Web Server、Nginx、PHP、SQL 数据库、Samba、FTP 服务器、BIND 等,其中许多由 Arch Linux 官方仓库提供,其余则由 AUR 提供。

本教程将指导您使用 SSH 远程安装和配置 LEMP 技术栈(Nginx、PHP、使用 MariaDB 引擎的 MySQL 以及 PhpMyAdmin),这可以为构建 Web 服务器应用程序提供坚实的基础。

步骤 1:为 Arch Linux 网络接口分配静态 IP 地址

1. 在完成 Arch Linux 最小化核心安装后重启服务器,使用 root 账户或等效的具有 sudo 权限的管理员账户登录,并使用 ip link 命令识别系统的网卡设备名称。

ip link
检查 Arch Linux 网络连接
检查 Arch Linux 网络连接

2. 为了分配静态网络配置,我们将使用 netctl 包来管理网络连接。成功识别出网络接口名称后,将 ethernet-static 文件模板复制到 netctl 系统路径中,并将其名称更改为描述性的命名方案(尝试使用“static”字符串与网卡名称组合),请执行以下命令。

sudo pacman -S netctl
sudo cp /etc/netctl/examples/ethernet-static /etc/netctl/my-static-profile

3. 下一步是编辑这个新的模板文件,修改文件的指令并提供实际的网络设置(Interface、IP/Netmask、Gateway、Broadcast、DNS),如下面的摘录所示。

sudo nano /etc/netctl/my-static-profile
在 Arch Linux 中设置静态 IP 地址
在 Arch Linux 中设置静态 IP 地址

使用您的网络设置修改该文件:

Description='A basic static ethernet connection'
Interface=eth0  # 替换为您的网络接口名称
Connection=ethernet
IP=static
Address=('192.168.1.100/24')  # 替换为您所需的 IP 地址
Gateway='192.168.1.1'         # 替换为您的网关地址
DNS=('192.168.1.1')           # 如有需要,替换为您的 DNS 服务器

4. 下一步是通过 netctl 系统工具启动网络连接,并执行以下命令验证系统的连通性。

sudo netctl start my-static-profile
sudo netctl status my-static-profile

5. 如果获得绿色的活动退出状态,则表示您已成功配置了网络接口,现在可以在系统级服务中自动启用它了。

sudo netctl enable my-static-profile

此外,通过对域名运行 ping 命令来测试网络,同时安装 net-tools 包(该包最著名的功能是 ifconfig 命令,Arch 开发者认为该命令已过时,并用 iproute2 取代了它)。

sudo pacman -S net-tools

6. 现在您可以运行 ifconfig 命令来验证网络接口设置,并检查一切是否正确显示,然后重启系统以确保一切就绪且配置正确。

ifconfig
ping tecmint.com
确认网络连接
确认网络连接

步骤 2:在 Arch Linux 上安装 LEMP 软件

正如本文引言中指出的,LEMP 代表 Linux、Nginx、PHP/PhpMyAdmin 和 MySQL/MariaDB,它是继 LAMP(方程中包含 Apache 的相同技术栈)之后当今最广泛使用的 Web 应用程序平台之一。

7. 在安装 LEMP 技术栈之前,我们需要更新系统,然后获取对 Arch Linux 服务器的远程控制。您可能知道,OpenSSH 是完成这项工作的主要候选者,所以请继续安装它,启动 SSH 守护进程,并在系统范围内启用它。

sudo pacman -Syu
sudo pacman -S openssh
在 Arch Linux 中安装 OpenSSH
在 Arch Linux 中安装 OpenSSH
sudo systemctl start sshd
sudo systemctl status sshd
sudo systemctl enable sshd
启动 Open SSH 服务
启动 Open SSH 服务

现在是继续进行 LEMP 安装的时候了。由于本教程旨在成为一份全面的指南,我将把 LEMP 技术栈的安装分成多个小部分,逐步进行。

8. 首先安装 Nginx Web Server,然后启动它并通过执行以下命令验证其状态。

sudo pacman -S nginx
sudo systemctl start nginx
sudo systemctl status nginx
在 Arch Linux 中安装 Nginx
在 Arch Linux 中安装 Nginx
在 Arch Linux 中启动 Nginx
在 Arch Linux 中启动 Nginx

9. 接下来要安装的服务是 MySQL 数据库。执行以下命令安装 MySQL 数据库服务器并选择 MariaDB 引擎,然后启动并验证守护进程状态。

sudo pacman -S mysql
sudo systemctl start mysqld
sudo systemctl status mysqld
在 Arch Linux 中安装 MySQL
在 Arch Linux 中安装 MySQL

10. 下一步是为 MySQL 数据库提供高度安全的环境,方法是为 MySQL root 账户设置密码、删除匿名用户账户、移除测试数据库以及可从 localhost 外部访问的 root 账户。

运行以下命令以提高 MySQL 安全性,对于当前的 root 账户密码按 [Enter] 键,然后对所有问题回答 Yes(同时设置您的 root 账户密码)。

sudo mysql_secure_installation
在 Arch Linux 中保护 MySQL 安全
在 Arch Linux 中保护 MySQL 安全

注意:切勿将 MySQL root 账户与 Linux 系统 root 账户混淆——它们是两回事——虽然差别不大,但它们运行在不同的层级上。

要验证 MySQL 安全性,请使用 mysql -u root -p 命令语法登录数据库,提供您的 root 密码,然后使用 exit; 命令退出数据库。

mysql -u root -p
在 Arch Linux 中连接 MySQL
在 Arch Linux 中连接 MySQL

11. 现在是时候安装 PHP 服务器端脚本语言了,以便能够开发和运行复杂的动态 Web 应用程序,而不仅仅是提供 HTML/CSS 代码。

由于我们使用 Nginx 作为 Web 服务器,因此需要安装一个由 PHP-FPM 支持的模块,以便通过快速通用网关(Fast Common Gateway)进行通信并处理 PHP 脚本生成的动态内容。

执行以下命令行安装 PHP-FPM 服务,然后启动守护进程并验证状态。

sudo pacman -S php php-fpm
sudo systemctl start php-fpm
sudo systemctl status php-fpm
sudo systemctl enable php-fpm
在 Arch Linux 中安装 PHP
在 Arch Linux 中安装 PHP
在 Arch Linux 中启动 PHP
在 Arch Linux 中启动 PHP

要列出所有可用的 PHP 模块,请执行以下命令。

sudo pacman -Ss | grep php
在 Arch Linux 中列出 PHP
在 Arch Linux 中列出 PHP

12. 最后的步骤之一是安装用于 MySQL 数据库的 PhpMyAdmin Web 界面。执行以下命令安装 PhpMyAdmin 及其所需的 PHP 模块,然后为 PhpMyAdmin 的系统路径创建指向 Nginx 默认根路径的符号链接。

sudo pacman -S phpmyadmin
sudo ln -s /usr/share/webapps/phpMyAdmin  /usr/share/nginx/html
在 Arch Linux 中安装 PhpMyAdmin
在 Arch Linux 中安装 PhpMyAdmin

13. 然后配置 php.ini 文件,以包含 PhpMyAdmin 应用程序所需的必要扩展。

sudo nano /etc/php/php.ini

使用 [CTRL+W] 键定位并取消注释(删除行首的 ;)以下各行。

extension=mysqli.so
extension=mysqli
mysqli.allow_local_infile = On

在同一文件中,定位并编辑 open_basedir 指令,使其类似于以下包含的目录。

open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/etc/webapps/

14. 下一步是在 localhost Nginx 指令中启用 PHP-FPM FastCGI。执行以下命令备份 nginx.conf Web 服务器配置文件,然后用以下内容替换它。

sudo mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
sudo nano /etc/nginx/nginx.conf

将以下全部内容添加到 nginx.conf 中。

#user html;
worker_processes  2;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout  65;
    gzip  on;

    server {
        listen       80;
        server_name  localhost;
        root         /usr/share/nginx/html;
        charset      koi8-r;

        location / {
            index  index.php index.html index.htm;
            autoindex on;
            autoindex_exact_size off;
            autoindex_localtime on;
        }

        location /phpmyadmin {
            rewrite ^/* /phpMyAdmin last;
        }

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

        location ~ \.php$ {
            #fastcgi_pass 127.0.0.1:9000; (depending on your php-fpm socket configuration)
            fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
            fastcgi_index index.php;
            include fastcgi.conf;
        }

        location ~ /\.ht {
            deny  all;
        }
    }
}

15. 完成所有文件配置后,您只需重启 Nginx 和 PHP-FPM 服务,然后在浏览器中从本地节点访问 http://localhost/phpmyadmin URL,或从其他计算机访问 http://arch_IP/phpmyadmin。

sudo systemctl restart php-fpm
sudo systemctl restart nginx
在 Arch Linux 中检查 Nginx
在 Arch Linux 中检查 Nginx
在 Arch Linux 中检查 PhpMyAdmin
在 Arch Linux 中检查 PhpMyAdmin

16. 如果一切按预期运行,最后一步是使用以下命令在全系统范围内启用 LEMP。

sudo systemctl enable php-fpm
sudo systemctl enable nginx
sudo systemctl enable mysqld

恭喜!您已经在 Arch Linux 上安装并配置了 LEMP,现在您拥有了一个完整的动态界面来开始和开发 Web 应用程序。

尽管 Arch Linux 由于其面向社区的滚动发布模型,并不是最适合在生产服务器上运行的系统,但它可以成为小型非关键生产环境中非常快速且可靠的来源。