在我的 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 访问之外,我不需要任何东西
选项:
- 只需使用 test.example.com 域名,即可省去很多麻烦。您甚至不必发布有效的 DNS 记录,只需编辑本地 HOSTS 文件即可。然后向 test.conf 文件添加服务器名称指令。
- 您需要确保测试配置是加载的第一个配置。将 sites-enabled 中的文件名更改为
000-test.conf
这意味着任何做傻事的人都会看到您的测试站点。 - 使用服务器 IP 将服务器名称指令添加到 test.conf
- 按顺序手动包含单个配置文件,而不是整个配置文件
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
Nginx
root
由于主网站是默认网站,因此查找您的文件是错误的。
推荐
使用选项 1 或 3。您的实时网站应该可能是网站访问者看到的默认内容。我会选择选项 1,因为它可以让你进一步“隐藏”你的测试网站。选项 3 将使“http://ip/测试“但出于上述原因,我仍然更喜欢选项 1。