Nginx

本地 (WordPress) 站點的重複版本在 Nginx 環境中無法線上使用

  • January 10, 2018

在我的 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 訪問它之外,我真的不需要任何東西

選項

  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 { ... }的 a ,因此預設使用第一個塊。統計上是載入前servername``http://YOUR_IP/``server { ... }``example.com.conf``test.conf

Nginx正在尋找您的文件的錯誤root,因為主網站是預設網站。

推薦

使用選項 1 或 3。您的實時網站可能應該是訪問者看到的預設網站。我會選擇選項 1,因為它可以讓您進一步“隱藏”您的測試站點。選項 3 將生成“ http://ip/test ”,但出於上述原因,我仍然更喜歡選項 1。

引用自:https://serverfault.com/questions/888702