web-dev-qa-db-ja.com

ローカル(WordPress)サイトの複製バージョンは、Nginx環境ではオンラインで利用できません

Ubuntu 16.04 Nginx環境で、ローカルWordPressサイトのonlineテストバージョンを作成しようとしました。元のサイト正常に動作し、HTTPSでアクセスされます(ロックファビコンはすべてのページで緑色です)。

私の現在の状態と問題

my_ip_addrres/testを参照すると、URLがmy_ip_addrres/testのままであっても、元のサイト(複製したいローカルサイト)の404ページにアクセスします。さらに、その404ページのmy_ip_addrres/test URLを持つすべてのメインメニューリンクは、元のサイトを指しています。

私の希望する最終状態

どのブラウザでもmy_ip_addrres/testに移動すると、元のサイトの複製バージョンに到達し、元のサイトを操作するのと同じように操作するので、my_ip_addrres/test/wp-adminに移動してログインし、それを変更できます。テストサイト。

元のサイトを複製するためにこれまでに行ったこと

私は基本的に次のbashコマンドですべてを行いました。最終的に複製したい場合は、これらを使用してください。

cd /var/www/html/
read domain # Domain of the site for duplication.
read -s rps # Password for Mysql root user.
read -s sps # Password for Mysql DB user.

cp -r ./${domain} ./test/
sed -i "s/${domain}/test"/g ./test/wp-config.php
cp -r /etc/nginx/sites-available/${domain}.conf /etc/nginx/sites-available/test.conf
sed -i "s/${domain}/test"/g /etc/nginx/sites-available/test.conf
ln -s /etc/nginx/sites-available/test.conf /etc/nginx/sites-enabled/test.conf

echo "CREATE USER 'test'@'localhost' IDENTIFIED BY \"${sps}\";" | mysql -u root -p"${rps}"
echo "CREATE database test;" | mysql -u root -p"${rps}"
echo "GRANT ALL PRIVILEGES ON test.* TO test@localhost;" | mysql -u root -p"${rps}"

mysqldump -u root -p"${rps}" "${domain}" > test.sql
mysql -u test -p"${sps}" test < ./test.sql

cd test 
wp search-replace "${domain}" "MY_IP_ADDRESS/test" --allow-root

詳細

1)上記のWP-CLI検索および置換コマンドを実行した後、データベースに約1300の置換がありました。

2)/var/www/html/test/wp-config.php

define('DB_NAME', 'test');
define('DB_USER', 'test');

Nginxconfs

ログ:

nginx -t

nginx:構成ファイル/etc/nginx/nginx.conf構文は問題ありません

nginx:構成ファイル/etc/nginx/nginx.confテストが成功しました

tail /var/log/nginx/error.log
tail /var/log/nginx/access.log
  • 両方のテールは、/var/www/html/test/に関するエラーを示していません。

私の質問

テストサイトがmy_ip_addrres/testから上がらない原因として考えられるものは何ですか? Nginxの初心者として、私は武器庫ですべてを試したと本当に感じています...

1
Arcticooling

IPから直接アクセスする以外に何も必要ありません

オプション

  1. 頭痛の種を半分減らして、test.example.comドメイン名を使用するだけです。ローカルのHOSTSファイルを編集するだけで、有効なDNSレコードを公開する必要はありません。そして、サーバー名ディレクティブをtest.confファイルに追加します。
  2. テスト構成がロードされる最初の構成であることを確認する必要があります。サイト対応のファイル名を000-test.confに変更します。これは、愚かなことをしている人は誰でもテストサイトを見ることができることを意味します。
  3. サーバーIPを使用してtest.confにサーバー名ディレクティブを追加します
  4. sites-enabled全体ではなく、個々の構成ファイルを順番に手動で含めます

説明

HelloWorld.htmlファイルを/var/www/html/example.com/test/に配置します。 IP_ADDRESS/test/HelloWorld.htmlを参照すると、ファイルの内容が表示されます。構成にはserver { ... }http://YOUR_IP/に対応するservernameがないため、デフォルトで最初のserver { ... }ブロックが使用されます。統計的に言えば、example.com.conftest.confの前にロードされます

NginxメインのWebサイトがデフォルトであるため、ファイルのrootが間違っていると考えています。

推奨事項

オプション1または3を使用します。ライブサイトは、おそらく訪問者に表示されるデフォルトのWebサイトである必要があります。オプション1を選択すると、テストサイトをさらに「隠す」ことができます。オプション3は " http:// ip/test "になりますが、上記の理由から、オプション1を引き続き使用します。

1
Daniel Widrick