ウェブサイト検索

Nginx、MariaDB、PHP8.1 (LEMP) を使用して Ubuntu 22.04 に WordPress をインストールする


このチュートリアルでは、Nginx、MariaDB、および PHP8.1 (LEMP スタック) を使用して Ubuntu 22.04 にWordPress をインストールする方法を説明します。 WordPress は世界で最も人気のある CMS (コンテンツ管理システム) です。現在、Web サイトの 3 分の 1 以上が WordPress を使用していると推定されています。 PHP8.1 は Ubuntu 22.04 リポジトリに組み込まれており、最新バージョンの WordPress は完璧に動作します。

前提条件

1. このチュートリアルに従うには、リモート サーバー上で Ubuntu 22.04 OS が実行されている必要があります。仮想プライベート サーバー (VPS) をお探しの場合は、以下の機能を備えた Kamitera VPS をお勧めします。

  • 30日間の無料トライアル。
  • 月額 4 ドルから (1GB RAM)
  • 高性能 KVM ベースの VPS
  • 米国、カナダ、英国、ドイツ、オランダ、香港、イスラエルを含む世界 9 か所のデータセンター。

以下のリンクのチュートリアルに従って、Kamatera で Linux VPS サーバーを作成します。

  • Kamitera で Linux VPS サーバーを作成する方法

2. 訪問者が Web ブラウザのアドレス バーにドメイン名を入力して Web サイトにアクセスできるように、ドメイン名も必要です。価格が安く、Whois プライバシー保護を永久無料で提供しているため、NameCheap にドメイン名を登録しました。

3. このチュートリアルでは、Ubuntu 22.04 上に LEMP スタックがすでにセットアップされていることを前提としています。そうでない場合は、次のチュートリアルを確認してください。

  • Ubuntu 22.04 に LEMP スタック (Nginx、MariaDB、PHP8.1) をインストールする方法

LEMP のインストールが完了したら、ここに戻って読み続けてください。

ステップ 1: WordPress をダウンロードする

Ubuntu 22.04 サーバーに SSH で接続し、既存のソフトウェアを更新します。

sudo apt update && sudo apt upgrade -y

次に、wordpress.org のダウンロード ページに移動し、zip アーカイブをダウンロードします。ダウンロード ボタンを右クリックし、リンクの場所をコピー を選択すると、直接ダウンロード リンクを取得できます。

次に、コマンド ライン プロンプトで「wget」と入力し、その後に直接ダウンロード リンクを入力して、WordPress を Ubuntu 22.04 サーバーにダウンロードします。

wget https://wordpress.org/latest.zip

次に、以下のコマンドを使用して zip アーカイブを解凍します。

sudo apt install unzip

sudo mkdir -p /usr/share/nginx

sudo unzip latest.zip -d /usr/share/nginx/

アーカイブは /usr/share/nginx/ ディレクトリに抽出されます。 wordpress という名前の新しいディレクトリが作成されます (/usr/share/nginx/wordpress)。これで、以下のように名前を変更できるようになり、各ディレクトリを簡単に識別できるようになります。 example.com を実際のドメイン名に置き換えます。

sudo mv /usr/share/nginx/wordpress /usr/share/nginx/example.com

ステップ 2: WordPress サイトのデータベースとユーザーを作成する

次のコマンドを使用して、root として MariaDB コンソールにログインします。

sudo mariadb -u root

または

sudo mysql -u root

ログインしたら、次のコマンドを使用して WordPress のデータベースを作成します。私は wordpress という名前を付けましたが、サイト名など好きな名前を使用できます。 (セミコロンは省略しないでください。)

create database wordpress;

次に、以下のコマンドを入力して、WordPress のデータベース ユーザーを作成します。 wpuseryour-password を任意のユーザー名とパスワードに置き換えます。

create user wpuser@localhost identified by 'your-password';

WordPress データベースのすべての権限をユーザーに付与します。

grant all privileges on wordpress.* to wpuser@localhost;

変更を有効にするために権限テーブルをフラッシュしてから、MariaDB コンソールを終了します。

flush privileges;

exit;

ステップ 3: WordPress を構成する

WordPress ディレクトリに移動します。

cd /usr/share/nginx/example.com/

サンプル構成ファイルをコピーし、名前を wp-config.php に変更します。

sudo cp wp-config-sample.php wp-config.php

次に、Nano などのコマンドライン テキスト エディタを使用して新しい構成ファイルを編集します。

sudo nano wp-config.php

次の行を見つけて、赤いテキストを前の手順で作成したデータベース名、ユーザー名、パスワードに置き換えます。

/** The name of the database for WordPress */
define('DB_NAME', 'database_name_here');

/** MySQL database username */
define('DB_USER', 'username_here');

/** MySQL database password */
define('DB_PASSWORD', 'password_here');

次に、下にスクロールして次の行を見つけます。

$table_prefix = 'wp_';

デフォルトでは、すべての WordPress データベーステーブル名は接頭辞として wp_ で始まります。セキュリティを向上させるために、別のものに変更することを強くお勧めします。以下のようなランダムな文字を使用します。

$table_prefix = '9OzB3g_';

ファイルを保存して閉じます。 Nano テキスト エディターでファイルを保存するには、Ctrl+O を押してから、Enter を押して確定します。次に、Ctrl+X を押して終了します。

このファイルにはパスワードが含まれているため、次のコマンドを実行して、ファイル所有者だけがこのファイルを読み取れるようにします。

sudo chmod 640 wp-config.php

また、次のコマンドを使用して、Nginx ユーザー (www-data) を WordPress サイト ディレクトリの所有者として設定する必要があります。

sudo chown www-data:www-data /usr/share/nginx/example.com/ -R

ステップ 4: WordPress 用の Nginx サーバー ブロックを作成する

/etc/nginx/conf.d/ ディレクトリにサーバー ブロック ファイルを作成します。ファイル名は .conf で終わる必要があります。

sudo nano /etc/nginx/conf.d/example.com.conf

次のテキストをファイルに挿入します。赤色のテキストを独自のドメイン名に置き換えます。 DNS マネージャーでドメイン名の A レコードを作成することを忘れないでください。

server {
  listen 80;
  listen [::]:80;
  server_name www.example.com example.com;
  root /usr/share/nginx/example.com/;
  index index.php index.html index.htm index.nginx-debian.html;

  error_log /var/log/nginx/wordpress.error;
  access_log /var/log/nginx/wordpress.access;

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

   location ~ ^/wp-json/ {
     rewrite ^/wp-json/(.*?)$ /?rest_route=/$1 last;
   }

  location ~* /wp-sitemap.*\.xml {
    try_files $uri $uri/ /index.php$is_args$args;
  }

  error_page 404 /404.html;
  error_page 500 502 503 504 /50x.html;

  client_max_body_size 20M;

  location = /50x.html {
    root /usr/share/nginx/html;
  }

  location ~ \.php$ {
    fastcgi_pass unix:/run/php/php8.1-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    include snippets/fastcgi-php.conf;
    fastcgi_buffers 1024 4k;
    fastcgi_buffer_size 128k;
  }

  #enable gzip compression
  gzip on;
  gzip_vary on;
  gzip_min_length 1000;
  gzip_comp_level 5;
  gzip_types application/json text/css application/x-javascript application/javascript image/svg+xml;
  gzip_proxied any;

  # A long browser cache lifetime can speed up repeat visits to your page
  location ~* \.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ {
       access_log        off;
       log_not_found     off;
       expires           360d;
  }

  # disable access to hidden files
  location ~ /\.ht {
      access_log off;
      log_not_found off;
      deny all;
  }
}

ファイルを保存して閉じます。次に、Nginx 構成をテストします。

sudo nginx -t

テストが成功したら、Nginx をリロードします。

sudo systemctl reload nginx

ブラウザのアドレス バーにドメイン名を入力します。

example.com

または

example.com/wp-admin/install.php

WordPress インストール ウィザードが表示されます。言語を選択します。

インストール ウィザードが表示されない場合は、おそらくいくつかの PHP 拡張機能をインストールする必要があります。

sudo apt install php-imagick php8.1-fpm php8.1-mbstring php8.1-bcmath php8.1-xml php8.1-mysql php8.1-common php8.1-gd php8.1-cli php8.1-curl php8.1-zip

次に、PHP-FPM と Nginx をリロードします。ウィザードが表示されます。

sudo systemctl reload php8.1-fpm nginx

セットアップ ウィザードで機密情報を入力する前に、トラフィック ハイジャックを防ぐために HTTPS を有効にすることをお勧めします。

ステップ 5: HTTPS を有効にする

HTTP トラフィックを暗号化するには、Let’s Encrypt から発行された無料の TLS 証明書をインストールして HTTPS を有効にします。次のコマンドを実行して、Let’s Encrypt クライアント (certbot) を Ubuntu 22.04 サーバーにインストールします。

sudo apt install certbot python3-certbot-nginx

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

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email  -d yourdomain.com,www.yourdomain.com

どこで

  • --nginx: Nginx プラグインを使用します。
  • --agree-tos: 利用規約に同意します。
  • --redirect: 301 リダイレクトによって HTTPS を強制します。
  • --hsts: すべての HTTP 応答に Strict-Transport-Security ヘッダーを追加します。ブラウザーがドメインに対して常に TLS を使用するように強制します。 SSL/TLS ストリッピングを防御します。
  • --staple-ocsp: OCSP ステープリングを有効にします。有効な OCSP 応答は、TLS 中にサーバーが提供する証明書にステープル留めされます。
  • --email: 登録および回復連絡先に使用される電子メール。
  • -d フラグの後には、カンマで区切られたドメイン名のリストが続きます。最大 100 個のドメイン名を追加できます。

これで証明書が取得され、自動的にインストールされるはずです。

ここで WordPress セットアップ ウィザードをリロードすると、HTTP が自動的に HTTPS 接続にリダイレクトされることがわかります。

ステップ 6: セットアップ ウィザードを使用してインストールを完了する

管理者アカウントを作成し、[WordPress のインストール] ボタンをクリックします。

これで、新しい WordPress サイトがインストールされました。

www を非 www にリダイレクトする方法 (またはその逆)

HTTP から HTTPS へのリダイレクトはすでに有効になっています。あとは、www を非 www に、またはその逆にリダイレクトするだけです。それは超簡単。 WordPress ダッシュボード > 設定 > 全般に移動し、WordPress アドレスで希望のバージョン(wwwまたはwww以外)を設定します。 と サイト アドレス。必ず https:// プレフィックスを含めてください。

WordPress でメールを送信する方法

WordPress サイトでは、アカウント登録メール、パスワードリセットメール、コメント通知メールなどのメールを送信する必要があります。Gsuite などの高価なサードパーティ ソリューションを使用して Web サイト用の専門的なメール アドレスを作成する代わりに、この iRedMail チュートリアルに従って設定することができます。独自のドメイン名を使用して独自のメール サーバーを構築すると、大金を掛けずに無制限のメールボックスを持ち、無制限の電子メールを送信できます。

メール サーバーによって WordPress サイトの速度が低下したり、メール サーバーから情報が漏洩したりすることを避けるため、 メール サーバーと WordPress 2 つの異なる仮想プライベート サーバー にインストールすることをお勧めします。 WordPress サイトの IP アドレスが同じ仮想プライベート サーバー上にある場合、ハッカーは使用している CDN (コンテンツ配信ネットワーク) をバイパスし、オリジン サーバーに直接 DDoS 攻撃を仕掛けることができます。

メールサーバーが稼働したら、WordPress に SMTP プラグインをインストールすると、メールサーバーに接続してメールを送信できるようになります。 WordPress ダッシュボード -> プラグインに移動し、新規追加をクリックして新しいプラグインをインストールします。

次に、検索ボックスに「WP Mail SMTP」と入力します。 WPForms による WP Mail SMTP プラグインをインストールしてアクティブ化します。

WordPress ダッシュボード Web ページをリロードすると、 左側のメニュー バーにWP Mail SMTP が表示されます。それをクリックして設定を選択します。

次に、「メーラー」セクションまで下にスクロールします。デフォルトでは、PHP メーラーが選択されています。これを他の SMTP に変更する必要があります。

下にスクロールすると、SMTP 設定を入力する必要があります。

  • メールサーバーのホスト名を入力します。
  • 暗号化として TLS を選択します。
  • ポート 587 を使用します。
  • 認証を有効にします。
  • ドメインのメール アドレスとパスワードを入力します。

設定を保存した後、WordPress ダッシュボードからログアウトして電子メールの送信をテストし、[パスワードを紛失した] リンクをクリックしてパスワード リセット電子メールを送信できます。

アップロードファイルのサイズ制限を増やす

デフォルトでは、WordPress メディア ライブラリにアップロードされる画像や PDF ファイルなどのファイルは 2MB を超えることはできません。アップロード サイズ制限を増やすには、PHP 構成ファイルを編集します。

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

次の行 (850 行目) を見つけます。 Nano テキスト エディターで、Ctrl+/ を押してから、850 と入力すると、850 行目にジャンプします。

upload_max_filesize = 2M

以下のように値を変更します。

upload_max_filesize = 20M

次に、次の行 (行 694) を見つけます。

post_max_size = 8M

PHP が受け入れる POST データの最大サイズを変更します。

post_max_size = 20M

ファイルを保存して閉じます。あるいは、次の 2 つのコマンドを実行して、ファイルを手動で開かずに値を変更することもできます。

sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 20M/g' /etc/php/7.4/fpm/php.ini

sudo sed -i 's/post_max_size = 8M/post_max_size = 20M/g' /etc/php/7.4/fpm/php.ini

次に、PHP-FPM を再起動します。

sudo systemctl restart php8.1-fpm

Nginx はアップロード ファイル サイズの制限も設定します。 Nginx によって設定されるデフォルトの最大アップロード ファイル サイズ制限は 1MB です。大きなファイルを WordPress サイトにアップロードできるようにするには、Nginx 構成ファイルを編集します。

sudo nano /etc/nginx/conf.d/example.com.conf

で示されているように、このファイルにはすでに最大ファイル サイズが設定されています。

client_max_body_size 2M;

必要に応じて、20M などに変更できます。

client_max_body_size 20M;

ファイルを保存して閉じます。次に、変更を有効にするために Nginx をリロードします。

sudo systemctl reload nginx

次のステップ

このチュートリアルが、Nginx、MariaDB、および PHP8.1 (LEMP スタック) を備えた Ubuntu 22.04 に WordPress をインストールするのに役立つことを願っています。いつものように、この投稿が役立つと思われた場合は、無料のニュースレターを購読して、さらに多くのヒントやコツを入手してください。

ハッキングやデータセンターの災害などに備えてバックアップは重要です。WordPress サイトのバックアップ戦略を立てる必要があります。

  • コマンドラインからの MariaDB データベースのバックアップと復元
  • Duplicati を使用して Debian、Ubuntu、Linux Mint 上のファイルをバックアップする

Linux サーバーのパフォーマンスのチューニングと監視

  • TCP BBRを有効にしてUbuntuネットワークのパフォーマンスを簡単に向上させる
  • HTTP/2 とは何か、Nginx でそれを有効にする方法
  • Netdata を使用した Linux サーバーのパフォーマンス監視 (2022)

WordPress コマンドライン ユーティリティ

  • WP-CLI コマンドライン ツールを使用して WordPress サイトを管理することもできます。
  • WPScan を使用して、WordPress サイトの脆弱性をスキャンできます。

気をつけてください 🙂

関連記事