Arch LinuxにLAMP(Linux、Apache、MySQL/MariaDB、およびPHP/PhpMyAdmin)をインストールする方法

Arch Linuxは柔軟で最新のシステム環境を提供し、小規模で非クリティカルなシステム上でのWebアプリケーション開発に最適なソリューションです。これは完全なオープンソースであり、サーバーやデータベースのためのカーネルやWebソフトウェアの最新リリースを提供しています。

Install LAMP in Arch Linux

このチュートリアルの主な目的は、Web開発で最も使用されるソフトウェアの組み合わせの1つをインストールするためのステップバイステップの手順を案内することです:LAMP(Linux、Apache、MySQL/MariaDB、およびPHP/PhpMyAdmin)、そしてArch Linuxシステムには存在しないが、複数の仮想ホストを作成する際に役立ついくつかの便利な機能(クイックで汚いBashスクリプト)を紹介します。また、SSL証明書を生成し、セキュアなHTTSトランザクションに必要なキーを生成します。

要件

  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
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]キーを押し、すべてのセキュリティ質問にYesと回答します)。

$ sudo mysql_secure_installation
Secure MySQL Database
Set MySQL root Password

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

$ mysql -u root -p
Verify MySQL Database Connectivity

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

7. 以下の設定のほとんどはApache Web Serverに関連しており、PHPスクリプト言語を使用した仮想ホスティング、SSLまたは非SSL仮想ホストのダイナミックインターフェースを提供するためにhttpdサービスファイルの設定を変更することで行います。

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

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

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

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.これらの2つのディレクティブで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: a2ensiteおよびa2dissite Apacheコマンドを作成します

9.これで、有効または無効にする仮想ホスト構成ファイルのコマンドとして機能するa2ensiteおよびa2dissite Apacheスクリプトを作成する時です。 cdコマンドを使用して$HOMEユーザーパスに戻り、お気に入りのエディタを使用してbasha2ensiteおよび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
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のパスを使用することで、ウェブサイトの有効化無効化を大幅に簡略化することができ、アクティブ化されているかどうかに関わらず、すべてのウェブサイトの設定ファイルを維持できます。

次のステップでは、デフォルトのlocalhostにポイントし、ウェブサイトファイルを提供するためのデフォルト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

ここで最も重要なステートメントはPortおよびServerNameディレクティブで、Apacheにポート80でネットワーク接続を開かせ、localhost名でのすべてのクエリを/srv/http/パスにあるファイルを提供するようにリダイレクトします。

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

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

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

Browse Apache

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

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

14.デフォルトでは、Arch LinuxのApacheにはSSLモジュールが有効になっておらず、メインのhttpd.conf構成ファイルからmod_ssl.soモジュールのコメントアウトを外し、追加のhttpdパスにあるhttpd-ssl.confファイルを含めることで有効化できます。

しかし、より簡単にするために、SSLモジュール用の新しいモジュールファイルをmods-enabledパスに作成し、メインの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.次に、同じlocalhost名を指すがこの時はSSLサーバー構成を使用する仮想ホストファイルを作成し、その名前を少し変更してlocalhostに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

ポートとサーバー名ディレクティブ以外に、ここで重要なディレクティブはまだ作成されていないSSL証明書ファイルおよびSSLキーファイルを指すディレクティブですので、Apache Webサーバーを再起動しないでください。それとそうしないとエラーが発生します。

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

スクリプトをシステム全体で利用可能にしたい場合は、実行可能な $PATH にコピーします。

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

18. 今、スクリプトを実行して証明書とキーを生成します。SSL オプションを提供し、証明書名と公式ドメイン(FQDN)に一致するように Common Name を忘れずに指定してください。

$ 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

以上です!検証するには、ブラウザを開いて Arch IP を HTTPS プロトコルを使用して URL に追加します:https://localhost または https://system_IP

Browse Apache over SSL

Step 7: Apache で PHP を有効にする

20. デフォルトでは、Apache は Arch Linux で HTML 静的ファイルコンテンツのみを提供し、動的スクリプト言語のサポートはありません。PHP を有効にするには、まず Apache のメイン構成ファイルを開き、次の LoadModule ステートメントを検索してコメント解除します(Arch Linux では php-apache は mod_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を使用してください)。

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.設定を確認するために、DocumentRoot(/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コマンドラインをマスターしておらず、ウェブインターフェースを通じてMySQLデータベースに簡単なリモートアクセスをしたい場合は、ArchボックスにPhpMyAdminパッケージをインストールする必要があります。

$ sudo pacman -S phpmyadmin php-mcrypt

24.パッケージがインストールされた後、いくつかのPHP拡張機能(mysqli.somcyrpt.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
Install and Configuring PhpMyAdmin

同じファイルで、open_basedirステートメントを検索してロケーションし、PhpMyAdminシステムパス(/etc/webapps/および/usr/share/webapps/)を追加して、PHPがこれらのディレクトリ内のファイルにアクセスして読み取れるようにします(さらに、Virtual HostsのDocumentRootパスを/srv/http/から他の場所に変更した場合は、ここに新しいパスを追加する必要があります)。

Enable open_basedir

25. PhpMyAdmin Webインターフェースにアクセスするために行う最後の手順は、Virtual HostsにPhpMyAdmin Apacheステートメントを追加することです。セキュリティ対策として、PhpMyAdmin Webインターフェースには、他の異なるVirtual Hostsからではなく、localhost(またはシステム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/phpmyadminまたはhttps://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

これは、小規模な非クリティカル環境向けに強力で高速かつ堅牢なWebプラットフォームに変換するために必要なLAMPのメイン構成設定の一部です。しかし、大規模な本番環境で使用することを続けたい場合は、忍耐力を身につけ、パッケージの更新に注意を払い、システムの定期的なバックアップイメージを作成して、システム障害時の迅速な復元を行うための対策を講じる必要があります。

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