GNU/Linux >> Linux の 問題 >  >> Linux

Debian 11 に LEMP Stack Nginx、MySQL、PHP をインストールする方法

Debian 11 に LEMP スタック Nginx、MySQL、PHP をインストールする方法。このガイドでは、Nginx、MySQL 8.0、および PHP 8.1 をインストールする方法を学習します。

また、いくつかの一般的な PHP 拡張機能をインストールし、PHP 構成を調整します。最後に、Let's Encrypt SSL でセットアップを保護し、HTTPS リダイレクトを構成します。

この設定は Google クラウドでテストされているため、AWS、Azure、VPS、Debian 11 を実行する専用サーバーなど、すべてのクラウド ホスティング サービスで動作します。

前提条件

  • サーバーまたは sudo ユーザーへの root アクセス
  • Let’sEncrypt SSL をインストールするためのサーバー IP を指すドメイン

ステップ 1:セットアップの初期化

次のコマンドを使用して、利用可能な最新バージョンにパッケージを更新することから始めます。

sudo apt update
sudo apt upgrade

wget パッケージをインストールします。

sudo apt install wget

セットアップを更新したら、セットアップを開始できます。

ステップ 2:Nignx をインストールする

次のコマンドを使用して Nginx をインストールします。

sudo apt install nginx

nginx がインストールされます および必要なすべての依存関係。

ステップ 3:ファイアウォールをセットアップする

Nginx で複雑でないファイアウォール (UFW) をセットアップして、HTTP の既定の Web ポートでパブリック アクセスを許可できるようになりました。 と HTTPS

sudo ufw app list

リストされたすべてのアプリケーションが表示されます。

Output
Available applications:
   Nginx Full
   Nignx HTTP
   Nginx HTTPS
   OpenSSH
  • Nginx HTTP :このプロファイルはポート 80 を開きます (通常の暗号化されていない Web トラフィック)
  • Nginx フル :このプロファイルは両方のポート 80 を開きます (通常の暗号化されていない Web トラフィック) およびポート 443 (TLS/SSL 暗号化トラフィック)
  • Nginx HTTPS :このプロファイルは、ポート 443 のみを開きます (TLS/SSL 暗号化トラフィック)
  • OpenSSH :このプロファイルはポート 22 を開きます SSH アクセス用

SSL を使用しない場合は、Nginx HTTP プロファイルのみを有効にする必要があります。

次に、Nginx Full を有効にします。

sudo uff allow OpenSSH
sudo ufw allow 'Nginx Full'

このコマンドを使用すると、UFW のステータスを表示できます。

sudo ufw status

次のような出力が表示されます。

Output
Status: active
 To                         Action      From
 --                         ------      ----
 Nginx Full                 ALLOW       Anywhere                  
 OpenSSH                    ALLOW       Anywhere                  
 Nginx Full (v6)            ALLOW       Anywhere (v6)             
 OpenSSH (v6)               ALLOW       Anywhere (v6)

ステップ:4 Nginx のインストールを確認する

Nginx がインストールされると、自動的に開始され、すでに稼働しています。

Nginx のすべてのプロセスは systemctl で管理されます 指図。次のコマンドで Nginx のステータスを確認してください。

sudo systemctl status nginx
● nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2022-02-03 03:13:00 UTC; 6h ago
       Docs: man:nginx(8)
    Process: 11261 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code>
    Process: 11262 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, >
   Main PID: 11263 (nginx)
      Tasks: 3 (limit: 8622)

これで、Nignx がインストールされ、ファイアウォールが構成されました。

ステップ 5:MySQL をインストールする

システムに MySQL APT リポジトリを追加するには、リポジトリのダウンロード ページに移動し、次のコマンドを使用して最新のリリース パッケージをダウンロードします。

wget https://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.deb

リリース パッケージをインストールします。

sudo apt install ./mysql-apt-config_0.8.22-1_all.deb

MySQL バージョン 8.0 をインストールします。 Tab キーを押して [OK] を選択し、Enter キーを押します (上の画像を参照)。

これで MySQL をインストールできます。

sudo apt update
sudo apt install mysql-server

インストールが完了すると、MySQL サービスが自動的に開始されます。 MySQL サーバーが実行されていることを確認するには、次のように入力します。

sudo service mysql status

出力は、サービスが有効で実行中であることを示しているはずです:

 mysql.service - MySQL Community Server
     Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2022-02-02 06:12:30 UTC; 17s ago
       Docs: man:mysqld(8)
             http://dev.mysql.com/doc/refman/en/using-systemd.html
   Main PID: 101929 (mysqld)
     Status: "Server is operational"
      Tasks: 38 (limit: 1148)
     Memory: 369.3M
        CPU: 805ms
     CGroup: /system.slice/mysql.service
             └─101929 /usr/sbin/mysqld

Feb 02 06:12:29 demo systemd[1]: Starting MySQL Community Server...
Feb 02 06:12:30 demo systemd[1]: Started MySQL Community Server.

ステップ 6:MySQL を保護する

MySQL のインストールには、mysql_secure_installation という名前のスクリプトが付属しています これにより、MySQL サーバーのセキュリティを簡単に改善できます。

sudo mysql_secure_installation

VALIDATE PASSWORD PLUGIN を設定するよう求められます これは、MySQL ユーザー パスワードの強度をテストし、セキュリティを向上させるために使用されます。

yを押してください パスワード検証プラグインまたはその他のキーを設定して次のステップに進む場合。

パスワード検証ポリシーには、低、中、強の 3 つのレベルがあります。

強力なパスワード検証のために 2 を入力してください。

次のプロンプトで、MySQL root ユーザーのパスワードを設定するよう求められます。

Validate Password プラグインをセットアップすると、スクリプトは新しいパスワードの強度を表示します。 y と入力します パスワードを確認します。

次に、匿名ユーザーを削除し、ローカル マシンへのルート ユーザー アクセスを制限し、テスト データベースを削除し、特権テーブルをリロードするよう求められます。 y と答える必要があります すべての質問に。

ステップ 7:PHP をインストールする

PHP 8.1 用の SURY PPA を追加します

sudo apt -y install lsb-release apt-transport-https ca-certificates
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg

これで、PPA をサーバー パッケージに追加できます。

echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list

パッケージを更新し、PHP 8.1 をインストールします

sudo apt update

sudo apt install php php8.1-fpm php8.1-mysql php8.1-common php8.1-mysql php8.1-xml php8.1-xmlrpc php8.1-curl php8.1-gd php8.1-imagick php8.1-cli php8.1-dev php8.1-imap php8.1-mbstring php8.1-opcache php8.1-soap php8.1-zip php8.1-intl -y

PHP をインストールしたら、次のコマンドを使用してバージョンを確認できます。

php -v

ステップ 8:PHP を構成する

php.ini のいくつかの値を変更して、Web アプリケーション用の PHP を構成します。 ファイル。

Nginx を使用する PHP 8.1 の場合、php.ini 場所は次のディレクトリになります。

sudo nano /etc/php/8.1/fpm/php.ini

F6 をヒット エディター内で検索し、パフォーマンスを向上させるために次の値を更新します。

upload_max_filesize = 32M 
post_max_size = 48M
memory_limit = 256M
max_execution_time = 600
max_input_vars = 3000
max_input_time = 1000

PHP 設定を変更したら、変更を有効にするために PHP-FPM を再起動する必要があります。

sudo service php8.1-fpm restart

ステップ 9:Nginx を構成する

デフォルトの Nginx 構成を無効にします。

sudo rm -rf /etc/nginx/sites-enabled/default
sudo rm -rf /etc/nginx/sites-available/default

Web サイト ディレクトリを作成します。

sudo mkdir -p /var/www/html/domainname/public

正しい権限を設定してください。

sudo chmod -R 755 /var/www/html/domainname
sudo chown -R www-data:www-data /var/www/html/domainname

新しいサーバー ブロック構成を作成します。

sudo nano /etc/nginx/sites-available/domainname.conf

次の構成を新しいファイルに貼り付けます。

server {
    listen 80;
    listen [::]:80;

    server_name yourdomainname.com www.yourdomainname.com;

    root /var/www/html/domainname/public;
    index index.html index.php;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }
}

新しい構成を有効にします。

sudo ln -s /etc/nginx/sites-available/domainname.conf /etc/nginx/sites-enabled/domainname.conf

ステップ 10:Let’s Encrypt SSL をインストールする

HTTPS は、サーバー (インスタンス) とクライアント (Web ブラウザー) 間の安全な通信のためのプロトコルです。無料の SSL 証明書を提供する Let’s Encrypt の導入により、HTTPS はすべての人に採用され、視聴者にも信頼をもたらします。

ここでは、Certbot をインストールして、Snap を使用して Let’sEncrypt SSL をインストールします。

sudo apt update
sudo apt install snapd -y
sudo snap install core
sudo snap refresh core

Certbot ツールをインストールします。

sudo snap install --classic certbot

Certbot をコマンドとして実行できるように構成します。

sudo ln -s /snap/bin/certbot /usr/bin/certbot

Let’s Encrypt for Debian 11 をインストールするための Certbot をインストールしました。

次のコマンドを実行して、証明書をインストールします。

sudo certbot --nginx --agree-tos --redirect -m [email protected] -d domainname.com -d www.domainname.com

適切なオプションを選択し、Enter を押します

このコマンドは、無料の SSL をインストールし、HTTPS へのリダイレクトを構成し、Nginx サーバーを再起動します。

ステップ 11:SSL 証明書の更新

Let’s Encrypt が提供する証明書は 90 日間のみ有効であるため、頻繁に更新する必要があります。それでは、次のコマンドを使用して更新機能をテストしましょう。

sudo certbot renew --dry-run

このコマンドは、証明書の有効期限をテストし、自動更新機能を構成します。

ステップ:12:セットアップをテストする

適切な手順を実行したら、Web ディレクトリに新しいテスト PHP ファイルを作成できます。

sudo nano /var/www/html/domainname/public/info.php

以下のコードをファイル内に貼り付けます。

<?php phpinfo();

ファイルを保存します。

info.php でドメイン名を確認してください。 URL (domainname.com/info.php ).

ドメインが HTTPS にリダイレクトされ、PHP 情報の詳細が表示されます。

完了したトレーニング コースで Linux 管理のキャリアを強化し、夢の仕事に就きましょう。

結論

これで、Let’sEncrypt SSL を使用して Debian 11 に LEMP スタックをインストールする方法を学びました。

御時間ありがとうございます。問題やフィードバックがある場合は、下にコメントを残してください。


Linux
  1. Debian 11にPHPとNginx(LEMP)をインストールしてセットアップする方法

  2. Debian 11 に LEMP Stack Nginx、MySQL、PHP をインストールする方法

  3. Ubuntu 22.04 に LEMP スタック Nginx、MySQL、PHP をインストールする方法

  1. CentOS 7にLEMPスタック(Nginx、MySQL、PHP v7)をインストールする方法

  2. OpenSUSE Leap 42.1にNginx、PHP、MySQL(LEMPスタック)をインストールする方法

  3. Debian 10 バスターに LEMP スタックをインストールする方法

  1. Ubuntu 18.04にPHPとMySQL(LEMPスタック)を使用してNginxをインストールする方法

  2. Debian9にPHP+MySQL(LEMP)を使用してNginxをインストールする方法

  3. Debian 9にNginx、MariaDB、PHP(LEMPスタック)をインストールする方法