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

Arch Linux 提供了一個靈活的先進系統環境,是一個功能強大、最適合在小型非關鍵系統上開發 Web 應用程序的解決方案,因為它是完全開源的,並為伺服器和數據庫提供最新的內核和 Web 軟件發布。

Install LAMP in Arch Linux

本教程的主要範圍是指導您完成一個完整的逐步指令,最終將安裝在 Web 開發中最常用的軟件組合之一:LAMP(Linux,Apache,MySQL/MariaDB 和 PHP/PhpMyAdmin),並且將為您提供一些很好的功能(快速簡單的 Bash 腳本),這些功能在 Arch Linux 系統中不可用,但可以簡化創建多個虛擬主機,生成所需的SSL證書用於安全HTTPS事務的金鑰

需求

  1. 前面Arch Linux 安裝過程 – 略過最後一部分的 DHCP。
  2. 之前在 Arch Linux 上安裝 LEMP – 只配置靜態 IP 地址和遠程SSH訪問的部分。

步驟 1:安裝基本軟件 LAMP

1. 在使用SSH進行靜態 IP 地址和遠程系統訪問的最小系統安裝後,使用pacman工具升級您的 Arch Linux 機器。

$ sudo pacman -Syu

2. 當升級過程完成後,從頭開始安裝LAMP,首先安裝Apache Web 伺服器,並啟動/驗證每個伺服器進程守護程序。

$ sudo pacman -S apache 
$ sudo systemctl start httpd 
$ sudo systemctl status httpd
Install Apache Web Server

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
Install MySQL Database
Start MySQL Database

現在,到目前為止,您已經安裝並啟動了基本的LAMP軟件,並使用默認配置。

步驟2:安全設置MySQL數據庫

5. 下一步是通過為根帳戶設置密碼,刪除匿名使用者帳戶,刪除測試數據庫並禁止用戶根的遠程登錄來保護MySQL數據庫(按下[Enter]鍵輸入根帳戶當前密碼,並對所有安全問題答覆)。

$ sudo mysql_secure_installation
Secure MySQL Database
Set MySQL root Password

6. 通過運行以下命令來驗證MySQL數據庫的連接,然後使用quitexit語句退出數據庫 shell。

$ mysql -u root -p
Verify MySQL Database Connectivity

步驟3:修改Apache主配置文件

7. 以下配置大多與Apache Web 伺服器相關,用於為虛擬主機提供動態接口,使用PHP腳本語言,SSL或非SSL虛擬主機,可以通過修改httpd服務文件配置來完成。

首先,使用您喜歡的文本編輯器打開主Apache文件配置。

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

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

IncludeOptional conf/sites-enabled/*.conf
IncludeOptional conf/mods-enabled/*.conf
Include Virtual Host Configuration

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
Create a2eniste Apache Script

現在創建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
Create a2dissite Apache Script

10. 在創建文件後分配執行權限並將它們複製到一個$PATH可執行目錄,使它們在整個系統中可用。

$ sudo chmod +x a2ensite a2dissite
$ sudo cp a2ensite a2dissite /usr/local/bin/
Set Execute Permissions

第5步: 在Apache中創建虛擬主機.

11.在Arch Linux上,Apache Web服务器的虚拟主机默认配置文件位于httpd-vhosts.conf文件中,位于路径/etc/httpd/conf/extra/,但如果您的系统使用了大量虚拟主机,跟踪已激活的网站可以非常困难。如果要禁用一个网站,您必须注释或删除其所有指令,如果系统提供了许多网站且您的网站有更多配置指令,这可能是一项困难的任务。

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

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

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

在此处添加以下Apache指令。

<VirtualHost *:80>
        DocumentRoot "/srv/http"
        ServerName localhost
        ServerAdmin [email protected]
        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>
Create Virtual Hosts in Apache

这里最重要的语句是PortServerName指令,指示Apache在端口80上打开网络连接,并将所有使用本地主机名的请求重定向到位于路径/srv/http/的文件中。

12.创建完本地主机文件后,激活它,然后重新启动httpd守护程序以查看更改。

$ sudo a2ensite localhost
$ sudo systemctl restart httpd
Active a2ensite Script

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

Browse Apache

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

SSL(安全套接层)是一种旨在加密网络或互联网上的HTTP连接的协议,通过对称/非对称加密密钥,在Arch Linux中通过OpenSSL软件包提供了数据流通过安全通道传输。

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

但为了简化事务,我们将在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
Enable SSL with Virtual Hosting

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

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

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

<VirtualHost *:443>
        DocumentRoot "/srv/http"
        ServerName localhost
        ServerAdmin [email protected]
        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>
Create SSL Virtual Host

除了PortServerName指令外,这里的其他重要指令是指向尚未创建的SSL证书文件和SSL密钥文件的指令,因此不要重新启动Apache Web服务器,否则您将遇到一些错误。

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

$ sudo pacman -S openssl

17.然後創建以下Bash腳本,自動在系統路徑/etc/httpd/conf/ssl/中創建並存儲您所有Apache證書金鑰

$ 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
Store Apache Certificates and Keys
$ sudo chmod +x apache_gen_ssl

如果您希望該腳本在整個系統中可用,請將其複製到執行$PATH的位置。

$ sudo cp /apache_gen_ssl  /usr/local/bin/

18.現在運行腳本生成您的證書金鑰。提供您的SSL選項,並不要忘記將證書名稱和公共名稱與您的正式域名(FQDN)相匹配。

$ sudo ./apache_gen_ssl
Create Apache Certificates and Keys
Enter Certificates Details

在生成證書和金鑰之後,請不要忘記修改SSL虛擬主機證書和金鑰配置以匹配此證書的名稱。

19.最后一步是激活新的SSL虛擬主機並重新啟動您的服務器以應用配置。

$ sudo a2ensite localhost-ssl
$ sudo systemctl restart httpd
Activate SSL Virtual Host

就是這樣!為了驗證,打開瀏覽器並在URL中使用HTTPS協議添加Arch IP:https://localhosthttps://system_IP

Browse Apache over SSL

第7步:啟用Apache上的PHP

20.在Arch Linux中,默認情況下Apache僅提供HTML靜態文件內容,不支持任何動態腳本語言。要激活PHP,首先打開Apache主配置文件,然後查找並取消註釋以下LoadModule語句(在Arch Linux中,php-apachemod_mpm_event不兼容)。

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

使用[Ctrl]+[w]搜索並註釋以下行,使其看起來像這樣。

#LoadModule mpm_event_module modules/mod_mpm_event.so
Enable PHP Module

21. 然後在mods-enabled路徑中創建一個新的PHP模塊文件,內容如下。

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

添加以下內容(必須使用mod_mpm_prefork</diy5)。

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

Include conf/extra/php5_module.conf
Enable mod_mpm_prefork Module

22. 為了驗證設置,在您的DocumnetRoot(/srv/http/)中創建名為info.php的PHP文件,然後重新啟動Apache並指向您的瀏覽器到info.php文件:https://localhost/info.php

<?php

phpinfo();

?>
$ sudo systemctl restart httpd
Verify PHP Information

就是這樣!如果一切都像上面的圖片一樣,您現在已經在Apache上啟用了PHP動態服務端腳本語言,並且您現在可以開始使用像WordPress這樣的開源CMS來開發網站。

如果您想驗證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
Install and Configuring PhpMyAdmin

同一個檔案中,尋找並定位open_basedir語句,並添加PhpMyAdmin系統路徑(/etc/webapps//usr/share/webapps/)以確保PHP可以訪問和讀取這些目錄中的文件(如果您還將虛擬主機DocumentRoot路徑從/srv/http/更改為其他位置,則也需要在此處追加新路徑)。

Enable open_basedir

25. 您需要做的最後一件事情是在Virtual Hosts上添加PhpMyAdmin Apache語句以訪問PhpMyAdmin Web界面。作為一項安全措施,確保PhpMyAdmin Web界面只能從本地主機(或系統IP地址)使用HTTPS協議訪問,而不能從其他不同的虛擬主機訪問。因此,打開您的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>
Create PhpMyAdmin Virtual Host Configuration

26. 然後重新啟動Apache守護程序,將瀏覽器指向以下地址,您應該能夠訪問到PhpMyAdmin Web界面:https://localhost/phpmyadminhttps://system_IP/phpmyadmin

Access PhpMyAdmin Web Interface

27. 如果在登錄到PhpMyAdmin後,看到關於blowfish_secret的底部錯誤,打開並編輯/etc/webapps/phpmyadmin/config.inc.php文件,並插入一個像以下語句中的隨機字符串,然後刷新頁面。

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

步驟9:全系統啟用LAMP

28. 如果您希望LAMP堆棧在系統重新啟動後自動啟動,運行以下命令。

$ sudo systemctl enable httpd mysqld
Enable LAMP System Wide

這些是在LAMP上的一些主要配置設置,它們需要將 Arch Linux 系統轉換為一個簡單但功能強大、快速且穩健的網絡平台,使用最先進的伺服器軟體,適用於小型非關鍵環境。但如果你执意要將其用於大型生產環境,請準備充足的耐心,並密切關注軟體更新,製作定期系統備份映像,以便在系統故障時快速恢復系統。

Source:
https://www.tecmint.com/install-lamp-in-arch-linux/