Gentoo LinuxにLEMP(Linux、Nginx、MySQL/MariaDB、PHP/PHP-FPMおよびPhpMyAdmin)をインストールする方法

Gentooは、ソースからビルドされる傾向があり、そのソフトウェア管理プログラムであるPortageによって、非常に高速で動作が速く、高度なカスタマイズが可能な完全なWeb開発プラットフォームを構築するために必要な特定のツールを提供するため、最速のLinuxディストリビューションの1つです。

Install Nginx in Gentoo Linux

このトピックでは、LEMP(Linux Nginx、MySQL/MariaDB、PHP-FPM/PhpMyadmin)を使用して完全なWeb環境プラットフォームを構築するためのステップバイステップのインストールプロセスを説明し、Portageパッケージ管理が提供するUSEフラグの支援を受けて、コンパイルプロセスで必要なパッケージ機能(Webプラットフォームに必要なモジュールや設定)を高度に調整し、サーバー構成を最適化します。

要件

  1. インターネット向けサーバー用にハードニングされたプロファイルでのGentooインストール – Gentooインストールガイド
  2. 静的IPアドレスで構成されたネットワーク。

ステップ1:Nginx Webサーバーのインストール

1. Nginxのインストールを進める前に、NICが静的IPアドレスで構成されていることを確認し、Portageのソースとシステムが最新であることを確認してください。

$ sudo su -
# emerge --sync
# emerge --update --deep --with-bdeps=y @world
Update Gentoo Linux

2. 更新プロセスが完了したら、好みの設定とモジュールを選択してNginxのインストールを進め、PortageのNginx USEフラグmake.confファイルにエコーすることで、Nginxのデフォルトのインストールモジュールをリストアップします。

# emerge -pv nginx

以下のテキストを日本語に翻訳します:

詳細なモジュール情報(パッケージのUSEフラグ)は、equeryコマンドを使用してください。

# equery uses nginx
List All Flag Modules

次に、次のコマンドでNginxをインストールしてください。

# emerge --ask nginx
Install Nginx Web Server

デフォルト以外の追加モジュール(WebDAV、fancyindex、GeoIPなど)が必要な場合は、NginxがコンパイルされるPortage make.confファイルにすべてを1行で追加し、NGINX_MODULES_HTTPディレクティブでNginxを再コンパイルしてください。

# echo 'NGINX_MODULES_HTTP="dav auth_pam fancyindex geoip fastcgi uwsgi gzip rewrite"' >> /etc/portage/make.conf
# emerge --ask nginx
Compile Nginx for New Modules

3. PortageがNginxのemergeを完了したら、httpデーモンを起動し、ブラウザをhttp://localhostに向けて確認してください。

Verify Nginx Web Server

ステップ2:PHPをインストールしてください。

4. NginxサーバーでPHP動的Webプログラミング言語を使用するには、PortageのUSEフラグにPHP-FastCGI Process ManagerFPM)を追加し、他の重要なPHP拡張機能を追加し、Apache拡張機能を削除してください。

# emerge -pv php
Install PHP in Gentoo
# equery uses php
PHP Extension Selection
# echo " dev-lang/php fpm cgi curl gd imap mysql mysqli pdo zip json xcache apc zlib zip truetype -apache2 " >> /etc/portage/package.use
# emerge --ask php

5. PHP-FPMを開始する前に、サービス構成ファイルにいくつかの変更を適用する必要があります。 php-fpm構成ファイルを開き、次の変更を行ってください。

# nano /etc/php/fpm-php5.5/php-fpm.conf

次のディレクティブを以下のようにコメント解除してください。

error_log = /var/log/php-fpm.log
listen = 127.0.0.1:9000    ## Here you can use any HTTP socket (IP-PORT combination ) you want  ##
pm.start_servers = 20

6. PHP-FPM構成ファイルを編集した後は、PHP-FPMログファイルのアクセス権を変更し、サービスを開始してください。

# chmod 755 /var/log/php-fpm.log
# /etc/init.d/php-fpm start

PHP-FPMサービスが開始されていても、NginxがPHPゲートウェイと通信できない場合は、Nginx構成ファイルにいくつかの変更を加える必要があります。

ステップ3:Nginx構成の編集

7. Nginxのデフォルトテンプレート構成ファイルは、ローカルホスト用の基本的なHTTPソケットのみを提供します。この動作を変更して仮想ホストを有効にするには、nginx.confファイルを開き、/etc/nginx/パスにある次の構成を行います。

# nano /etc/nginx/nginx.conf

最初のserverブロックを見つけて、ローカルホストに対応し、127.0.0.1 IPアドレスでリッスンするステートメントをすべてコメントアウトして、以下のスクリーンショットのようにします。

Disable Basic HTTP Configuration

ファイルを閉じずに、一番下に移動して最後の閉じ波括弧“ } “の前に次のステートメントを追加します。

Include /etc/nginx/sites-enabled/*.conf;
Enable Nginx Virtual Host

8. 次に、使用されていない仮想ホスト用のsites-enabledおよびsites-available(Nginxディレクトリと構成ファイル)を作成します。HTTPおよびHTTPSプロトコル用のローカルホストのための次のファイル構成を作成します。

# mkdir /etc/nginx/sites-available
# mkdir /etc/nginx/sites-enabled

以下のファイル内容を追加します。

# nano /etc/nginx/sites-available/localhost.conf

SSLを使用するローカルホストの場合は、次の構成ファイルを作成します。

server {
               listen 80;
               server_name localhost;

               access_log /var/log/nginx/localhost_access_log main;
               error_log /var/log/nginx/localhost_error_log info;

               root /var/www/localhost/htdocs;

                location / {
                index index.html index.htm index.php;
                autoindex on;
                autoindex_exact_size off;
                autoindex_localtime on;

                                }

                         location ~ \.php$ {
                       # Test for non-existent scripts or throw a 404 error
                       # Without this line, nginx will blindly send any request ending in .php to php-fpm
                       try_files $uri =404;
                        include /etc/nginx/fastcgi.conf;
                       fastcgi_pass 127.0.0.1:9000;  ## Make sure the socket corresponds with PHP-FPM conf file
                        }
                }
Create Nginx Virtual Host Configuration

以下のファイル内容を追加します。

# nano /etc/nginx/sites-available/localhost-ssl.conf

server {
               listen 443 ssl;
               server_name localhost;

            ssl on;
               ssl_certificate /etc/ssl/nginx/nginx.pem;
               ssl_certificate_key /etc/ssl/nginx/nginx.key;

               access_log /var/log/nginx/localhost.ssl_access_log main;
               error_log /var/log/nginx/localhost.ssl_error_log info;

               root /var/www/localhost/htdocs;

                                location / {
                index index.html index.htm index.php;
                autoindex on;
                autoindex_exact_size off;
                autoindex_localtime on;
                                 }                                                

                      location ~ \.php$ {
                       # Test for non-existent scripts or throw a 404 error
                       # Without this line, nginx will blindly send any request ending in .php to php-fpm
                       try_files $uri =404;
                       include /etc/nginx/fastcgi.conf;
                       fastcgi_pass 127.0.0.1:9000;
                                }
                }
Create SSL Nginx Virtual Host

9. これで、システムの実行可能パス($PATHシェル変数)に2つのスクリプトを作成する時です。これらはNginx仮想ホストを有効または無効にするコマンドとして機能します。

最初のBashスクリプトを作成します。名前はn2ensiteで、sites-availableから指定されたホスト間にシンボリックリンクを作成して仮想ホスト構成ファイルを有効にします。

# nano /usr/local/bin/n2eniste

以下のファイル内容を追加します。

#!/bin/bash
if test -d /etc/nginx/sites-available && test -d /etc/nginx/sites-enabled  ; then
echo "-----------------------------------------------"
else
mkdir /etc/nginx/sites-available
mkdir /etc/nginx/sites-enabled
fi

avail=/etc/nginx/sites-available/$1.conf
enabled=/etc/nginx/sites-enabled/
site=`ls /etc/nginx/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 nginx server: sudo /etc/init.d/ nginx restart"
else
echo  -e "Virtual host $avail does not exist!\nPlease see available virtual hosts:\n$site"
exit 0
fi
fi
Create Virtual Host Enable Script

10. その後、n2dissite という名前の2番目のスクリプトを作成し、次の内容で sites-enabled のNginxパスから指定されたアクティブな仮想ホストを削除します。

# nano /usr/local/bin/n2dissite

以下の内容を追加してください。

#!/bin/bash
avail=/etc/nginx/sites-enabled/$1.conf
enabled=/etc/nginx/sites-enabled
site=`ls /etc/nginx/sites-available/`

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!\nPlease restart Nginx: sudo /etc/init.d/nginx restart"
exit 0
fi
fi
Create Virtual Host Disable Script

11. Bashスクリプトの編集が終了したら、実行権限を追加し、localhostの仮想ホストをアクティブにします – 拡張子 .conf を除いた仮想ホスト構成ファイル名を使用し、その後、NginxとPHP-FPMサービスを再起動して変更を適用します。

# chmod +x /usr/local/bin/n2dissite
# chmod +x /usr/local/bin/n2ensite
# n2ensite localhost
# n2ensite localhost-ssl
# service nginx restart
# service php-fpm restart
Restart Nginx and PHP-FPM

12. 構成をテストするために、Webファイルのデフォルトルートパス(/var/www/localhost/htdocs)にPHP情報ファイルを作成し、ブラウザを https://localhost/info.php または http://localhost/info.php にリダイレクトします。

echo "<?php phpinfo(); ?>" /var/www/localhost/htdocs/info.php
Verify PHP Configuration

localhostの仮想ホスト構成ファイルをテンプレートとして使用し、Nginxの n2enmodn2dismod を使用することで、好きなだけ多くのウェブサイトを追加できますが、インターネットに面したWebサーバーの有効なDNSポインターを持っているか、システムのホストファイルにローカルエントリーを使用してください。

ステップ4: MySQL/MariaDB + PhpMyAdminのインストール

MySQLデータベースとMySQL用のPhpMyAdmin Webインターフェースをインストールするには、GentooにLAMPをインストール で提示された手順と同じ手順を使用してください。

13. MariaDBを使用したい場合は、MySQLの代替となるMariaDBを使用する場合、次のコマンドを使用して USEフラグ を取得し、インストールしてください。

# emerge -pv mariadb
# emerge --ask mariadb
Install MariaDB Database

MySQLとパッケージの競合が発生した場合は、Portageの package.accept.keywords に次の行を追加してください。

# echo “=dev-db/mariadb-5.5.37-r1 ~amd64” >> /etc/portage/package.accept.keywords
# echo “=virtual/mysql-5.5 ~amd64” >> /etc/portage/package.accept.keywords
# emerge --ask mariadb

14. MySQLデータベースをインストールした後、サービスを開始し、mysql_secure_installationを使用してセキュリティを強化します(rootパスワードを変更し、localhost以外でのrootログインを無効にし、匿名ユーザー/テストデータベースを削除します)。

# service mysql start
# mysql_secure_installation

15. MySQLデータベースに入るには、mysql -u root -pコマンドを使用して機能をテストし、exitコマンドで終了します。

# mysql -u root -p

MariaDB > show databases;
MariaDB > exit;
Verify MySQL Connectivity

16. MySQLコマンドラインが得意でない場合は、次のコマンドを実行してPhpMyAdmin Webフロントエンドをインストールします。

# emerge -pv dev-db/phpmyadmin
# echo “dev-db/phpmyadmin setup vhosts” >> /etc/portage/package.use
# emerge  --ask dev-db/phpmyadmin
Install PhpMyAdmin

17. PhpMyAdminのインストールが完了したら、サンプル構成ファイルに基づいて構成ファイルを作成し、ランダムな文字列でblowfish_secretパスフレーズを変更し、次に/usr/share/webapps/phpmyadmin/phpmyadmin_version_number/htdocs/からアクセスしたいPhpMyAdmin Webインターフェースの仮想ホストドキュメントルートパスへのシンボリックリンクを作成します。

# cd /usr/share/webapps/phpmyadmin/4.2.2/htdocs/
# cp config.sample.inc.php  config.inc.php
# nano config.inc.php
Configure PHPMyAdmin
# ln -s /usr/share/webapps/phpmyadmin/4.2.2/htdocs/  /var/www/localhost/htdocs/phpmyadmin
Create a PhpMyAdmin Symbolic Link

18. PhpMyAdmin Webインターフェースを介してMySQLデータベースにアクセスするには、ブラウザを開いて次のURLアドレスhttps://localhost/phpmyadminを使用します。

Verify PhpMyAdmin Login

19. 最後のステップは、サービスをシステム全体で有効にし、再起動後に自動的に開始するようにすることです。

# rc-update add nginx default
# rc-update add php-fpm default
# rc-update add mysql default
Enable Services System Wide

これでWebホスティングのための最小限の環境が設定されました。HTML、JavaScript、PHPの動的生成ページのみを使用し、SSLウェブサイトが不要な場合、上記の構成で十分です。

Source:
https://www.tecmint.com/install-lemp-in-gentoo-linux/