在 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证书和密钥。
要求
- 之前的 Arch Linux 安装过程 – 跳过最后一部分 DHCP。
- 之前在 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 数据库连接,然后使用 quit 或 exit 语句离开数据库 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. 现在是时候创建 a2ensite 和 a2dissite Apache 脚本,它们将用作启用或禁用虚拟主机配置文件的命令。输入 cd 命令返回到您的 $HOME 用户路径并使用您的 bash a2eniste 和 a2dissite 脚本创建最喜欢的编辑器。
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-available 和 sites-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>
这里最重要的语句是 Port 和 ServerName 指令,它们指示 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>
除了Port和ServerName指令之外,这里的其他重要指令是指向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://localhost 或 https://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.so、mcrypt.so – 用于内部身份验证)并您还可以启用未来 CMS 平台所需的其他模块,例如 openssl.so、imap.so 或 iconv.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/phpmyadmin 或 https://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 平台,并配备适合小型非小型企业的尖端服务器软件。 - 关键环境,但如果您顽固地仍然想在大型生产环境中使用它,您应该有足够的耐心,特别注意软件包更新,并定期制作系统备份映像,以便在出现问题时快速恢复系统系统故障。