ウェブサイト検索

Arch Linux への LAMP (Linux、Apache、MySQL/MariaDB、および PHP/PhpMyAdmin) のインストール


Arch Linux は柔軟な最先端のシステム環境を提供し、完全なオープンソースであり、カーネルと Web ソフトウェアの最新リリースを提供するため、小規模で重要ではないシステムでの Web アプリケーションの開発に最適な強力なソリューションです。サーバーとデータベース。

このチュートリアルの主な目的は、完全なステップバイステップの手順をガイドすることであり、最終的には Web 開発で最もよく使用されるソフトウェアの組み合わせの 1 つであるLAMP (Linux、Apache、MySQL/MariaDB、およびPHP/PhpMyAdmin ) を使用すると、Arch Linux システムには存在しない優れた機能 (高速かつ汚い Bash スクリプト) が提供されますが、複数の仮想ホスト を作成する作業を容易にすることができます。 、 安全なHTTPS トランザクションに必要な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 サーバー をインストールし、すべてのサーバー プロセス デーモンを起動/確認します。

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 アカウントのパスワードを設定して MySQL データベースを保護し、匿名ユーザー アカウントを削除し、テスト データベースを削除して、root ユーザーのリモート ログインを禁止します ([ を押します)。 root アカウントの現在のパスワードを入力] キーを入力し、すべてのセキュリティの質問に はい と答えます)。

sudo mysql_secure_installation

6. 次のコマンドを実行して MySQL データベースの接続を確認し、quit または exit ステートメントでデータベース シェルを終了します。

mysql -u root -p

ステップ 3: Apache メイン設定ファイルを変更する

7. 次の設定のほとんどは、PHP スクリプト言語、SSL、または非 SSL 仮想ホストでは、httpd サービス ファイルの構成を変更することで実行できます。

まず、お気に入りのテキスト エディタでメインの Apache ファイル設定を開きます。

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

ファイルの一番下に、次の 2 行を追加します。

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

ここでの Include ステートメントの役割は、今後は /etc/httpd/conf/sites-enabled/ にあるすべてのファイルからさらに設定を読み取る必要があることを Apache に伝えることです。 > (仮想ホスティングの場合) および /etc/httpd/conf/mods-enabled/ (有効なサーバー モジュールの場合) システム パスは次で終わります。 .conf 拡張子。

8. Apache にこの 2 つのディレクティブを指示した後、次のコマンドを実行して必要なシステム ディレクトリを作成します。

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 スクリプトはこのディレクトリを使用して、そこにある Web サイトをリンクして有効にします。

ステップ 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

次に、2dissite 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 ファイルによって提供されます。 / パスですが、多くの仮想ホストを使用するシステムがある場合、どの Web サイトがアクティブ化されているかどうかを追跡するのが非常に困難になる可能性があります。 Web サイトを無効 にしたい場合は、そのディレクティブをすべてコメントするか削除する必要があります。システムが多数の Web サイトを提供し、Web サイトにさらに多くの構成ディレクティブがある場合、これは困難な任務になる可能性があります。

サイト利用可能 パスと サイト有効 パスを使用すると、Web サイトを有効 または無効 にする作業が大幅に簡素化され、また、アクティブ化されているかどうかにかかわらず、すべての Web サイト設定ファイル。

次のステップでは、Web サイト ファイル (/srv/http) を提供するためのデフォルトの DocumentRoot パスを持つデフォルトの localhost を指す最初の仮想ホストを構築します。

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>

ここで最も重要なステートメントは、Apache にポート 80 でネットワーク接続を開き、ローカルホスト名を持つすべてのクエリをリダイレクトするように指示する PortServerName ディレクティブです。 /srv/http/ パスにあるファイルを提供します。

12. localhost ファイルが作成されたら、それをアクティブ化し、httpd デーモンを再起動して変更を表示します。

sudo a2ensite localhost
sudo systemctl restart httpd

13. 次に、ブラウザで http://localhost (Arch システムから実行する場合) または http://Arch_IP (Arch システムから実行する場合) を指定します。リモートシステム。

ステップ 6: LAMP の仮想ホスティングで SSL を有効にする

SSL (Secure Sockets Layer) は、ネットワークまたはインターネット上の HTTP 接続を暗号化するように設計されたプロトコルです。これにより、対称/非対称暗号キーを使用して安全なチャネル上でデータ フローが送信されます。 Arch Linux ではOpenSSL パッケージによって提供されます。

14. デフォルトでは、Arch Linux の Apache では SSL モジュールが有効になっていません。メインの httpd.conf から mod_ssl.so モジュールのコメントを解除することで有効にできます。設定ファイルと、追加の httpd パスにあるInclude httpd-ssl.conf ファイルを追加します。

ただし、話を簡素化するために、mods が有効になっている パスに 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 サーバーを再起動しないでください。再起動しないと、エラーが発生します。

16. 必要な SSL 証明書ファイルとキーを作成するには、以下のコマンドを実行して OpenSSL パッケージをインストールします。

sudo pacman -S openssl

17. 次に、すべての Apache 証明書キー を自動的に作成して に保存する次の Bash スクリプトを作成します。 >/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. 次に、次の内容を含む PHP モジュールの新しいファイルを MOD が有効 なパスに作成します。

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/) に PHP で info.php という名前のファイルを作成し、Apache を再起動してブラウザで info.php ファイルにコピーします: https://localhost/info.php

<?php

phpinfo();

?>
sudo systemctl restart httpd

それでおしまい!すべてが上の画像のようであれば、Apache で PHP 動的サーバーサイド スクリプト言語が有効になっており、たとえばWordPress などのオープンソース CMS を使用して Web サイトを開発できるようになります。

httpd デーモンを再起動せずに Apache 構文構成を確認し、ロードされたモジュールのリストを確認したい場合は、次のコマンドを実行します。

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 – 内部認証用) を有効にする必要があります。また、openssl.soimap.soiconv.so など、将来の CMS プラットフォームに必要な他のモジュールを有効にすることもできます。

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

これは、Arch Linux システムを、小規模な非営利向けの最先端のサーバー ソフトウェアを備えた、シンプルで強力、高速かつ堅牢な Web プラットフォームに変換するために必要な LAMP の主な構成設定の一部です。 -クリティカルな環境。ただし、頑固で大規模な運用環境で使用したい場合は、十分な忍耐力を身につけ、パッケージの更新に特別な注意を払い、システムを迅速に復元できるように定期的にシステム バックアップ イメージを作成する必要があります。システム障害。