16.10/16.04 に Nginx、MariaDB 10、PHP 7 (LEMP スタック) をインストールする方法
LEMP スタックは、動的 Web アプリケーションを展開するために使用されるパッケージ (Linux OS、Nginx Web サーバー、MySQL\MariaDB データベース、および PHP サーバー側動的プログラミング言語) のグループを表す頭字語です。ウェブページ。
このチュートリアルでは、MariaDB 10、PHP 7、HTTP 2.0 の Nginx サポートを備えた LEMP スタックをインストールする方法について説明します。 は Ubuntu 16.10 および Ubuntu 16.04 サーバー/デスクトップ エディションで動作します。
要件
- Ubuntu 16.04 Server Edition のインストール [この手順はUbuntu 16.10 でも機能します]
ステップ 1: Nginx Web サーバーをインストールする
1. Nginx は、インターネット上の訪問者に Web ページを表示するために使用される、リソース効率の高い最新の Web サーバーです。まず、apt コマンド ラインを使用して、Ubuntu 公式リポジトリから Nginx Web サーバーをインストールします。
$ sudo apt-get install nginx

2. 次に、systemctl コマンドを発行して、Nginx が開始され、ポート 80 にバインドされているかどうかを確認します。
$ netstat -tlpn

$ sudo systemctl status nginx.service

サーバーが起動していることを確認したら、ブラウザを開いて、HTTP プロトコルを使用してサーバーの IP アドレスまたは DNS レコードに移動し、Nginx のデフォルト Web ページにアクセスできます。
http://IP-Address

ステップ 2: Nginx HTTP/2.0 プロトコルを有効にする
3.Ubuntu 16.04 上の Nginx バイナリの最新リリースでデフォルトで構築される HTTP/2.0 プロトコルは、SSL と組み合わせてのみ機能し、 Web SSL Web ページの読み込み速度の大幅な向上を約束します。
Ubuntu 16.04 上の Nginx でプロトコルを有効にするには、まず Nginx の利用可能なサイトの構成ファイルに移動し、以下のコマンドを実行してデフォルトの構成ファイルをバックアップします。
$ cd /etc/nginx/sites-available/ $ sudo mv default default.backup

4. 次に、テキスト エディタを使用して、次の手順に従って新しいデフォルト ページを作成します。
server { listen 443 ssl http2 default_server; listen [::]:443 ssl http2 default_server; root /var/www/html; index index.html index.htm index.php; server_name 192.168.1.13; location / { try_files $uri $uri/ =404; } ssl_certificate /etc/nginx/ssl/nginx.crt; ssl_certificate_key /etc/nginx/ssl/nginx.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; ssl_dhparam /etc/nginx/ssl/dhparam.pem; ssl_session_cache shared:SSL:20m; ssl_session_timeout 180m; resolver 8.8.8.8 8.8.4.4; add_header Strict-Transport-Security "max-age=31536000; #includeSubDomains" always; location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.0-fpm.sock; } location ~ /\.ht { deny all; } } server { listen 80; listen [::]:80; server_name 192.168.1.13; return 301 https://$server_name$request_uri; }

上記の設定スニペットは、すべての SSL listen ディレクティブに http2
パラメータを追加することで、HTTP/2.0 の使用を有効にします。
また、サーバー ディレクティブで囲まれた抜粋の最後の部分は、すべての非 SSL トラフィックを SSL/TLS デフォルト ホストにリダイレクトするために使用されます。また、server_name
ディレクティブを自分の IP アドレスまたは DNS レコード (できれば FQDN) と一致するように置き換えます。
5. 上記の設定で Nginx のデフォルト構成ファイルの編集が完了したら、以下のコマンドを実行して SSL 証明書ファイルとキーを生成して一覧表示します。
証明書に独自のカスタム設定を入力し、Web ページへのアクセスに使用される DNS FQDN レコードまたはサーバー IP アドレスと一致する共通名 設定に注意してください。
$ sudo mkdir /etc/nginx/ssl $ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt $ ls /etc/nginx/ssl/

6. また、以下のコマンドを発行して、上記の設定ファイルの ssl_dhparam
命令行で変更された強力な DH 暗号を作成します。
$ sudo openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048

7. Diffie-Hellman キーが作成されたら、Nginx 構成ファイルが正しく書き込まれ、Nginx Web サーバーによって適用できるかどうかを確認し、デーモンを再起動して変更を反映します。以下のコマンドを実行します。
$ sudo nginx -t $ sudo systemctl restart nginx.service

8. Nginx がHTTP/2.0 プロトコルを使用しているかどうかをテストするには、以下のコマンドを発行します。 h2
アドバタイズされたプロトコルの存在は、Nginx が HTTP/2.0 プロトコルを使用するように正常に構成されていることを確認します。すべての最新のブラウザは、デフォルトでこのプロトコルをサポートする必要があります。
$ openssl s_client -connect localhost:443 -nextprotoneg ''

ステップ 3: PHP 7 インタープリターをインストールする
Nginx を PHP 動的処理言語インタープリターと併用すると、Ubuntu 公式リポジトリからphp-fpm バイナリ パッケージをインストールすることで取得できる FastCGI プロセス マネージャーの助けを借りて動的 Web コンテンツを生成できます。
9. PHP7.0 と、PHP が Nginx Web サーバーと通信できるようにする追加パッケージを取得するには、サーバー コンソールで次のコマンドを実行します。
$ sudo apt install php7.0 php7.0-fpm

10. PHP7.0 インタープリタがマシンに正常にインストールされたら、以下のコマンドを発行して php7.0-fpm デーモンを起動して確認します。指図:
$ sudo systemctl start php7.0-fpm $ sudo systemctl status php7.0-fpm

11. Nginx の現在の構成ファイルは、動的コンテンツをサーバーするためにPHP FastCGI プロセス マネージャーを使用するようにすでに構成されています。
Nginx が PHP インタープリターを使用できるようにするサーバー ブロックは、以下の抜粋に示されているため、デフォルトの Nginx 構成ファイルをさらに変更する必要はありません。
location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.0-fpm.sock; }
以下は、元の Nginx のデフォルト設定ファイルの場合、コメントを解除して変更する必要がある手順のスクリーンショットです。

12. PHP FastCGI プロセス マネージャーと Nginx Web サーバーの関係をテストするには、以下のコマンドを発行して PHP info.php
テスト構成ファイルを作成し、この構成ファイルにアクセスして設定を確認します。以下のアドレスを使用します: http://IP_ordomain/info.php
。
$ sudo su -c 'echo "<?php phpinfo(); ?>" |tee /var/www/html/info.php'


また、以下のスクリーンショットに示すように、PHP 変数ブロックの行 $_SERVER[‘SERVER_PROTOCOL’]
を見つけて、HTTP/2.0 プロトコルがサーバーによってアドバタイズされているかどうかを確認します。

13. 追加の PHP7.0 モジュールをインストールするには、apt search php7.0
コマンドを使用して PHP モジュールを見つけてインストールします。
また、WordPress やその他の CMS をインストールする予定がある場合に便利な、次の PHP モジュールをインストールしてみてください。
$ sudo apt install php7.0-mcrypt php7.0-mbstring

14. PHP 追加モジュールを登録するには、以下のコマンドを発行して PHP-FPM デーモンを再起動するだけです。
$ sudo systemctl restart php7.0-fpm.service
ステップ 4: MariaDB データベースをインストールする
15. 最後に、LEMP スタックを完成させるには、Web サイト データを保存および管理するための MariaDB データベース コンポーネントが必要です。
以下のコマンドを実行して MariaDB データベース管理システムをインストールし、MySQL モジュールを使用してデータベースにアクセスするために PHP-FPM サービスを再起動します。
$ sudo apt install mariadb-server mariadb-client php7.0-mysql $ sudo systemctl restart php7.0-fpm.service

16. MariaDB インストールを保護するには、Ubuntu リポジトリのバイナリ パッケージで提供されるセキュリティ スクリプトを実行します。このスクリプトにより、root パスワードの設定、匿名ユーザーの削除、リモートでの root ログインの無効化、およびテスト データベースの削除が求められます。
以下のコマンドを発行してスクリプトを実行し、すべての質問に yes
で答えます。以下のスクリーンショットをガイドとして使用してください。
$ sudo mysql_secure_installation

17. 一般ユーザーがシステムの sudo 権限なしでデータベースにアクセスできるように MariaDB を構成するには、root 権限で MySQL コマンド ライン インターフェイスに移動し、MySQL インタープリターで以下のコマンドを実行します。
$ sudo mysql MariaDB> use mysql; MariaDB> update user set plugin=’‘ where User=’root’; MariaDB> flush privileges; MariaDB> exit

最後に、MariaDB データベースにログインし、以下のコマンドを実行して root 権限なしで任意のコマンドを実行します。
$ mysql -u root -p -e 'show databases'

以上です!これで、Ubuntu 16.10 および Ubuntu 16.04 サーバー上に LEMP スタックが構成され、データベースと対話できる複雑な動的 Web アプリケーションを展開できるようになりました。