在 Arch Linux 中安装 LEMP(Nginx、PHP、带 MariaDB 引擎的 MySQL 和 PhpMyAdmin)
由于其滚动发布模型采用了尖端软件,Arch Linux 的设计和开发并不是为了作为服务器运行来提供可靠的网络服务,因为它需要额外的时间进行维护、持续升级和合理的文件配置。
但是,由于 Arch Linux 附带了 CD 核心安装,并且预装了最少的软件,因此它可以代表安装当今大多数流行网络服务的坚实基础启动点,其中包括< b>LEMP 或 LAMP、Apache Web 服务器、Nginx、PHP、SQL 数据库、Samba、FTP 服务器、BIND 等,其中许多由 Arch Linux 官方存储库和来自 AUR 的其他存储库。
本教程将指导使用 SSH 远程安装和配置 LEMP 堆栈(Nginx、PHP、带有 MariaDB 引擎的 MySQL 和 PhpMyAdmin),这可以为构建 Web 服务器应用程序提供坚实的基础。
要求
之前的 Arch Linux 安装指南,除了关于使用 DHCP 联网的最后部分。
第 1 步:在网络接口上分配静态 IP
1. 最小化 Arch Linux 核心安装后,重新启动服务器,使用 root 帐户或同等管理 sudo 帐户登录,并使用 ip 链接 识别您的系统 NIC 设备名称 命令。
ip link
2. 要分配静态网络配置,我们将使用 Netctl 包来管理网络连接。成功识别网络接口名称后,将ethernet-static文件模板复制到netctl系统路径并将其名称更改为描述性命名方案(尝试通过发出以下命令来使用“static”字符串与 NIC 名称相结合。
cp /etc/netctl/examples/ethenet-static /etc/netctl/static.ens33
3.下一步是通过更改文件指令并提供您的实际网络设置(接口、IP/网络掩码、网关、广播、DNS)来编辑此新模板文件,如下面的摘录所示。
nano /etc/netctl/static.ens33
Description='A basic static ethernet connection for ens33'
Interface=ens33
Connection=ethernet
IP=static
Address=('192.168.1.33/24')
Gateway='192.168.1.1'
Brodcast='192.168.1.255'
DNS=('192.168.1.1' '8.8.8.8')
4.下一步是通过netctl系统工具启动网络连接,并通过发出以下命令验证系统连接。
netctl start static.ens33
netctl status static.ens33
5.如果您获得有效的绿色退出状态,则表示您已成功配置您的网络接口,并且是时候在系统范围的服务上自动启用它了。还可以通过针对域名运行 ping 命令来测试您的网络,并安装 net-tools 软件包(该软件包最著名的功能是 ifconfig 命令,Arch开发人员认为有点不推荐使用,并将其替换为 iproute2)。
启用系统范围的 NIC 配置
netctl enable static.ens33
安装网络工具包
pacman -S net-tools
6.现在您可以运行ifconfig命令来验证您的网络接口设置并检查所有内容是否正确显示,然后重新启动 您的系统,确保一切就位并正确配置。
ping linux-console.net
第 2 步:安装 LEMP 软件
正如本文介绍中所指出的,LEMP 代表 Linux+Nginx+PHP/PhpMyAdmin+MySQL/MariaDB,它是继 LAMP(与方程式中的 Apache 相同的堆栈)。
7.在实际安装LEMP堆栈之前,我们需要更新系统,然后获得对Arch Linux服务器的远程控制。您可能知道 OpenSSH 是这项工作的主要候选者,因此请继续安装它,启动 SSH 守护程序并在系统范围内启用它。
sudo pacman -Syu
sudo pacman –S openssh
sudo systemctl start sshd
sudo systemctl status sshd
sudo systemctl enable sshd
现在是时候继续安装LEMP了。因为本教程旨在作为综合指南,所以我将逐步将 LEMP 堆栈安装分成小部分。
8. 首先安装 Nginx Web Server,然后启动它并通过发出以下命令验证其状态。
sudo pacman -S nginx
sudo systemctl start nginx
sudo systemctl status nginx
9.下一个要安装的服务是MySQL数据库。发出以下命令安装 MySQL 数据库服务器并选择 MariaDB 引擎,然后启动并验证守护进程状态。
sudo pacman -S mysql
sudo systemctl start mysqld
sudo systemctl status mysqld
10.下一步是通过为 MySQL root 帐户提供密码、删除匿名用户帐户、删除可从外部本地主机访问的测试数据库和 root 帐户,为 MySQL 数据库提供高度安全的环境。运行以下命令以提高 MySQL 安全性,按 [Enter] 输入当前 root 帐户密码,然后对所有问题回答是(同时设置您的 root 帐户密码)。
sudo mysql_secure_installation
注意:无论如何,不要将 MySQL root 帐户与 Linux 系统 root 帐户混淆——它们是两个不同的东西——差别不大,但它们运行在不同的级别上。
要使用 mysql -u root -p 命令语法验证 MySQL 安全登录到数据库,请提供 root 密码,然后使用 exit; 命令离开数据库。
mysql -u root -p
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
要列出所有可用的 PHP 模块,请发出以下命令。
sudo pacman –S php[TAB]
sudo pacman –Ss | grep php
12. 最后步骤之一是为 MySQL 数据库安装 PhpMyAdmin Web Interface。发出以下命令来安装 PhpMyAdmin 及其 PHP 所需模块,然后为 PhpMyaAdmin 系统路径创建到 Nginx 默认根路径的符号链接。
pacman -S phpmyadmin php-mcrypt
sudo ln -s /usr/share/webapps/phpMyAdmin /usr/share/nginx/html
13. 然后配置 php.ini 文件以包含 PhpMyAdmin 应用程序所需的必要扩展。
sudo nano /etc/php/php.ini
使用 [CTRL+W] 键找到并取消注释(删除行开头的 ;)以下行。
extension=mysqli.so
extension=mysql.so
extension=mcrypt.so
mysqli.allow_local_infile = On
在同一文件中,找到并编辑 open_basedir 指令以类似于以下包含的目录。
open_basedir= /srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/etc/webapps/
14. 下一步是在本地主机 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 0;
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
16.如果一切按预期运行,最后一步是使用以下命令在系统范围内启用LEMP。
sudo systemctl enable php-fpm
sudo systemctl enable nginx
sudo systemctl enable mysqld
恭喜!您已在 Arch Linux 上安装并配置了 LEMP,现在您拥有完整的动态界面来开始和开发 Web 应用程序。
尽管由于其面向社区的滚动发布模型,Arch Linux 并不是最适合在生产服务器上运行的系统,但它可以成为小型非关键生产环境的非常快速且可靠的来源。