見出し画像

LNMP環境構築—クラウドサーバ(Ubuntu)


1.LNMP アーキテクチャの概要

LNMP は、現在主流の Web サイト サーバー アーキテクチャの 1 つで、電子商取引 Web サイト、ソーシャル ネットワーク、コンテンツ管理システムなど、大規模で同時実行性の高い Web サイト アプリケーションの実行に適しています。 LNMP は、それぞれ LinuxNginxMySQLPHP の略である。

2.LNMP アーキテクチャの原理プロセス

+---------------------+
|      Client         |
|  (Web Browser)      |
+---------+-----------+
          |
          v
+---------+-----------+
|        Nginx        |
| (Web Server)        |
+---------+-----------+
          |
          v
+---------+-----------+       +---------------------+
|       PHP-FPM       |<----->|       MySQL         |
| (PHP Interpreter)   |       | (Database Server)   |
+---------------------+       +---------------------+

1.ブラウザがHTTPリクエストを送信
まず、ユーザーがブラウザに URL を入力して Enter キーを押すと、ブラウザは HTTP リクエストをサーバーに送信する。このリクエストには、特定の URL、クエリ パラメータ、リクエスト メソッド (GET、POST など)、およびその他のヘッダー情報を含めることができる。

2.Nginx サーバーがリクエストを処理する
Nginx は、多数の同時接続を処理できる高性能 Web サーバーである。 Nginx は HTTP リクエストを受信すると、設定ファイル内のルールに従ってリクエストを処理する。一般的な処理方法には、静的リソースの提供やリバース プロキシなどがある。要求されたリソースが静的リソース (HTML ページ、画像、CSS ファイルなど) の場合、Nginx はこれらのリソースをローカル ファイル システムから直接提供する。リクエストされたリソースが動的である場合 (PHP ページなど)、Nginx はリクエストをバックエンド サーバーに転送して処理する。

3.PHP-FPM により PHP コードを処理
PHP-FPM は、PHP スクリプトの実行を処理する PHP FastCGI プロセス マネージャーである。 Nginx がリクエストを PHP-FPM に転送すると、PHP-FPM は PHP スクリプトを実行する新しいプロセスを作成する。このプロセスは、FastCGI プロトコルを使用して Nginx と通信し、スクリプトの出力を Nginx に返す。

4.MySQLデータベースへのアクセス
PHP スクリプトを処理する場合、データベース アクセスが関係する場合がある。 LNMP アーキテクチャでは、MySQL がデータベース サーバーとして使用される。 PHP スクリプトは、PDO や MySQLi などのデータベース拡張機能を介して MySQL データベースに接続し、操作できる。

5.ブラウザに応答を返す
最後に、PHP スクリプトが実行されると、PHP-FPM はスクリプトの出力を Nginx に返す。 Nginx はこの応答をブラウザに送り返し、ブラウザは応答の内容を解析してレンダリングする。応答が HTML ページの場合、ブラウザは HTML ドキュメント内のタグとスタイルに従ってページをレンダリングする。応答が画像やビデオなどのリソースの場合、ブラウザはこれらのリソースを直接表示する。

3.LNMP構築

前提条件

LNMP 環境をデプロイする場合、既存の クラウド サーバ インスタンスは次の条件を満たす必要がある:
手动部署LNMP环境时,已有云服务器实例必须满足以下条件:

  • インスタンスにはPbulic IP アドレスが割り当てられているか、Elastic Public IP に関連付けられているか。实例已分配公网IP地址或绑定弹性公网IP。

  • OSは必ずUbantu。 操作系统必须为Ubuntu。

  • インスタンス セキュリティ グループのインバウンドルールでは、ポート 22、80、および 443 が許可されている。实例安全组的入方向规则已放行22、80、443端口。

3.1 Linux

まず、システムが最新であることを確認:
更新Ubuntu系统内的软件包:

sudo apt update
sudo apt upgrade

3.2 Nginx

Nginx は、高性能 HTTP サーバーおよびリバース プロキシ サーバーである。Nginxは静的コンテンツの配信や動的コンテンツの処理、負荷分散、SSL/TLS終端、キャッシュなど、さまざまな用途に広く使われている。特に大規模なウェブサイトやアプリケーションのインフラストラクチャーでの利用が一般的である。

Nginx のインストール
以下のコマンドでNginx をインストール:
运行以下命令,安装Nginx:

sudo apt install nginx

インストールが成功したかどうかを確認:

sudo systemctl status nginx

Nginx が正常にインストールされ実行されている場合は、次のような出力が表示される:

Nginx バージョン確認
运行以下命令,查看Nginx版本:

nginx -v

Nginx が正常にインストールされた場合は、次のような出力が表示される:
返回结果类似如下所示,表示Nginx已成功安装:

Nginx  デフォルトページテスト
ブラウザでサーバーの IP アドレスまたはドメイン名 (http://your_server_ip など) にアクセスし、 Nginx が正常にインストールされ、正常に実行されている場合は、Nginx のデフォルトのようこそページが表示され、次のような内容が表示される:

Nginx  構成ファイル確認
次のコマンドを使用して、Nginx 構成ファイルが有効かどうかを確認:
检查Nginx 配置文件:

sudo nginx -t

構成ファイルに問題がない場合は、次のような出力が表示される:

設定ファイルのパスは /etc/nginx/nginx.conf 。

3.3 MySQL

MySQL インストール
次のコマンドを実行して MySQL をインストール:
运行以下命令,安装MySQL:

sudo apt install mysql-server

y を入力すると、システムは MySQL サーバーとそれに関連する依存パッケージをインストールする:

MySQL ステータス確認
systemctl
コマンドを使用して、MySQL サービスのステータスを確認:

sudo systemctl status mysql

MySQL が正常にインストールされ実行されている場合は、次のような出力が表示される:

MySQL バージョン確認

mysql --version

出力:

MySQL ポート確認

デフォルトでは、MySQL はポート 3306 で待機する。次のコマンドを使用して、MySQL がこのポートでListenしているかどうかを確認する:

sudo netstat -tulnp | grep mysql
sudo ss -tuln | grep 3306

出力:

出力は、MySQL がポート 3306 および 33060 でListenしていることを示している。これは、MySQL が正常にインストールされ、実行されていることを意味する。

インストールが完了したら、MySQL 自動的開始

sudo systemctl start mysql
sudo systemctl enable mysql

MySQL アクセス

sudo mysql

MySQL セキュリティ構成


sudo mysql_secure_installation

コマンドラインプロンプトに従って、次の設定項目を順番に完了する。
根据命令行提示,依次完成以下配置项。
1.y を入力して VALIDATE PASSWORD コンポーネントを有効にする。これには、パスワードを設定するときに特定の複雑さの要件が必要となる。
输入Y,设置密码验证策略

2.プロンプトに従って、パスワード検証戦略を選択する。
根据提示,选择密码验证策略

3.y を入力し、匿名ユーザを削除
输入y,删除匿名用户

4.y を入力して、MySQL root ユーザーのリモート ログイン権限を無効
输入y,禁止MySQL的root用户的远程登录权限

5.y を入力して、test データベースを削除
输入y,移除test数据库

6.y を入力して認可テーブルをリロード
输入y,重新加载授权表

7.All done! 表示したら、配置完成
当命令行回显All done!时,表示配置完成

MySQL パスワード設定
ログイン

sudo mysql

root ユーザーのパスワードを設定して終了する:
更改root用户密码

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'mynewpassword';
exit;

パスワードを入力し、MySQL ログイン
运行以下命令,登录MySQL数据库

sudo mysql -uroot -p

3.4 PHP

PHP インストール
次のコマンドを実行して PHP をインストール:
运行以下命令,安装PHP:

sudo apt install php-fpm php-mysql

y を入力して Enter キーを押し、インストールを続行する。システムは、PHP-FPM、PHP-MySQL、およびいくつかの依存パッケージをインストールする:

PHP バージョン確認
运行以下命令,查看PHP版本:

php -v

返される結果は以下のようになり、PHP が正常にインストールされたことがわかりる:

PHP-FPM ステータス確認
次のコマンドを使用し、PHP-FPM のステータスを表示する:

systemctl status php8.3-fpm

PHP-FPM が実行されている場合は、次のような出力が表示される:

実行されていない場合は、次のコマンドを使用して起動できる:

sudo systemctl start php8.3-fpm

Nginx デフォルト構成ファイルをバックアップ
备份Nginx 配置文件

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.back

PHP をサポートするように Nginx 構成ファイルを変更する:

sudo vim /etc/nginx/sites-available/example.com

i を押して編集モードに入り、Nginx 構成ファイルを変更する
进入编辑模式,修改Nginx配置文件

次の設定をファイルに追加する。example.com をドメイン名または IP アドレスに置き換える。

server {
    listen 80;
    listen [::]:80;
    server_name example.com;

    root /var/www/html;
    index index.php index.html index.htm index.nginx-debian.html;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }
}

server {}:仮想ホストの開始を定義

  • listen 80:サーバーは、HTTP ポートであるポート 80 をリッスンする。

  • server_name :仮想ホストのサーバー名を 「example.com」として指定する。これは IP アドレスまたはドメイン名にする。

  • root :サーバーのルート ディレクトリを 「/var/www/html」 として指定しする。これは、Web サイト ファイルが保存されるディレクトリとなる。

  • index :デフォルトのインデックスファイルを指定して順番に検索する。

  • location / {:Web サイトのルート ディレクトリと一致するルート ロケーション ブロックを定義する。

    • try_files $uri $uri/ =404;:URI で要求されたファイルまたはディレクトリが存在するかどうかを確認し、存在しない場合は 404 エラーが返される。

  • location ~ \.php$ {:正規表現一致を使用して、「.php」で終わるファイルを処理する方法を定義する。

    • include snippets/fastcgi-php.conf;:PHP 用の FastCGI 構成ファイルが含まれている。

    • fastcgi_pass unix:/run/php/php7.4-fpm.sock;:Unix ソケット経由で通信して、PHP リクエストを PHP-FPM プロセスに渡す。

  • location ~ /\.ht {:正規表現一致を使用して、「.ht」で始まるファイルを処理する方法を定義する。

    • deny all;:通常はセキュリティ上の理由から、「.ht」ファイルへのすべてのアクセスを拒否し、.htaccess ファイルへのアクセスを防ぐ。

Esc キーを押して編集モードを終了し、「wq」と入力して Enter キーを押してファイルを保存して終了する。
Esc 退出编辑模式,然后输入:wq并按Enter键,保存并退出文件。

Nginx サービス再起動
次のコマンドを実行して、Nginx サービスを再起動する:

sudo systemctl restart nginx
sudo nginx -s reload

仮想ホスト構成読み取る
このコマンドは、/etc/nginx/sites-available/example.com 設定ファイルを /etc/nginx/sites-enabled/ ディレクトリにリンクするシンボリック リンクを作成する。この目的は、Nginx が example.com 仮想ホスト構成を読み取って使用できるようにする。

通常、/etc/nginx/sites-available/ ディレクトリには利用可能なすべての Nginx サイト構成ファイルが含まれ、/etc/nginx/sites-enabled/ ディレクトリには現在有効なサイト構成ファイルへのシンボリック リンクが含まれる。シンボリック リンクを作成すると、プロファイル自体をコピーまたは移動することなく、特定の Web サイト プロファイルを簡単に有効または無効にすることができる。

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

Nginx 設定ファイルテスト

sudo nginx -t

PHP テスト

次のコマンドを実行して、Nginx Web サイトのルート ディレクトリ「/var/www/html」に新しい 「phpinfo.php」 ファイルを作成する:

sudo vim /var/www/html/info.php

次の内容をファイルに追加:

<?php
phpinfo();

Nginx を再起動し、変更を有効にする

sudo systemctl restart nginx.service

設定ファイルをリロード

sudo nginx -s reload

PHP 構成情報ページへのテストアクセス
测试访问PHP配置信息页面

  1. ホストでブラウザを開く。

  2. ブラウザのアドレスバーに http://<クラウドサーバのパブリック IP アドレス>/phpinfo.php と入力してアクセスする。

アクセス結果は次の図のようになる。PHP 構成情報ページが正常に表示され、LNMP 環境が正常に展開されたことがわかる。

LNMP 環境のセットアップが正常に完了したら、データ漏洩のリスクを排除するために「 phpinfo.php」 テスト ファイルを削除することをお勧めする。

sudo rm -rf /var/www/html/phpinfo.php

4.LNMP ワンクリックインストール

LNMP 安定版をインストールする

sudo wget -c http://soft.vpser.net/lnmp/lnmp1.4.tar.gz && tar zxf lnmp1.4.tar.gz && cd lnmp1.4 && sudo ./install.sh lnmp

上記の LNMP インストール コマンドを実行すると、次のプロンプトが表示さる:

現在、より多くの MySQL および MariaDB バージョンが提供されており、データベースをインストールしないオプションも用意されている。MySQL 5.6、5.7、および MariaDB 10 は、1G を超えるメモリのより高いスペクで選択する必要があることに注意してください。

対応する MySQL または MariaDB バージョンの前にシリアル番号を入力し、Enter キーを押して次の手順に進む。

MySQLのrootパスワードを設定する必要がある

MySQL InnoDB を有効にする必要があるかどうかを尋ねる。InnoDB エンジンはデフォルトで有効になっており、Enter キーを押すか、エンジンが必要ない場合は y を入力することを推薦する。入力が完了したら Enter キーを押して次のステップに進む。

 PHP7 などの上位バージョンを選択する場合は、それがプログラムと互換性があるかどうかを確認する必要がある。選択する PHP バージョンのシリアル番号を入力する。

対応するシリアル番号を入力して Enter キーを押すと、デフォルトではインストールしない。

Nginx: OK,MySQL: OK,PHP: OK

Nginx、MySQL、および PHP がすべて実行されており、ポート 80 と 3306 が存在し、インストール時間が表示され、「Install lnmp V1.4」が完了したことを意味する。


この記事が参加している募集

#創作大賞2024

書いてみる

締切:

この記事が気に入ったらサポートをしてみませんか?