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

このトピックでは、LEMP(Linux Nginx、MySQL/MariaDB、PHP-FPM/PhpMyadmin)を使用して完全なWeb環境プラットフォームを構築するためのステップバイステップのインストールプロセスを説明し、Portageパッケージ管理が提供するUSEフラグの支援を受けて、コンパイルプロセスで必要なパッケージ機能(Webプラットフォームに必要なモジュールや設定)を高度に調整し、サーバー構成を最適化します。
要件
- インターネット向けサーバー用にハードニングされたプロファイルでのGentooインストール – Gentooインストールガイド。
- 静的IPアドレスで構成されたネットワーク。
ステップ1:Nginx Webサーバーのインストール
1. Nginxのインストールを進める前に、NICが静的IPアドレスで構成されていることを確認し、Portageのソースとシステムが最新であることを確認してください。
$ sudo su - # emerge --sync # emerge --update --deep --with-bdeps=y @world

2. 更新プロセスが完了したら、好みの設定とモジュールを選択してNginxのインストールを進め、PortageのNginx USEフラグをmake.confファイルにエコーすることで、Nginxのデフォルトのインストールモジュールをリストアップします。
# emerge -pv nginx
以下のテキストを日本語に翻訳します:
詳細なモジュール情報(パッケージのUSEフラグ)は、equeryコマンドを使用してください。
# equery uses nginx

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

デフォルト以外の追加モジュール(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

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

ステップ2:PHPをインストールしてください。
4. NginxサーバーでPHP動的Webプログラミング言語を使用するには、PortageのUSEフラグにPHP-FastCGI Process Manager(FPM)を追加し、他の重要なPHP拡張機能を追加し、Apache拡張機能を削除してください。
# emerge -pv php

# equery uses php

# 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アドレスでリッスンするステートメントをすべてコメントアウトして、以下のスクリーンショットのようにします。

ファイルを閉じずに、一番下に移動して最後の閉じ波括弧“ } “の前に次のステートメントを追加します。
Include /etc/nginx/sites-enabled/*.conf;

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

以下のファイル内容を追加します。
# 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; } }

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

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

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

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

localhostの仮想ホスト構成ファイルをテンプレートとして使用し、Nginxの n2enmod と n2dismod を使用することで、好きなだけ多くのウェブサイトを追加できますが、インターネットに面したWebサーバーの有効なDNSポインターを持っているか、システムのホストファイルにローカルエントリーを使用してください。
ステップ4: MySQL/MariaDB + PhpMyAdminのインストール
MySQLデータベースとMySQL用のPhpMyAdmin Webインターフェースをインストールするには、GentooにLAMPをインストール で提示された手順と同じ手順を使用してください。
13. MariaDBを使用したい場合は、MySQLの代替となるMariaDBを使用する場合、次のコマンドを使用して USEフラグ を取得し、インストールしてください。
# emerge -pv mariadb # emerge --ask mariadb

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;

16. MySQLコマンドラインが得意でない場合は、次のコマンドを実行してPhpMyAdmin Webフロントエンドをインストールします。
# emerge -pv dev-db/phpmyadmin # echo “dev-db/phpmyadmin setup vhosts” >> /etc/portage/package.use # emerge --ask dev-db/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

# ln -s /usr/share/webapps/phpmyadmin/4.2.2/htdocs/ /var/www/localhost/htdocs/phpmyadmin

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

19. 最後のステップは、サービスをシステム全体で有効にし、再起動後に自動的に開始するようにすることです。
# rc-update add nginx default # rc-update add php-fpm default # rc-update add mysql default

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