すべてのプロダクト
Search
ドキュメントセンター

Elastic Compute Service:Ubuntu 20インスタンスでLNMPスタックを手動で構築する

最終更新日:Feb 27, 2024

NGINXは、LNMP webサービス環境を構築するために使用できる、小型で効率的なwebサーバーです。 LNMPは、Linuxオペレーティングシステム、NGINX webサーバー、MySQLリレーショナルデータベース管理システム、PHPプログラミング言語の4つのオープンソースコンポーネントの名前の頭字語です。 このトピックでは、Ubuntu 20オペレーティングシステムを実行するElastic Compute Service (ECS) インスタンスでLNMPスタックを手動で構築する方法について説明します。

前提条件

  • ECSインスタンスが作成され、パブリックIPアドレスが割り当てられます。 インスタンスの作成方法については、「カスタム起動タブでインスタンスを作成する」をご参照ください。

    このトピックでは、次の設定を持つECSインスタンスが使用されます。 オペレーティングシステムのバージョンの問題によるコマンドエラーを防ぐために、このトピックで使用したものと同じオペレーティングシステムのバージョンを使用することを推奨します。

    • インスタンスタイプ: ecs.c6.large

    • オペレーティングシステム: Ubuntu 20.04

    • ネットワークタイプ:Virtual Private Cloud (VPC)

    • IPアドレス: パブリックIPアドレス

  • インバウンドルールがECSインスタンスのセキュリティグループに追加され、ポート22、80、および443のトラフィックが許可されます。 セキュリティグループルールの追加方法については、「セキュリティグループルールの追加」をご参照ください。

    説明

    セキュリティ上の理由から、このトピックでは、トラフィックがLNMPスタックの構築とテストを許可される必要があるポートのみについて説明します。 ビジネス要件に基づいて、より多くのポートでトラフィックを許可するようにセキュリティグループルールを設定できます。 たとえば、ECSインスタンス上のMySQLデータベースに接続する場合は、インスタンスのセキュリティグループにインバウンドルールを追加して、MySQLに使用されるデフォルトのポートであるポート3306でトラフィックを許可する必要があります。

背景情報

このトピックは、Linuxオペレーティングシステムに精通しているが、Alibaba Cloud ECSを使用してWebサイトを構築することに慣れていない個人ユーザーを対象としています。

この例では、次のソフトウェアバージョンが使用されています。

  • NGINX 1.18.0

  • MySQL 8.0.27

  • PHP 7.4.3

ステップ1: 準備をする

重要

予期しないリスクを防ぐために、管理者ではなく通常のユーザーとして操作することを推奨します。 通常ユーザーにsudo権限がない場合は、ユーザーに権限を付与します。 詳細については、FAQセクションの「通常のユーザーにsudo権限を付与する方法」を参照してください。

  1. LNMPスタックを構築するECSインスタンスに接続します。

    詳細については、「接続方法の概要」をご参照ください。

  2. インスタンスオペレーティングシステムのファイアウォールを無効にします。

    1. 次のコマンドを実行して、ファイアウォールのステータスを確認します。

      sudo ufwステータス
      • ファイアウォールが無効になっている場合、Status: inactiveが表示されます。

      • ファイアウォールが有効になっている場合、Status: activeが表示されます。

    2. オプション: ファイアウォールを無効にします。

      ファイアウォールが有効になっている場合は、次のコマンドを実行してファイアウォールを無効にし、インスタンスの起動時にファイアウォールが起動しないようにします。

      sudo ufw disable
      説明

      ファイアウォールが無効になった後に再び有効にし、インスタンスの起動時にファイアウォールを起動する場合は、sudo ufw enableコマンドを実行します。

ステップ2: NGINXのインストール

  1. 次のコマンドを実行して、Ubuntuオペレーティングシステムのソフトウェアパッケージを更新します。

    sudo aptアップデート
  2. 次のコマンドを実行してNGINXをインストールします。

    sudo apt -yインストールnginx
  3. 次のコマンドを実行して、NGINXのバージョンを確認します。

    sudo nginx -v

    次のようなコマンド出力は、NGINXがインストールされており、バージョンが1.18.0であることを示します。

    nginxバージョン: nginx/1.18.0 (Ubuntu)

ステップ3: MySQLのインストールと設定

  1. MySQLをインストールします。

    1. 次のコマンドを実行してMySQLをインストールします。

      sudo apt -y install mysql-server
    2. 次のコマンドを実行して、MySQLのバージョンを確認します。

      sudo mysql -V

      次のようなコマンド出力は、MySQLがインストールされ、そのバージョンが8.0.27であることを示します。

      mysql Ver 8.0.27-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu))
  2. MySQLを設定します。

    1. 次のコマンドを実行してMySQLに接続します。

      sudo mysql
    2. 次のコマンドを実行して、rootユーザーのパスワードを設定します。

      ALTER USER 'root' @ 'localhost' 'mysql_native_passwordで 'mynewpassword';

      この例では、パスワードはMysql @ 1234です。 サンプルコマンド:

      ALTER USER 'root' @ 'localhost' 'mysql_native_passwordで 'Mysql @ 1234 ';
    3. 次のコマンドを実行してMySQLを終了します。

      出口;
    4. 次のコマンドを実行して、MySQLのセキュリティ設定を構成します。

      sudo mysql_secure_インストール
    5. コマンドラインの指示に従って、次の設定を順番に設定します。

      1. rootユーザーのパスワードを入力します。 rootユーザーのパスワードを入力します。 この例では、パスワードMysql @ 1234を入力します。

        root @ iZbp19jsi7s0g7m4zgc ****:~# sudo mysql_secure_installation
        
        MySQLサーバーの展開を保護します。
        
        ユーザーrootのパスワードを入力します。
        説明

        データセキュリティ上の理由から、パスワードを入力してもコマンド出力は返されません。 正しいパスワードを入力し、enterキーを押すだけです。

      2. Yを入力してパスワード強度ポリシーを設定します。

        VALIDATEパスワードコンポーネントを使用してパスワードをテストできます
        セキュリティを向上させます。 パスワードの強さをチェックします
        であり、ユーザーはパスワードのみを設定できます。十分に安全。 VALIDATE PASSWORDコンポーネントをセットアップしますか?
        
        プレスy | Yははい、他のキーはいいえ: Y 
      3. プロンプトに従ってパスワード強度値を設定します。

        この例では、0の値が使用される。

        入力してください0 = LOW、1=中、2=強い: 0
      4. ルートユーザーのパスワードを変更するには、Yと入力します。

        rootのパスワードを変更しますか? ((プレスy | Yははい、他のキーはいいえ) : Y 
      5. rootユーザーのパスワードを入力します。

        新しいパスワード:
        
        新しいパスワードを再入力する:
        
        パスワードの推定強度: 100 
      6. Yを入力して、設定したパスワードを確認します。

        Do you wish to continue with the password provided?(プレスy | Y for Yes, any other key for No) : Y
      7. MySQLに付属の匿名ユーザーを削除するには、Yと入力します。

        デフォルトでは、MySQLインストールに匿名ユーザーがいます。持っていなくても誰でもMySQLにログインできるようにする
        それらのために作成されたユーザーアカウント。 これは、テストし、インストールを少しスムーズにする。
        プロダクションに移行する前にそれらを削除する必要があります
        環境。
        
        匿名ユーザーを削除しますか? (プレスy | Yははい、他のキーはいいえ) : Y 
      8. ルートユーザーによるMySQLへのリモートアクセスを拒否するには、Yと入力します。

        通常、rootはからのみ接続できるようにしてください。'localhost' 。 これにより、誰かが推測できないことが保証されます
        ネットワークからのルートパスワード。
        
        リモートからのrootログインを拒否しますか? (プレスy | Yははい、他のキーはいいえ) : Y 
      9. testという名前のデータベースを削除するには、Yと入力します。

        デフォルトでは、MySQLには 'test' という名前のデータベースが付属しています。誰でもアクセスできます。 これもテストのみを目的としていますが、プロダクションに移行する前に削除する必要があります
        環境。
        
        
        テストデータベースを削除してアクセスしますか? (プレスy | Yははい、他のキーはいいえ) : 
      10. 権限テーブルをリロードするには、Yと入力します。

        特権テーブルをリロードすると、すべての変更
        これまでに作られてすぐに有効になります。
        
        今すぐ特権テーブルを再ロードしますか? (プレスy | Yははい、他のキーはいいえ) : Y 

        すべてが終わったら! がコマンド出力に表示され、設定は完了です。

  3. MySQLにログインできるかどうかを確認します。

    1. 次のコマンドを実行してMySQLにログインします。

      sudo mysql -uroot -p
    2. [Enter password:] プロンプトで、MySQLに設定したパスワードを入力します。

      説明

      データセキュリティのため、パスワードを入力しても出力は返されません。 正しいパスワードを入力し、enterキーを押すだけです。

      次のサンプルコマンド出力は、MySQLにログオンしていることを示しています。

      root @ iZbp19jsi7s0g7m4zgc ****:~# sudo mysql -uroot -p
      パスワードを入力:
      MySQLモニターへようこそ。  コマンドは; または \gで終わります。
      MySQL接続idは15です
      サーバーのバージョン: 8.0.29-0ubuntu0.20.04.3 (Ubuntu)
      
      著作権 (c) 2000、2022、オラクルおよび /またはその関連会社。
      
      オラクルは、オラクル社の登录商标および /またはその
      アフィリエイト。 その他の名前はそれぞれの商標である可能性があります
      所有者。
      
      タイプ 'help;'ヘルプは '\ h'を入力してください。 '\c' と入力して、現在の入力ステートメントをクリアします。
      
      mysql> 
    3. 次のコマンドを実行してMySQLを終了します。

      出口;

ステップ4: PHPのインストールと設定

  1. PHPをインストールします。

    1. 次のコマンドを実行してPHPをインストールします。

      sudo apt -y install php-fpm
    2. 次のコマンドを実行して、PHPのバージョンを確認します。

      sudo php -v

      次のようなコマンド出力は、PHPがインストールされ、そのバージョンが7.4.3であることを示します。

      PHP 7.4.3 (cli) (ビルド: 11月25日2021 23:16:22) ( NTS)
      著作権 (c) PHPグループ
      Zendエンジンv3.4.0、著作権 (c) Zend Technologies
          Zend OPcache v7.4.3、Copyright (c) 、Zend Technologies 
  2. NGINX設定ファイルを変更してPHPを有効にします。

    1. 次のコマンドを実行してNGINX設定ファイルを開きます。

      sudo vim /etc/nginx/sites-enabled/default
    2. Iキーを押してInsertモードに入り、ファイルを変更します。

      1. サーバー中かっこ内のindexで始まる設定行を見つけ、その行にindex.phpを追加します。nginx-indexphp

      2. サーバー括弧内のlocation ~ \.php$ {} を見つけ、location ~ \.php $括弧内の次の設定行から注釈文字 (#) を削除します。

        location ~ \.php$ {
                スニペット /fastcgi-php.confを含む。
                fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        } 

        nginx-php

    3. Escキーを押して挿入モードを終了します。 次に、:wqと入力し、enterキーを押してファイルを保存して閉じます。

    4. 次のコマンドを実行してNGINXを再起動します。

      sudo systemctl再起動nginx.service
  3. PHPを設定します。

    1. 次のコマンドを実行して、NGINX Webサイトのルートディレクトリにphpinfo.phpファイルを作成します。

      sudo vim <Webサイトのルートディレクトリ>/phpinfo.php

      <Websiteルートディレクトリ> は変数で、NGINX設定ファイルで表示できます。 このトピックでは、NGINX設定ファイルはデフォルトの /etc/nginx/sites-enabled/defaultファイルです。 cat /etc/nginx/sites-enabled/defaultコマンドを実行して、ファイルの内容を表示できます。 次のようなコマンド出力は、NGINX Webサイトのルートディレクトリが /var/www/htmlであることを示します。 网站根目录次のコマンドを実行して、/var/www/htmlディレクトリにphpinfo.phpファイルを作成します。

      sudo vim /var/www/html/phpinfo.php
    2. Iキーを押してInsertモードに入り、phpinfo.phpファイルに次の設定を追加します。

      phpinfo() 関数は、PHPのすべての設定情報を表示するために使用されます。

      <?phpエコーphpinfo(); ?>
    3. Escキーを押してInsertモードを終了します。 次に、:wqと入力し、enterキーを押してファイルを保存して閉じます。

    4. 次のコマンドを実行してPHPを起動します。

      sudo systemctl start php7.4-fpm

ステップ8: PHP設定ページへのアクセスをテストする

  1. インターネットにアクセスできるWindowsコンピュータまたは別のWindowsホストでブラウザを開きます。

  2. アドレスバーに、http:// <ECSインスタンスのパブリックIPアドレス>/phpinfo.phpと入力します。

    次のページはPHP設定を示し、LNMPスタックが構築されていることを示します。php页面

次のステップ

LNMPスタックの構築後、データリークを防ぐためにphpinfo.phpテストファイルを削除することを推奨します。

sudo rm -rf <Webサイトのルートディレクトリ>/phpinfo.php

この例では、Webサイトのルートディレクトリ /var/www/htmlが使用されています。 次のコマンドを実行して、テストファイルを削除します。

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