网站搜索

在 Arch Linux 中安装 LAMP(Linux、Apache、MySQL/MariaDB 和 PHP/PhpMyAdmin)


Arch Linux 提供了灵活的尖端系统环境,并且是在小型非关键系统上开发 Web 应用程序的强大且最适合的解决方案,因为它是一个完整的开源软件,并提供了内核和 Web 软件的最新版本。服务器和数据库。

本教程的主要范围是指导您完成完整的分步说明,最终将引导您安装 Web 开发中最常用的软件组合之一:LAMP(Linux、Apache、MySQL/MariaDB 和PHP/PhpMyAdmin ),它将向您展示一些 Arch Linux 系统中不存在的不错的功能(快速而肮脏的 Bash 脚本),但可以简化创建多个虚拟主机的工作,生成安全HTTS交易所需的SSL证书密钥

要求

  1. 之前的 Arch Linux 安装过程 – 跳过最后一部分 DHCP。
  2. 之前在 Arch Linux 上安装 LEMP – 仅配置静态 IP 地址和远程SSH 访问部分。

第1步:安装基础软件LAMP

1. 使用静态 IP 地址安装最小系统并使用 SSH 进行远程系统访问后,使用 pacman 实用程序升级您的 Arch Linux 机器。

sudo pacman -Syu

2. 当升级过程完成安装 LAMP 后,首先安装 Apache Web Server 并启动/验证每个服务器进程守护进程。

sudo pacman -S apache 
sudo systemctl start httpd 
sudo systemctl status httpd

3.安装PHP动态服务器端脚本语言及其Apache模块。

sudo pacman -S php php-apache

4. 在最后一步安装 MySQL 数据库,选择 1 (MariaDB) 社区数据库分支,然后启动并检查守护进程状态。

sudo pacman -S mysql 
sudo systemctl start mysqld 
sudo systemctl status mysqld

现在您已经安装了基本的 LAMP 软件,并开始使用默认配置。

第 2 步:保护 MySQL 数据库

5.下一步是通过为 root 帐户设置密码、删除匿名用户帐户、删除测试数据库并禁止用户 root 远程登录(按 [ 输入]根帐户当前密码的密钥,并在所有安全问题上回答)。

sudo mysql_secure_installation

6. 通过运行以下命令验证 MySQL 数据库连接,然后使用 quitexit 语句离开数据库 shell。

mysql -u root -p

第三步:修改Apache主配置文件

7.以下配置大部分与Apache Web Server相关,为使用PHP脚本语言、SSL或虚拟主机提供动态接口非 SSL 虚拟主机,可以通过修改 httpd 服务文件配置来完成。

首先使用您最喜欢的文本编辑器打开主 Apache 文件配置。

sudo nano /etc/httpd/conf/httpd.conf

在文件的最底部添加以下两行。

IncludeOptional conf/sites-enabled/*.conf
IncludeOptional conf/mods-enabled/*.conf

这里 Include 语句的作用是告诉 Apache,从现在开始,它应该从 /etc/httpd/conf/sites-enabled/ 中的所有文件中读取进一步的配置>(对于虚拟主机)和/etc/httpd/conf/mods-enabled/(对于启用的服务器模块)以结尾的系统路径.conf 扩展名。

8. 在 Apache 接受这两个指令的指示后,创建必要的系统目录并发出以下命令。

sudo mkdir /etc/httpd/conf/sites-available
sudo mkdir /etc/httpd/conf/sites-enabled
sudo mkdir /etc/httpd/conf/mods-enabled

sites-available 路径包含所有未在 Apache 上激活的虚拟主机配置文件,但下一个 Bash 脚本将使用此目录来链接并启用位于此处的网站。

步骤 4:创建 a2eniste 和 a2diste Apache 命令

9. 现在是时候创建 a2ensitea2dissite Apache 脚本,它们将用作启用或禁用虚拟主机配置文件的命令。输入 cd 命令返回到您的 $HOME 用户路径并使用您的 bash a2enistea2dissite 脚本创建最喜欢的编辑器。

sudo nano a2ensite

在此文件中添加以下内容。

#!/bin/bash
if test -d /etc/httpd/conf/sites-available && test -d /etc/httpd/conf/sites-enabled  ; then
echo "-------------------------------"
else
mkdir /etc/httpd/conf/sites-available
mkdir /etc/httpd/conf/sites-enabled
fi

avail=/etc/httpd/conf/sites-available/$1.conf
enabled=/etc/httpd/conf/sites-enabled
site=`ls /etc/httpd/conf/sites-available/`

if [ "$#" != "1" ]; then
        echo "Use script: n2ensite virtual_site"
        echo -e "\nAvailable virtual hosts:\n$site"
        exit 0
else
if test -e $avail; then
sudo ln -s $avail $enabled
else
echo -e "$avail virtual host does not exist! Please create one!\n$site"
exit 0
fi
if test -e $enabled/$1.conf; then
echo "Success!! Now restart Apache server: sudo systemctl restart httpd"
else
echo  -e "Virtual host $avail does not exist!\nPlease see avail virtual hosts:\n$site"
exit 0
fi
fi

现在创建 a2dissite bash 脚本文件。

sudo nano a2dissite

追加以下内容。

#!/bin/bash
avail=/etc/httpd/conf/sites-enabled/$1.conf
enabled=/etc/httpd/conf/sites-enabled
site=`ls /etc/httpd/conf/sites-enabled`

if [ "$#" != "1" ]; then
        echo "Use script: n2dissite virtual_site"
        echo -e "\nAvailable virtual hosts: \n$site"
        exit 0
else
if test -e $avail; then
sudo rm  $avail
else
echo -e "$avail virtual host does not exist! Exiting"
exit 0
fi
if test -e $enabled/$1.conf; then
echo "Error!! Could not remove $avail virtual host!"
else
echo  -e "Success! $avail has been removed!\nsudo systemctl restart httpd"
exit 0
fi
fi

10. 文件创建后,分配执行权限并将它们复制到 ` PATH 可执行目录,以使它们在系统范围内可用。

sudo chmod +x a2ensite a2dissite
sudo cp a2ensite a2dissite /usr/local/bin/

第5步:在Apache中创建虚拟主机

11.Arch Linux 上 Apache Web 服务器的虚拟主机默认配置文件由位于 /etc/httpd/conf/extra 中的 httpd-vhosts.conf 文件提供/ 路径,但如果您的系统使用大量虚拟主机,则很难跟踪哪些网站已激活或未激活。如果您想禁用一个网站,您必须注释或删除其所有指令,如果您的系统提供大量网站并且您的网站有更多配置指令,那么这可能是一项艰巨的任务。

使用 sites-availablesites-enabled 路径,大大简化了启用禁用网站的工作,并且还保留了您的所有网站配置文件,无论它们是否激活。

下一步,我们将构建第一个指向默认 localhost 的虚拟主机,并使用默认的 DocumentRoot 路径来提供网站文件 (/srv/http.

sudo nano /etc/httpd/conf/sites-available/localhost.conf

在此处添加以下 Apache 指令。

<VirtualHost *:80>
        DocumentRoot "/srv/http"
        ServerName localhost
        ServerAdmin [email 
        ErrorLog "/var/log/httpd/localhost-error_log"
        TransferLog "/var/log/httpd/localhost-access_log"

<Directory />
    Options +Indexes +FollowSymLinks +ExecCGI
    AllowOverride All
    Order deny,allow
    Allow from all
Require all granted
</Directory>

</VirtualHost>

这里最重要的语句是 PortServerName 指令,它们指示 Apache 在端口 80 上打开网络连接,并将所有具有 localhost 名称的查询重定向到提供位于 /srv/http/ 路径中的文件。

12. 创建 localhost 文件后,激活它,然后重新启动 httpd 守护进程以查看更改。

sudo a2ensite localhost
sudo systemctl restart httpd

13. 然后将浏览器指向 http://localhost(如果您从 Arch 系统运行它)或 http://Arch_IP(如果您使用远程系统。

第 6 步:在 LAMP 上为虚拟主机启用 SSL

SSL安全套接字层)是一种协议,旨在对网络或 Internet 上的 HTTP 连接进行加密,使数据流使用对称/非对称加密密钥在安全通道上传输在 Arch Linux 中由 OpenSSL 包提供。

14. 默认情况下,Arch Linux 中的 Apache 上未启用 SSL 模块,可以通过取消注释主 httpd.conf 中的 mod_ssl.so 模块来激活配置文件和位于额外 httpd 路径中的包含 httpd-ssl.conf 文件。

但为了简化事情,我们将在 mods-enabled 路径中为 SSL 创建一个新的模块文件,并保持 Apache 主配置文件不变。为 SSL 模块创建以下文件并添加以下内容。

sudo nano /etc/httpd/conf/mods-enabled/ssl.conf

追加以下内容。

LoadModule ssl_module modules/mod_ssl.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

Listen 443

SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
SSLPassPhraseDialog  builtin
SSLSessionCache        "shmcb:/run/httpd/ssl_scache(512000)"
SSLSessionCacheTimeout  300

15. 现在创建一个指向相同 localhost 名称但这次使用 SSL 服务器配置的虚拟主机文件,并稍微更改其名称以提醒您它代表带有 SSL 的 localhost。

sudo nano /etc/httpd/conf/sites-available/localhost-ssl.conf

在此文件中添加以下内容。

<VirtualHost *:443>
        DocumentRoot "/srv/http"
        ServerName localhost
        ServerAdmin [email 
        ErrorLog "/var/log/httpd/localhost-ssl-error_log"
        TransferLog "/var/log/httpd/localhost-ssl-access_log"

SSLEngine on

SSLCertificateFile "/etc/httpd/conf/ssl/localhost.crt"
SSLCertificateKeyFile "/etc/httpd/conf/ssl/localhost.key"

<FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
</FilesMatch>

<Directory "/srv/http/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>

BrowserMatch "MSIE [2-5]" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0

CustomLog "/var/log/httpd/ssl_request_log" \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

<Directory />

    Options +Indexes +FollowSymLinks +ExecCGI
    AllowOverride All
    Order deny,allow
    Allow from all
Require all granted
</Directory>

</VirtualHost>

除了PortServerName指令之外,这里的其他重要指令是指向SSL证书文件和SSL密钥文件的指令尚未创建,因此请勿重新启动 Apache Web Server,否则您会收到一些错误。

16. 要创建所需的 SSL 证书文件和密钥,请安装 OpenSSL 软件包,发出以下命令。

sudo pacman -S openssl

17. 然后创建以下 Bash 脚本,该脚本会自动创建并在 中存储您的所有 Apache 证书密钥 >/etc/httpd/conf/ssl/ 系统路径。

sudo nano apache_gen_ssl

添加以下文件内容,然后保存并使其可执行。

#!/bin/bash
mkdir /etc/httpd/conf/ssl
cd /etc/httpd/conf/ssl

echo -e "Enter your virtual host FQDN: \nThis will generate the default name for Nginx  SSL certificate!"
read cert

openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out $cert.key
chmod 600 $cert.key
openssl req -new -key $cert.key -out $cert.csr
openssl x509 -req -days 365 -in $cert.csr -signkey $cert.key -out $cert.crt

echo -e " The certificate "$cert" has been generated!\nPlease link it to Apache SSL available website!"

ls -all /etc/httpd/conf/ssl
exit 0

sudo chmod +x apache_gen_ssl

如果您希望脚本在系统范围内可用,请将其复制到可执行文件` PATH

sudo cp /apache_gen_ssl  /usr/local/bin/

18. 现在通过运行脚本生成您的证书密钥。提供您的 SSL 选项,不要忘记证书名称和通用名称以匹配您的官方域 (FQDN)。

sudo ./apache_gen_ssl

创建证书和密钥后,请不要忘记修改您的 SSL 虚拟主机证书和密钥配置以匹配该证书的名称。

19.最后一步是激活新的 SSL 虚拟主机并重新启动服务器以应用配置。

sudo a2ensite localhost-ssl
sudo systemctl restart httpd

就是这样!要验证它,请打开浏览器并使用 HTTPS 协议在 URL 上添加 Arch IP:https://localhosthttps://system_IP

第 7 步:在 Apache 上启用 PHP

20. 默认情况下,Apache 仅在 Arch Linux 中提供 HTML 静态文件内容,不支持动态脚本语言。要激活 PHP,首先打开 Apache 主配置文件,然后搜索并取消注释以下 LoadModule 语句(php-apache 不适用于 Arch Linux 中的 mod_mpm_event )。

sudo nano /etc/httpd/conf/httpd.conf

使用 [Ctrl]+[w] 搜索并注释以下行,如下所示。

#LoadModule mpm_event_module modules/mod_mpm_event.so

21. 然后在 mods-enabled 路径中为 PHP 模块创建一个新文件,其中包含以下内容。

sudo nano /etc/httpd/conf/mods-enabled/php.conf

添加以下内容(您必须使用 mod_mpm_prefork)。

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
LoadModule php5_module modules/libphp5.so

Include conf/extra/php5_module.conf

22. 要验证设置,请在 DocumnetRoot (/srv/http/) 中创建一个名为 info.php 的 PHP 文件,然后重新启动 Apache 并指向您的浏览器访问 info.php 文件:https://localhost/info.php

<?php

phpinfo();

?>
sudo systemctl restart httpd

就是这样!如果一切如上图所示,那么您现在已经在 Apache 上启用了 PHP 动态服务器端脚本语言,并且您现在可以使用开源 CMS(例如 WordPress)来开发网站。

如果要验证 Apache 语法配置并查看已加载模块的列表而不重新启动 httpd 守护程序,请运行以下命令。

sudo apachectl configtest
sudo apachectl -M

第8步:安装和配置PhpMyAdmin

23.如果您不掌握 MySQL 命令行,并且希望通过 Web 界面简单地远程访问 MySQL 数据库,那么您需要在 Arch 盒子上安装 PhpMyAdmin 软件包。

sudo pacman -S phpmyadmin php-mcrypt

24. 安装软件包后,您需要启用一些 PHP 扩展(mysqli.somcrypt.so – 用于内部身份验证)并您还可以启用未来 CMS 平台所需的其他模块,例如 openssl.soimap.soiconv.so 等。

sudo nano /etc/php/php.ini

找到并取消注释上述扩展。

extension=mcrypt.so
extension=mssql.so
extension=mysqli.so
extension=openssl.so
extension=iconv.so
extension=imap.so
extension=zip.so
extension=bz2.so

另外,在同一文件中,搜索并找到 open_basedir 语句并添加 PhpMyAdmin 系统路径(/etc/webapps//usr/share/webapps/ >)以确保 PHP 可以访问和读取这些目录下的文件(如果您还将虚拟主机 DocumentRoot 路径从 /srv/http/ 更改为另一个位置,您也需要在此处附加新路径)。

25. 为了访问 PhpMyAdmin Web 界面,您需要做的最后一件事是在虚拟主机上添加 PhpMyAdmin Apache 语句。作为一项安全措施,将确保 PhpMyAdmin Web 界面只能使用 HTTPS 协议从本地主机(或系统 IP 地址)访问,而不能从其他不同的虚拟主机访问。因此,打开您的 localhost-ssl.conf Apache 文件,并在底部的最后一个 语句之前添加以下内容。

sudo nano /etc/httpd/conf/sites-enabled/localhost-ssl.conf
Alias /phpmyadmin "/usr/share/webapps/phpMyAdmin"

<Directory "/usr/share/webapps/phpMyAdmin">
    DirectoryIndex index.html index.php
    AllowOverride All
    Options FollowSymlinks
    Require all granted
</Directory>

26. 然后重新启动 Apache 守护进程并将浏览器指向以下地址,您应该能够访问您的 PhpMyAdmin Web 界面:https://localhost/phpmyadminhttps://system_IP/phpmyadmin

27. 如果您登录 PhpMyAdmin 后,看到有关 blowfish_secret 的底部错误,请打开并编辑 /etc/webapps/phpmyadmin/config.inc。 php 文件并插入一个随机字符串,如以下语句中的字符串,然后刷新页面。

$cfg['blowfish_secret'] = ‘{^QP+-(3mlHy+Gd~FE3mN{gIATs^1lX+T=KVYv{ubK*U0V’ ;

第 9 步:在系统范围内启用 LAMP

28. 如果您希望 LAMP 堆栈在系统重新引导后自动启动,请运行以下命令。

sudo systemctl enable httpd mysqld

这是 LAMP 上的一些主要配置设置,需要将 Arch Linux 系统转变为一个简单但功能强大、快速且健壮的 Web 平台,并配备适合小型非小型企业的尖端服务器软件。 - 关键环境,但如果您顽固地仍然想在大型生产环境中使用它,您应该有足够的耐心,特别注意软件包更新,并定期制作系统备份映像,以便在出现问题时快速恢复系统系统故障。