クラウドサーバーでWordPressをホストすることを計画している場合、このガイドはあなたのために役立つことでしょう。LAMPとは、Linux、Apache、MariaDB、PHPの頭文字を取ったもので、これらを組み合わせたものをLAMPスタックと呼びます。
NGINXではなくApacheのWebサーバを選択するメリットとデメリット
- Pros: 多くのページキャッシュ&最適化で一般的に使用されている.htaccessファイルに対応しています。ノンコーディングの方にもおすすめです。
- Cons: NGINXより若干パフォーマンスが劣りますが、APOで管理することができます。高トラフィックのサイトでは、LEMPスタックが最適です。
以下の3つのステップを踏んで、ビデオをご覧ください。ヘルプが必要ですか?ご連絡ください😊。
パート A: Cloudflare ネームサーバーをアクティブに保つ
Let’s Encrypt Wildcard SSL証明書を取得するために、Cloudflare DNSを使用する予定です。ダウンタイムなしの移行を実現するために、まずこのステップを完了させてください。
現在のネームサーバーを確認する
- アクティブなネームサーバーを https://www.whatsmydns.net/#NS/example.com で検索してください。
- もし、以前のホスティングサービスやドメインレジストラのデフォルトNSを使用している場合は、Cloudflareに置き換える必要があります。
- Cloudflare DNSの使用方法について
パートB:Ubuntu Server 22.04 LTS サーバーを準備する
1. Vultrに登録して$100の無料クレジットを手に入れよう(14日間有効)
多くのクラウドサーバー会社を試してきた者として、私の経験ではVultrを選べば間違いはないと思います。彼らはサポートとサービスに関して、誠実で思いやりのある人たちです。
⚡ パフォーマンス
- 第3世代AMD EPYC™
- NVME / SSD
- 最大4GHzのCPU
- 最大5Gbpsのネットワークスピード
- アメリカ、ヨーロッパ、アジア、オーストリアのデータセンター
- IPV6対応
💡 特徴
- 初心者にやさしいダッシュボード
- ワンクリックでスナップショット
- オートマティックバックアップ(有料)
- 無料クラウドファイアウォール
- DDoS対策(有償)
- KVM100%使用仮想化
⚙ サポート
- PayPal/カード
- 24時間365日チケットサポート
- ドキュメンテーション
2. 新しいサーバーをデロイする
プラスボタンをクリックするだけで、簡単に始められます
3. サーバーの種類を選択
共有CPUを手頃な価格で利用するなら、クラウドコンピューティングをお選びください。
次に、CPU & Storage Technologyを選択する必要がありますが、「AMD High Performance」を選択すればよいでしょう。
4. サーバーの場所を選択する
Vultrは4つの大陸でサーバーを提供しています。 最も低いレイテンシと最高のパフォーマンスを得るためには、常にオーディエンスに最も近い地域を選択する必要があります。
例えば、99%のトラフィックが日本から来る場合、最も近い地域である東京を選択します。
Asia
- インド・ムンバイ
- インド・デリーNCR
- インド・ベンガルール
- シンガポール、シンガポール
- 東京、日本
- 韓国・ソウル
アメリカ
- アメリカ・マイアミ
- 米国アトランタ
- アメリカ・シカゴ
- アメリカ・ダラス
- アメリカ・ホノルル
- アメリカ・ロサンゼルス
- メキシコシティ(メキシコ
- 米国ニューヨーク(NJ)州
- アメリカ・シアトル
- 米国・シリコンバレー
- カナダ・トロント、サンパウロ
ヨーロッパ
- スウェーデン・ストックホルム
- スウェーデン・ストックホルム
- オランダ・アムステルダム
- ドイツ・フランクフルト
- スペイン・マドリード
- フランス・パリ
- ポーランド・ワルシャワ
オーストラリア
- オーストラリア・シドニー
- オーストラリア・メルボルン
5. サーバーイメージ > オペレーティングシステム > Ubuntu 22.04 LTS x64を選択します。
長期サポート(LTS)とは、コンピュータソフトウェアの安定したリリースを通常版よりも長い期間維持する製品ライフサイクル管理方針のことです。
6. サーバーサイズの選択
月々6ドルのプランは、新しいブログのスタート地点として最適です。ご要望に応じていつでもアップグレード可能です。.
ヒント: 移行する場合は、[サイトの健全性情報]の[合計インストールサイズ]を確認してください。
7. IPV6の有効化、バックアップ
8. SSHキーの追加
これは、セキュリティ強化のために推奨されるオプションのステップです。
- Add Newボタンをクリックして、🔒公開鍵を提出するために新しいSSH鍵を追加します。
- お使いのOSに合わせて、以下の方法でキーを生成してください。
- PuTTYアプリケーションをダウンロードします。
- スタートメニューから「PuTTYgen」を検索します。
- Generateボタンをクリックし、マウスポインタを合わせます。
- 公開鍵をコピーし、Vultrに提供
- キー・パスフレーズの入力
- 最も安全な場所に🔑プライベートキーを保存してください。SSHやSFTPへのログインに使用することができます。
- 実行:
ssh-keygen -t rsa
. より安全な4096ビット鍵の場合は:ssh-keygen -t rsa -b 4096
- キーを保存する場所を聞かれたら、エンターキーを押します(この場合、デフォルトの場所が使用されます)。
- 鍵のパスフレーズを入力します。
- 実行
cat ~/.ssh/id_rsa.pub
-をクリックすると、コントロールパネルに貼り付けるための適切な形式のキーが得られます。 - ~/.ssh/id_rsa ファイルを必ずバックアップしてください。これを失うと復元できません。
SSHキーを選択する
この手順で、公開鍵が新しいインスタンスにアタッチされます。その後、平文パスワードとSSH鍵の両方を使用してSSHにログインできるようになります。
9. Webファイアウォールのルールをサーバーインスタンスにリンクさせる
- 管理]をクリックし、新しいファイアウォールグループを作成します。
- SSHのTCPポート22を許可する。IPV4、IPV6ルールともに、HTTPは80、HTTPSは443。
- Firewall グループをインスタンスにリンクします。
10. ホスト名とラベルを入力し、「今すぐデプロイ」をクリックします。
これで、インストールが進行中であることが確認できます
11. 新規インスタンス作成ページに移動します
IPアドレス、ユーザー名、パスワードをコピーします。あなたのデフォルトのポートは22です。
12. パスワードログインを無効にする
セキュリティ上の理由から、パスワード認証は無効にし、キーベースの認証のみを許可することをお勧めします。
- コンフィグレーションファイルの編集
nano /etc/ssh/sshd_config
- 探す(CTRL + W) and 探索
PasswordAuthentication
- 値を「はい」から「いいえ」に変更する
- 保存する場合は、次のように入力します。, CTRL + O
- コマンドを使用して、SSHサービスを再起動します。
sudo service ssh restart
次回からは、動画にあるように鍵経由のSSHのみでご利用いただけます。
LinuxまたはMacの場合、ターミナルを使用して、次のようなコマンドを実行します。
ssh root@192.168.1.1 -p 22 -i id_rsa
UFWを無効にする
VULTR で新しいインスタンスをデプロイすると、UFW (Uncomplicated Firewall) が有効になり、SSH ポート 22 を除くすべてのポートがブロックされたままになります。このため、ブラウザで ERR_CONNECTION_REFUSED Error が返されることがあります。これを解決するには、UFWを無効にしておくことをお勧めします。
ufw disable
さて、LAMPスタックにWordPressをデプロイするための本来のプロセスをスピードアップしてみます。
さて、LEMPスタックにWordPressをデプロイするための本来のプロセスをスピードアップしてみます。
1. リポジトリの更新
以下のコマンドを入力し、Enterキーを押してください。
sudo -s
apt update && apt upgrade -y && apt dist-upgrade && apt autoclean && apt autoremove -y && reboot
または
wget -qO update https://dl.gulshankumar.net/update && chmod +x update
次回は、必ず下記のショートカットコマンドで更新してください。
./update
セキュリティ付きMariaDBをインストールする
再度ログインし、以下のコマンドを入力します。
sudo apt install mariadb-server -y && sudo mysql_secure_installation
以下の質問にお答えください。
- Enter current password for root (enter for none): Enterキーを押す
- Switch to unix_socket authentication [Y/n]: 返信N
- Set root password? [Y/n]: Enterキーを押す
- New password: パスワードを入力し、Dashlaneを使用して生成することができます。右クリックでペースト。
- Re-enter new password: パスワードを再入力してください。
パスワードの設定に成功すると、次のような画面が表示されます。
Password updated successfully! Reloading privilege tables.. ... Success!
Also, you need answer following questions.
Remove anonymous users? [Y/n]: Yを押して入力
Disallow root login remotely? [Y/n]: Yを押して入力
Remove test database and access to it? [Y/n]: Yを押して入力
Reload privilege tables now? [Y/n]: Yを押して入力
WordPress用のデータベースを新規に作成する
WordPress用のデータベースを新規に作成する
mysql -u root -p
新しいデータベースを作成し、そのユーザーをパスワード付きで使用できるように権限を付与します。このデータベースには、WordPressのすべての投稿、ページ、テーマ、プラグインなどの情報が保存されます。
create database wordpress;
grant all on wordpress.* to gulshan@localhost identified by '5pY8CKJxDRJEGQNkX7';
flush privileges;
exit;
どこであなたの …
データベースは wordpress
ユーザー名は gulshan
パスワードは 5pY8CKJxDRJEGQNkX7
ヒント ユニークなログイン資格の使用を検討する
4. PHP 8.2、Apache2のインストールとPermissionの設定
sudo add-apt-repository ppa:ondrej/php -y && apt update && apt install php8.2-fpm php8.2-common php8.2-mysql php8.2-xml php8.2-xmlrpc php8.2-curl php8.2-gd php8.2-imagick php8.2-cli php8.2-dev php8.2-imap php8.2-mbstring php8.2-soap php8.2-zip php8.2-bcmath -y && sed -i 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g' /etc/php/8.2/fpm/php.ini && service php8.2-fpm restart && apt install apache2 -y && chown -R www-data:www-data /var/www/ && chmod -R 755 /var/www/
PHPの設定を変更する
ほとんどのファンシーなテーマやプラグインは、実行するためにハイエンドのPHP設定を必要とします。そのため、この変更を行う必要があります。
sed -i 's/memory_limit = 128M/memory_limit = 512M/g' /etc/php/8.2/fpm/php.ini
sed -i 's/post_max_size = 8M/post_max_size = 128M/g' /etc/php/8.2/fpm/php.ini
sed -i 's/max_file_uploads = 20/max_file_uploads = 30/g' /etc/php/8.2/fpm/php.ini
sed -i 's/max_execution_time = 30/max_execution_time = 900/g' /etc/php/8.2/fpm/php.ini
sed -i 's/max_input_time = 60/max_input_time = 3000/g' /etc/php/8.2/fpm/php.ini
sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 128M/g' /etc/php/8.2/fpm/php.ini
service php8.2-fpm restart
5. PHPの設定を変更する
/root/.secrets/ディレクトリ内にcloudflare.iniファイルを作成します。
mkdir -p /root/.secrets/ && cd /root/.secrets/ && nano cloudflare.ini
以下のコードを追加し、CTRL+Oで保存、CTRL+Xで終了します。
dns_cloudflare_email = "your-cloudflare-email@example.com"
dns_cloudflare_api_key = "XXXXXXXXXXXXXXXXX"
CloudflareのメールアドレスとグローバルAPIキーは、”My Profile” > API Tokens > Global API Keyで確認できます。
chmod 0400 /root/.secrets/cloudflare.ini
OSやHTTPウェブサーバーに合わせてCertbotとDNS Authenticatorをインストールします。
apt install snapd -y
snap install --beta --classic certbot
snap set certbot trust-plugin-with-root=ok
snap install --beta certbot-dns-cloudflare
snap connect certbot:plugin certbot-dns-cloudflare
ワイルドカードSSL証明書の取得
certbot certonly --dns-cloudflare --dns-cloudflare-credentials /root/.secrets/cloudflare.ini -d example.com,*.example.com --preferred-challenges dns-01
Cronジョブによる自動更新の設定
- タイプ
crontab -e
- タイプ1用 nano editor
- 以下のコマンドを入力し、保存してください。
0 0 * * * /etc/init.d/apache2 reload >/dev/null 2>&1
タイプ
certbot renew --dry-run
これらの便利なモジュールを有効にする
a2enmod proxy_fcgi ssl http2 expires headers rewrite remoteip
systemctl restart apache2
6. インストールするWordPressサイトごとにApp Directoryを作成します。
mkdir -p /var/www/example.com/public
これは、Apacheの設定ファイル内のドキュメントルートのパスになります。wwwの中にexample.comを作ったのは、各サイトを整理しておくためです。次に、publicディレクトリを作成し、WordPressのコアファイル以外はそこに置くようにしました。ただし、wp-config.phpは一階層上(/var/www/example.com/)に置いています。
7. Apache2の設定を作成する
これは、ドメインを設定し、Apache2がHTTPリクエストをどのように処理すべきかを設定する必要がある場合に重要です。
Apache2のデフォルトサーバーブロック設定ファイルの削除
rm /etc/apache2/sites-available/000-default.conf
rm /etc/apache2/sites-available/default-ssl.conf
rm /etc/apache2/sites-enabled/000-default.conf
source /etc/apache2/envvars
ここで、新しいサーバーブロックの設定ファイルを作成します。同じサーバーに新しいWordPressを追加するたびに、このステップを実行する必要があります。
example.comを独自ドメインに置き換え、設定ファイル名の最後に拡張子.confを付けることを忘れないでください。さもないと、動作しません。
cd /etc/apache2/sites-available/
nano example.com.conf
- example.comを独自ドメインに置き換える
- 以下のコードを入力し、Ctrl+oで保存、Ctrl+xで終了してください。
##############################################################
#
# NOTES: Kindly make search and replace of example.com to own domain.
#
##############################################################
# We are going to Force HTTPS non-www
# If you want HTTPS www please keep https://www.example.com/ in the last line.
# Or you may face redirect loop issue.
<VirtualHost *:80>
ServerSignature Off
ServerName example.com
ServerAlias www.example.com
Redirect permanent / https://example.com/
</VirtualHost>
<VirtualHost *:443>
ServerSignature Off
ServerName example.com
ServerAlias www.example.com
Protocols h2 h2c http/1.1
DirectoryIndex index.php index.html
# Recommended for Cloudflare users
# RemoteIPHeader X-Forwarded-For
# Document Root Path (Pay attention to this path to avoid 404)
DocumentRoot /var/www/example.com/public
# Logs Path is /var/log/apache2/example.com-access.log
ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
# Let's Encrypt SSL
SSLEngine On
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
# Allow use of .htaccess file to override configuration
<Directory /var/www/example.com/public>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
# Block PHP execution inside Uploads Directory
<Directory /var/www/example.com/public/wp-content/uploads>
<Files *.php>
deny from all
</Files>
</Directory>
# Protect wp-config.php
<files wp-config.php>
order allow,deny
deny from all
</files>
# HTTP Auth for additional security
# If you want HTTP Auth for WordPress Login page then consider uncommenting this block of code.
# If you do so you must generate .htpasswd file as well.
# <Files wp-login.php>
# AuthName "Admins Only"
# AuthUserFile /var/www/.htpasswd
# AuthType basic
# require user gulshan
# <RequireAny>
# Require ip 127.0.0.1
# Require valid-user
# </RequireAny>
# </Files>
# Block XML-RPC to prevent DDoS Attack.
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>
# Handle PHP execution
<FilesMatch ".php$">
SetHandler "proxy:unix:/var/run/php/php8.2-fpm.sock|fcgi://localhost/"
</FilesMatch>
</VirtualHost>
To save, press CTRL+O and Enter key. Then, exit nano editor using command CTRL+X.
サーバーブロックを有効にするには、次のコマンドを入力します。
以下のコマンドを実行する前に、example.comを独自ドメインに置き換えてください。
a2ensite example.com.conf
テスト構成(オプション)
apache2 -t
再起動とアップデート
service apache2 restart && service php8.1-fpm restart && service mysql restart && apt-get update && apt upgrade -y
8. WordPressのファイルをインストールする
WordPressのファイルを/var/www/example.com/public/ディレクトリにダウンロードし、パーミッションを設定してください。
cd /var/www/example.com/public && wget https://ja.wordpress.org/latest-ja.tar.gz && tar -xvzf latest-ja.tar.gz && mv -v wordpress/* /var/www/example.com/public && rm -rf index.nginx-debian.test latest-ja.tar.gz wordpress && chown -R www-data:www-data /var/www/ && sudo chmod -R 755 /var/www
WordPressのファイルを/var/www/example.com/public/ディレクトリにダウンロードし、パーミッションを設定してください。
chown -R www-data:www-data /var/www/example.com/public/ && sudo chmod -R 755 /var/www/example.com/public/
9. DNSの更新
WordPressをローカルでホスティングしている場合、プロキシを回避したい場合、ダウンタイムなしの移行を行いたい場合、この手順が有効です。私は一般的に、静的なWordPressの開発領域の場合に適しています。
- DNSを指定するには、2つの方法があります。Vultr “にサイトを移行する場合、まずローカルでテストしたい場合は、hostsファイルを編集して、そこにDNSを指定します。
For Windows
- C:\Windows\System32\drivers\etc\hosts のプロパティに移動します。
- 現在のユーザー名で「セキュリティ」権限をフルコントロールに変更する。
- これで、自分のSystem userでhostsファイルを自由に編集し、保存することができます。
# For same machine you can have localhost address else public IP
127.0.0.1 example.com
127.0.0.1 www.example.com
例として、このように表示されます。
MacまたはLinuxの場合
hosts ファイルは、sudo ユーザでこのコマンドを使用して編集することができます。
sudo nano /etc/hosts
CloudflareでDNSを更新する
- 全て完璧に見え、サイトを公開したい場合は、Cloudflare DNSにログインし、新しいIPを更新してください。
Record Type | Name | Value |
---|---|---|
A | @ | IPV4 |
AAAA | @ | IPV6 |
CNAME | www | example.com |
ここで、@ はルート ドメイン example.com を示します
9. ドメイン名にアクセスして WordPress をセットアップする
WordPress で非 www バージョンのドメインを維持したい場合は、非 www バージョンの場合は www にアクセスしてください。
https://example.com
- WordPressのセットアップを開始するために、データベースにログインするためのクレデンシャルを提供します。
- ラン・インストール
- 新しいサイトの基本情報を入力し、WordPressをインストールします。
- WordPressにログインする
その他必要なもの
- 急激な負荷に対応するためスワップメモリを増設
swapoff -a
fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
sudo cp /etc/fstab /etc/fstab.bak
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
- サーバーの負荷を抑えるために、必ずPage Cachingプラグインを使用してください。LAMPスタックなので、WP Fastest Cacheをお勧めします。
- 常にバックアップをとっておく。
- WordPress の送信メールには SMTP プラグインサービスを使用してください。そうしないと、パスワードリセットリンク、コンタクトフォーム 7 のメッセージを受信することができません。
最後に、WordPressのインストールが完了しました。
この記事を読んでくださったあなたの貴重なお時間に大変感謝いたします。次回のチュートリアルでお会いしましょう