Score:1

ไม่สามารถเข้าถึง Localhost ด้วย Wordpress

ธง nl

ฉันพยายามตั้งค่าเซิร์ฟเวอร์ด้วยชื่อโดเมน แต่ได้รับข้อผิดพลาด 301 เมื่อพิมพ์ URL ในเบราว์เซอร์ (http://localhost ทำงานได้ดี แต่ http://example.com ให้ข้อผิดพลาด 301)

ฉันมีเซิร์ฟเวอร์ DNS ชี้ไปที่ IP สาธารณะที่ถูกต้อง และเราเตอร์ตั้งค่าให้ส่งต่อพอร์ตขาเข้า 80 ไปยัง 80 ในเครื่องไปยัง IP ส่วนตัวที่ถูกต้อง

apache2.conf ได้รับการแก้ไขดังนี้

#<ไดเร็กทอรี /var/www/>
# ดัชนีตัวเลือก FollowSymLinks
# AllowOverride ไม่มี
#ต้องได้รับทั้งหมด
#</ไดเร็กทอรี>

<ไดเร็กทอรี /srv/>
    ตัวเลือก FollowSymLinks
    AllowOverride ไม่มี
    ต้องได้รับอนุญาตทั้งหมด
</ไดเร็กทอรี>

นี่เป็นเพราะ Wordpress ที่ติดตั้งตามคำแนะนำ /srv/www/เวิร์ดเพรส/ และไม่ต้องการตำแหน่ง Apache เริ่มต้นอื่นสำหรับเว็บไซต์....

wordpress.conf ใน /etc/apache2/sites-enabled/ โฟลเดอร์มีลักษณะดังต่อไปนี้:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias *.example.com

    DocumentRoot /srv/www/wordpress
    <Directory /srv/www/wordpress>
        Options FollowSymLinks
        AllowOverride Limit Options FileInfo
        DirectoryIndex index.php
        Require all granted
    </Directory>
    <Directory /srv/www/wordpress/wp-content>
        Options FollowSymLinks
        Require all granted
    </Directory>
</VirtualHost>

ฉันใช้ Ubuntu 20.04, Apache 2.4.41, Wordpress 5.8.1

อัปเดต 23 กันยายน 2021

แก้ไขชื่อเรื่องของคำถามนี้จาก "การรับข้อผิดพลาด 301 บนเซิร์ฟเวอร์ Apache" เป็น "Localhost ไม่สามารถเข้าถึงได้ด้วย Wordpress" ก่อนหน้านี้ ฉันมักจะได้รับการตอบกลับว่า "หมดเวลา" เมื่อป้อนโดเมนของฉัน (http://example.com) จากเครือข่ายท้องถิ่นของฉันที่เซิร์ฟเวอร์ทำงานอยู่ ข้อผิดพลาด 301 เกิดขึ้นเมื่อมีผู้อื่นเข้าถึงโดเมนของฉันในขณะนั้น ภายนอก. ตอนนี้ฉันพบวิธีเข้าถึงโดเมนของฉันจากภายนอกแล้ว ข้อผิดพลาดก็สอดคล้องกัน: "Localhost is unreachable" อย่างไรก็ตาม ดูเหมือนว่าจะเกิดขึ้นบนไซต์ Wordpress เท่านั้น เมื่อฉันเข้าถึงไซต์เริ่มต้น "ใช้งานได้" ก็ไม่เป็นไร (ฉันไม่ได้แสดงความคิดเห็นในไฟล์ apache2.conf บรรทัดที่ฉันเน้นไว้ก่อนหน้านี้) นี่อาจเป็นเพราะ Wordpress ใช้ฐานข้อมูลและเป็นค่าเริ่มต้น ชื่อโฮสต์ สำหรับผู้ใช้ที่เป็น "โลคอลโฮสต์"?

[สำหรับผู้ที่พยายามป้อนโดเมนที่ชี้ไปยังเซิร์ฟเวอร์ของตน: หากคุณทำสิ่งนี้จากเครือข่ายท้องถิ่นเดียวกันกับที่เซิร์ฟเวอร์ตั้งอยู่ การดำเนินการนี้จะไม่ทำงาน (ค้นหา "NAT loopback" สำหรับข้อมูลเพิ่มเติม) นั่นไม่ใช่การอภิปรายที่นี่ แต่ฉันพูดถึงเพราะมันจมเวลาไปมาก โลคัลโฮสต์ ทำงาน, แก้ไข / etc / โฮสต์ สามารถทำกลโกงบางอย่างได้ -- ยังไม่จำลองคำขอภายนอกจากความรู้ของฉัน -- แต่ท้ายที่สุด การใช้ชื่อโดเมนจะไม่ได้ผล]

in flag
คำถามสองข้อ ... ก็ ... สาม แต่ฉันจะหยุดที่ข้อสอง: (1) Apache เป็นเจ้าของหรือได้รับอนุญาตให้เข้าถึงไฟล์ใน `/srv/www/wordpress` (2) AppArmor ทำงานอยู่หรือไม่ และถ้า ดังนั้น มีการกำหนดค่าให้ Apache เข้าถึงเนื้อหาของ `/srv/www/wordpress` หรือไม่
jelt avatar
nl flag
(1) เป็นคำแนะนำที่ดี ฉันตั้งค่า Wordpress ภายใต้ ID ผู้ใช้ของฉัน ไม่ใช่ค่าเริ่มต้นของ www-data (ซึ่งเห็นได้ชัดว่า Apache ของ Ubuntu ก็ทำเช่นกัน) ฉันใช้ `chown -R www-data:www-data /srv/www` แบบเรียกซ้ำเพื่อแก้ไข แต่ไม่ได้แก้ปัญหา (2) ฉันไม่แน่ใจว่าจะตรวจสอบได้อย่างไรว่า AppArmor ได้รับการกำหนดค่าให้อนุญาต Apache หรือไม่ แต่มันกำลังทำงานอยู่ ดังนั้นฉันจึงหยุดมันชั่วครู่เพื่อตรวจสอบ แต่ก็ไม่ได้ผลเช่นกัน
in flag
หาก AppArmor ทำงานอยู่ อาจมีโมดูลที่โหลดสำหรับ Apache ที่ต้องปิดใช้งาน: `sudo a2dismod apparmor' จากนั้น `sudo service apache2 restart` อาจให้สิ่งที่คุณต้องการ ตามหลักการแล้ว ไม่ควรมีเหตุผลใดๆ ที่จะมีไฟล์ Apache นอก `/var/www` เนื่องจากโดยค่าเริ่มต้นแล้ว หลายๆ สิ่งเพียงแค่คาดหวังให้ Apache อยู่ในนั้น ...
jelt avatar
nl flag
AppArmor ไม่ใช่ mod ที่เปิดใช้งานในการตั้งค่าของฉัน อย่างไรก็ตาม บริการ AppArmor กำลังทำงานอยู่ จากนั้นฉันก็หยุดบริการชั่วคราวเพื่อทดสอบตามที่ระบุไว้ ubuntu.com/tutorials สำหรับการติดตั้ง WordPress ที่ฉันติดตามระบุตำแหน่ง /srv
in flag
ลองดูสิ่งต่าง ๆ จากมุมอื่น คุณสามารถเข้าถึงเซิร์ฟเวอร์จาก 'localhost' ได้ แต่เข้าถึงจากภายนอกไม่ได้ `301` คือการเปลี่ยนเส้นทางอย่างถาวร คุณติดตั้ง WordPress ผ่าน `http://localhost` หรือด้วยโดเมนที่คุณต้องการใช้หรือไม่ หากใช้ `localhost` อาจมีบางสิ่งที่คุณต้องเปลี่ยนในการกำหนดค่า WordPress
jelt avatar
nl flag
หากคุณต้องการดูบทช่วยสอนที่ค่อนข้างกระชับที่ฉันติดตามเมื่อใดก็ได้ (https://ubuntu.com/tutorials/install-and-configure-wordpress#1-overview) -- ความแตกต่างเพียงอย่างเดียวนอกเหนือจากการพึ่งพา คือฉันแทนที่ `www -data` ด้วย ID ผู้ใช้ของฉันในแต่ละอินสแตนซ์ตลอด ตามคำถามของคุณ ฉันเดาว่าฉันได้ติดตั้งสำหรับ `localhost` ก่อน จากนั้นจึงเพิ่มตัวเลือก 'ชื่อเซิร์ฟเวอร์' ให้กับคำสั่งใน 'wordpress.conf' ในภายหลัง
jelt avatar
nl flag
ฉันหมายความว่าฉันตั้งค่า `ชื่อเซิร์ฟเวอร์ example.com`....
Score:0
ธง nl

ดังนั้นการแก้ไขคือต้องอัปเดตฐานข้อมูล Wordpress เพื่อทำสิ่งนี้:

ด้วยการเข้าถึงบัญชี Wordpress ของคุณ เพียงเปลี่ยน URL ของ Wordpress และ URL ของไซต์ในการตั้งค่า -> ทั่วไป:

ที่อยู่ WordPress (URL): <site_URL_here>

ที่อยู่ไซต์ (URL): <site_URL_here>

หรือ

ด้วยการเข้าถึงฐานข้อมูล Wordpress ของคุณ

  1. ลงชื่อเข้าใช้ mysql ด้วยชื่อผู้ใช้ของเว็บไซต์ wordpress ของคุณ (หากคุณลืมชื่อผู้ใช้ของคุณ ชื่อผู้ใช้จะอยู่ใน wp-config.php ในไดเร็กทอรีรากของเว็บไซต์ wordpress ของคุณ รหัสผ่านที่เกี่ยวข้องก็อยู่ที่นั่นด้วย)
mysql -u <ชื่อผู้ใช้_ที่นี่> -หน้า
  1. เลือกฐานข้อมูลสำหรับไซต์ของคุณ (อีกครั้ง คุณครอบคลุม wp-config.php หากคุณลืม)
ใช้ <database_name_here>
  1. ขั้นตอนสำคัญ: อัปเดตระเบียน "home" และ "siteurl" (wordpress เอกสารอย่างเป็นทางการ โปรดทราบว่าคุณควรละเว้น '/' ต่อท้าย URL ของคุณ)
อัปเดต wp_options SET option_value="http://<site_URL_here>" WHERE option_name="home";
อัปเดต wp_options SET option_value="http://<site_URL_here>" WHERE option_name="siteurl";
  1. ตรวจสอบว่าบันทึกฐานข้อมูลเพิ่งอัปเดต
เลือก * จาก wp_options โดยที่ option_name = "home" หรือ option_name = "siteurl";

นั่นแหละสำหรับประเด็นนั้น

ตามความสามารถในการเข้าถึงไซต์ของคุณตามที่อยู่ใหม่:

หากไซต์ wordpress ถูกโฮสต์บนเครือข่ายท้องถิ่นของคุณ ตามที่ระบุไว้ คุณจะไม่สามารถเข้าถึงได้ภายใน นั่นคือ จากอุปกรณ์บนเครือข่ายท้องถิ่นเดียวกัน (รวมถึงเซิร์ฟเวอร์) ไม่ว่าจะผ่าน localhost หรือแม้แต่ URL ที่คุณเพิ่งป้อนในขั้นตอนข้างต้น ก็จะไม่สามารถใช้งานได้ คุณสามารถเข้าถึงไซต์ภายนอกเท่านั้น (เช่น จากโทรศัพท์ที่ใช้ข้อมูล จากคอมพิวเตอร์บางเครื่องในเครือข่ายของเพื่อน จากคอมพิวเตอร์ในที่ทำงาน ฯลฯ) เนื่องจากนั่นเป็นเรื่องที่น่าปวดหัว ฉันพบสองตัวเลือกเพื่อให้คุณยังคงสามารถเข้าถึงไซต์ภายในได้คือ: i) คุณมีเราเตอร์ที่สามารถจัดการ NAT ลูปแบ็คได้ ii) คุณใช้เครือข่ายส่วนตัวเสมือน

ฉันยังไม่ได้ทดสอบ (i) แต่ฉันรู้ว่า (ii) ได้ผลเพราะฉันทำอย่างนั้น เมื่อ VPN เปิดอยู่ ให้ไปที่ URL ของคุณและคุณจะสามารถดูไซต์ได้

ฉันคิดว่าประเด็นนี้ควรเป็นที่รู้จักมากขึ้นสำหรับบทช่วยสอนเกี่ยวกับการตั้งค่าและการสร้างไซต์ Wordpress บนเครือข่ายท้องถิ่น

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา