ウェブサイト検索

16.10/16.04 に Nginx、MariaDB 10、PHP 7 (LEMP スタック) をインストールする方法


LEMP スタックは、動的 Web アプリケーションをデプロイするために使用されるパッケージ (Linux OS、Nginx Web サーバー、MySQL\MariaDB データベース、および PHP サーバー側動的プログラミング言語) のグループを表す頭字語です。ウェブページ。

このチュートリアルでは、MariaDB 10PHP 7HTTP 2.0Nginx サポートを備えた LEMP スタックをインストールする方法について説明します。 は Ubuntu 16.10 および Ubuntu 16.04 サーバー/デスクトップ エディションで動作します。

要件

  1. 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. 次に、netstat コマンドと 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. Nginx Web サーバーと PHP FastCGI プロセス マネージャーの関係をテストするには、以下のコマンドを発行して 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 アプリケーションを展開できるようになりました。