本地 (WordPress) 站點的重複版本在 Nginx 環境中無法線上使用
在我的 Ubuntu 16.04 Nginx 環境中,我嘗試創建本地 WordPress 站點的線上測試版本。原始站點執行良好,可通過 HTTPS 訪問(所有頁面中的鎖定圖示均為綠色)。
我目前的狀態和問題
當我瀏覽到
my_ip_addrres/test
原始站點(我希望複製的本地站點)中的 404 頁面時,即使 URL 仍然存在my_ip_addrres/test
。此外,帶有 URL 的 404 頁面中的所有主菜單連結都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 新手,我真的覺得我在軍火庫裡什麼都試過了……
除了直接從 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 { ... }
的 a ,因此預設使用第一個塊。統計上是載入前servername``http://YOUR_IP/``server { ... }``example.com.conf``test.conf
Nginx
正在尋找您的文件的錯誤root
,因為主網站是預設網站。推薦
使用選項 1 或 3。您的實時網站可能應該是訪問者看到的預設網站。我會選擇選項 1,因為它可以讓您進一步“隱藏”您的測試站點。選項 3 將生成“ http://ip/test ”,但出於上述原因,我仍然更喜歡選項 1。