本地(WordPress)网站的复制版本在 Nginx 环境中无法在线使用

本地(WordPress)网站的复制版本在 Nginx 环境中无法在线使用

在我的 Ubuntu 16.04 Nginx 环境中,我尝试创建一个在线的本地 WordPress 站点的测试版本。原始站点运行良好,可通过 HTTPS 访问(所有页面中的锁定图标均为绿色)。

我目前的状况和问题

当我浏览时,my_ip_addrres/test我进入了原始网站(我想要复制的本地网站)的 404 页面,尽管 URL 保持不变my_ip_addrres/test。此外,该 404 页面中带有 URL 的所有主菜单链接my_ip_addrres/test都指向原始网站。

我期望的最终状态

当我在任何浏览器中导航到 时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');

Nginx 配置文件

日志:

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

除了直接从 IP 访问之外,我不需要任何东西

选项

  1. 只需使用 test.example.com 域名,即可省去很多麻烦。您甚至不必发布有效的 DNS 记录,只需编辑本地 HOSTS 文件即可。然后向 test.conf 文件添加服务器名称指令。
  2. 您需要确保测试配置是加载的第一个配置。将 sites-enabled 中的文件名更改为000-test.conf这意味着任何做傻事的人都会看到您的测试站点。
  3. 使用服务器 IP 将服务器名称指令添加到 test.conf
  4. 按顺序手动包含单个配置文件,而不是整个配置文件sites-enabled

解释

HelloWorld.html文件放入/var/www/html/example.com/test/。浏览到IP_ADDRESS/test/HelloWorld.html,您将看到文件的内容。由于您的配置没有server { ... }与之servername对应的 ,http://YOUR_IP/因此使用第一个server { ... }块作为默认值。从统计上讲,example.com.conf在之前加载test.conf

Nginxroot由于主网站是默认网站,因此查找您的文件是错误的。

推荐

使用选项 1 或 3。您的实时网站应该可能是网站访问者看到的默认内容。我会选择选项 1,因为它可以让你进一步“隐藏”你的测试网站。选项 3 将使“http://ip/测试“但出于上述原因,我仍然更喜欢选项 1。

相关内容