在 Arch Linux 中安装 LEMP(Nginx、PHP、带有 MariaDB 引擎的 MySQL 和 PhpMyAdmin)
由于其滚动发布模式包含了尖端软件,Arch Linux并不是为作为服务器运行以提供可靠的网络服务而设计和开发的,因为它需要额外的时间进行维护、不断升级和合理的文件配置。
但是,由于Arch Linux附带一个预装了最少软件的 CD 核心安装,它可以作为安装当今大多数流行网络服务的坚实基础启动点,其中包括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 link命令识别系统 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
安装 net-tools 包
# pacman -S net-tools
6.现在您可以运行ifconfig命令来验证您的网络接口设置并检查是否一切都正确显示,然后重新启动系统以确保一切就绪并正确配置。
# ping example.com
第 2 步:安装 LEMP 软件
正如本文介绍中所指出的,LEMP代表 Linux+Nginx+PHP/PhpMyAdmin+MySQL/MariaDB,它是当今继LAMP(与 Apache 同属一个堆栈)之后传播最广泛的 Web 应用平台之一。
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 服务器,然后通过发出以下命令启动它并验证其状态。
$ 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 根帐户提供密码、删除匿名用户帐户、删除可从本地主机外部访问的测试数据库和根帐户,为 MySQL 数据库提供高度安全的环境。运行以下命令来提高 MySQL 安全性,按 [ Enter ] 输入当前根帐户密码,然后对所有问题回答“是”(还设置您的根帐户密码)。
$ sudo mysql_secure_installation
注意:无论如何不要将 MySQL 根帐户与 Linux 系统根帐户混淆——它们是两个不同的东西——差别不大,但它们在不同的级别上运行。
要使用mysql -u root -p命令语法验证 MySQL 安全登录数据库,提供您的 root 密码,然后使用exit;命令离开数据库。
# mysql -u root -p
11.现在是时候安装PHP服务器端脚本语言了,以便能够开发和运行复杂的动态 Web 应用程序,而不仅仅是提供HTML/CSS代码。
因为我们使用Nginx作为 Web 服务器,所以我们需要安装PHP-FPM支持的模块,以便通过快速通用网关进行通信并更改 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 界面。发出以下命令安装 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.下一步是在 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 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由于其面向社区的滚动发布模式并不是最适合在生产服务器上运行的系统,但对于小型非关键生产环境来说,它可以是一个非常快速且可靠的来源。