网站搜索

在 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.完成所有文件配置后,您需要做的就是重新启动NginxPHP-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 并不是最适合在生产服务器上运行的系统,但它可以成为小型非关键生产环境的非常快速且可靠的来源。