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スクリプト)が表示されますが、複数の仮想ホストの作成作業が簡単になります。 、安全な HTTS トランザクションに必要な SSL証明書キーを生成します。

  1. Previous Arch Linux Installation process – skip the last part with DHCP.
  2. Previous LEMP installation on Arch Linux – only the part with configuring Static IP Address and remote SSH access.

ステップ1:基本的なソフトウェアLAMPをインストールする

1.静的IPアドレスと SSH を使用したリモートシステムアクセスによる最小限のシステムインストールの後、 pacman ユーティリティを使用してArchLinuxボックスをアップグレードします。

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

$ sudo mysql_secure_installation

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

$ mysql -u root -p

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

7.以下の構成は、ほとんどが ApacheWebサーバーに関連しており、PHPスクリプト言語、SSLまたは非SSL仮想ホストを使用して仮想ホスティングに動的なインターフェイスを提供します。 httpdサービスファイルの構成を変更することで実行できます。

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

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

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

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がこの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およびa2disteApacheコマンドを作成する

9.次に、仮想ホスト構成ファイルを有効または無効にするコマンドとして機能する a2ensite および a2dissite Apacheスクリプトを作成します。 cd コマンドを入力して ユーザーパスに戻り、お気に入りのエディターを使用して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

次に、a2dissitebashスクリプトファイルを作成します。

$ 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.ファイルが作成されたら、実行権限を割り当て、それらを/usr/local/sbin:/ usr/local/bin:/ usr/sbin:/ usr/bin:/ sbin:/ bin 実行可能ディレクトリ。システム全体で使用できるようにします。

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

ステップ5:Apacheで仮想ホストを作成する

11. ArchLinux上のApacheWebサーバーの仮想ホストのデフォルト構成ファイルは、/etc/httpd/conf/extra/パスにある httpd-vhosts.conf ファイルによって提供されますが多くの仮想ホストを使用するシステムがある場合、どのWebサイトがアクティブ化されているかどうかを追跡するのは非常に難しい場合があります。 Webサイトを無効化する場合は、そのすべてのディレクティブにコメントまたは削除する必要があります。システムが多数のWebサイトを提供し、Webサイトにさらに多くの構成ディレクティブがある場合、これは難しいミッションになる可能性があります。

sites-available および sites-enabled パスを使用すると、ウェブサイトを有効化または無効化する作業が大幅に簡素化され、保存されます。アクティブ化されているかどうかに関係なく、すべてのWebサイト構成ファイル。

次のステップでは、Webサイトファイルを提供するためのデフォルトの 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>

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

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

$ sudo a2ensite localhost
$ sudo systemctl restart httpd

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

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

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

14.デフォルトでは、SSLモジュールはArch LinuxのApacheで有効になっておらず、メインの 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

15.次に、同じlocalhost名を指すが今回はSSLサーバー構成を使用する仮想ホストファイルを作成し、名前を少し変更して、SSLを使用するlocalhostを表すことを思い出させます。

$ 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>

Port および ServerName ディレクティブに加えて、ここでの他の重要なディレクティブは、 SSL Certificate ファイルおよび SSL Key ファイルを指すディレクティブです。はまだ作成されていないため、ApacheWebサーバーを再起動しないでください。再起動しないとエラーが発生します。

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

スクリプトをシステム全体で使用できるようにする場合は、スクリプトを実行可能ファイル/usr/local/sbin:/ usr/local/bin:/ usr/sbin:/ usr/bin:/ sbin:/ bin

$ 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は動的スクリプト言語をサポートせずにArchLinuxでHTML静的ファイルコンテンツのみを提供します。 PHPをアクティブ化するには、最初にApacheメイン構成ファイルを開き、次の LoadModule ステートメントを検索してコメントを解除します( php-apache はArchLinuxの 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動的サーバーサイドスクリプト言語が有効になっているため、たとえば 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.so mcrypt.so –内部認証用)を有効にする必要があります。また、他の拡張機能を有効にすることもできます。 openssl.so imap.so iconv.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インターフェイスにアクセスするために最後に行う必要があるのは、仮想ホストにPhpMyAdminApacheステートメントを追加することです。セキュリティ対策として、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 システムをシンプルでパワフルで高速かつ堅牢なウェブプラットフォームに変換するために必要な LAMP の主な構成設定の一部です。 -重要な環境ですが、頑固になり、それでも大規模な本番環境で使用したい場合は、十分な忍耐力を身に付け、パッケージの更新に特別な注意を払い、定期的なシステムバックアップイメージを作成して、システム障害。

全著作権所有。 © Linux-Console.net • 2019-2022