Điểm:1

Localhost không thể truy cập bằng Wordpress

lá cờ nl

Tôi đã cố gắng thiết lập máy chủ của mình bằng một tên miền nhưng gặp phải lỗi 301 khi nhập URL vào trình duyệt. (http://localhost hoạt động tốt, nhưng http://example.com mang lại lỗi 301).

Tôi có các máy chủ DNS được trỏ đến đúng IP công cộng và bộ định tuyến được đặt thành chuyển tiếp cổng đến 80, tới cục bộ 80, tới đúng IP riêng.

apache2.conf đã được sửa đổi như sau

#<Thư mục /var/www/>
# Tùy chọn Chỉ mục FollowSymLinks
# AllowOverride Không có
# Yêu cầu tất cả được cấp
#</Thư mục>

<Thư mục /srv/>
    Tùy chọn FollowSymLinks
    AllowOverride Không có
    Yêu cầu tất cả cấp
</Thư mục>

Điều này là vì Wordpress được cài đặt theo đề xuất /srv/www/wordpress/ và không cần vị trí Apache mặc định khác cho một trang web....

wordpress.conf bên trong /etc/apache2/sites-enabled/ thư mục giống như sau:

<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>

Tôi đang sử dụng Ubuntu 20.04, Apache 2.4.41, Wordpress 5.8.1

Cập nhật ngày 23 tháng 9 năm 2021

Đã chỉnh sửa tiêu đề của câu hỏi này từ "Bắt lỗi 301 trên máy chủ Apache" thành "Không thể truy cập máy chủ cục bộ bằng Wordpress". Trước đây, tôi luôn nhận được phản hồi "hết thời gian chờ" khi vào miền của mình (http://example.com) từ mạng cục bộ của tôi mà máy chủ chạy trên đó. Lỗi 301 xảy ra khi một người khác, vào thời điểm đó, đã truy cập miền của tôi bên ngoài. Bây giờ tôi đã tìm ra cách để truy cập miền của mình từ bên ngoài, nhưng lỗi vẫn nhất quán: "Không thể truy cập máy chủ cục bộ". Nhân tiện, điều này dường như chỉ xảy ra trên trang Wordpress; khi tôi truy cập trang web "Nó hoạt động" mặc định thì không sao (tôi đã bỏ ghi chú apache2.conf dòng tôi đã đánh dấu trước đó). Điều này có lẽ là do Wordpress sử dụng cơ sở dữ liệu và mặc định tên máy chủ cho người dùng được "máy chủ cục bộ"?

[Đối với những người đang cố gắng nhập tên miền trỏ đến máy chủ của họ: nếu bạn đang thực hiện việc này từ cùng một mạng cục bộ nơi máy chủ đặt, nó sẽ không hoạt động (tìm kiếm "NAT loopback" để biết thêm về điều này). Đó không phải là cuộc thảo luận ở đây, nhưng tôi đề cập đến nó bởi vì nó đã tiêu tốn rất nhiều thời gian; máy chủ cục bộ hoạt động, sửa đổi /etc/hosts có thể thực hiện một số mánh gian lận--vẫn không mô phỏng yêu cầu bên ngoài theo hiểu biết của tôi--, nhưng cuối cùng, việc sử dụng tên miền sẽ không hoạt động.]

lá cờ in
Hai câu hỏi ... à ... ba, nhưng tôi sẽ dừng lại ở hai câu hỏi: (1) Apache có sở hữu hoặc có quyền truy cập các tệp trong `/srv/www/wordpress` (2) AppArmor có chạy không và nếu vậy, nó có được cấu hình để cho phép Apache truy cập nội dung của `/srv/www/wordpress` không?
jelt avatar
lá cờ nl
(1) là một gợi ý tuyệt vời; Tôi đã thiết lập Wordpress theo ID người dùng của mình, không phải mặc định của dữ liệu www (dường như Apache của Ubuntu cũng vậy). Tôi đã thực hiện đệ quy `chown -R www-data:www-data /srv/www` để khắc phục điều đó, nhưng nó không giải quyết được vấn đề. (2) Tôi không chắc làm cách nào để kiểm tra xem AppArmor có được cấu hình để cho phép Apache hay không, nhưng nó đang chạy nên tôi tạm dừng nó để kiểm tra, nhưng nó cũng không mang lại kết quả.
lá cờ in
Nếu AppArmor đang chạy, thì cũng có thể có các mô-đun được tải cho Apache cần phải tắt: `sudo a2dismod apparmor` sau đó `sudo service apache2 restart` có thể cung cấp cho bạn thứ bạn cần. Tuy nhiên, lý tưởng nhất là không có lý do gì để có các tệp Apache bên ngoài `/var/www`, vì nhiều thứ theo mặc định chỉ mong đợi Apache tồn tại trong đó ...
jelt avatar
lá cờ nl
AppArmor không phải là một mod được kích hoạt trong thiết lập của tôi; tuy nhiên, dịch vụ AppArmor đang chạy, sau đó tôi tạm thời dừng dịch vụ này để thử nghiệm như đã lưu ý. Tôi đã theo dõi ubuntu.com/tutorials để cài đặt WordPress cho biết vị trí /srv.
lá cờ in
Vậy thì hãy nhìn mọi thứ từ một góc độ khác. Bạn có thể truy cập máy chủ từ `localhost`, nhưng không thể truy cập từ bên ngoài. `301` là chuyển hướng vĩnh viễn. Bạn đã cài đặt WordPress qua `http://localhost` hay với tên miền bạn muốn sử dụng? Nếu `localhost` đã được sử dụng, thì có thể có một số điều bạn cần thay đổi trong cấu hình WordPress
jelt avatar
lá cờ nl
Nếu bạn muốn xem hướng dẫn khá ngắn gọn mà tôi đã làm theo bất cứ lúc nào (https://ubuntu.com/tutorials/install-and-configure-wordpress#1-overview) --chỉ khác với phần phụ thuộc, tôi đã thay thế `www -data` với ID người dùng của tôi trong từng trường hợp. Theo câu hỏi của bạn, tôi đoán tôi đã cài đặt cho `localhost` trước, sau đó thêm tùy chọn `ServerName` vào lệnh trong `wordpress.conf` sau
jelt avatar
lá cờ nl
Ý tôi là tôi đặt `ServerName example.com`....
Điểm:0
lá cờ nl

Vì vậy, cách khắc phục là cơ sở dữ liệu Wordpress cần được cập nhật. Để làm điều này:

Với quyền truy cập vào tài khoản Wordpress của bạn, chỉ cần thay đổi URL Wordpress và URL trang web trong Cài đặt -> Chung:

Địa chỉ WordPress (URL): <site_URL_here>

Địa chỉ trang web (URL): <site_URL_here>

HOẶC

Với quyền truy cập vào cơ sở dữ liệu Wordpress của bạn

  1. đăng nhập vào mysql bằng tên người dùng của trang wordpress của bạn (nếu bạn quên tên người dùng của mình, tên đó nằm trong wp-config.php trong thư mục gốc của trang wordpress của bạn; mật khẩu tương ứng cũng ở đó)
mysql -u <user_name_here> -p
  1. chọn cơ sở dữ liệu cho trang web của bạn (một lần nữa, bạn đã bảo vệ wp-config.php nếu bạn quên)
sử dụng <database_name_here>
  1. BƯỚC CHÍNH: cập nhật các bản ghi "home" và "siteurl" (wordpress tài liệu chính thức lưu ý rằng bạn nên bỏ qua bất kỳ dấu '/' nào trên URL của mình)
CẬP NHẬT wp_options SET option_value="http://<site_URL_here>" WHERE option_name="home";
CẬP NHẬT wp_options SET option_value="http://<site_URL_here>" WHERE option_name="siteurl";
  1. kiểm tra các bản ghi cơ sở dữ liệu vừa được cập nhật
CHỌN * TỪ wp_options WHERE option_name = "home" OR option_name = "siteurl";

Đó là nó cho vấn đề đó.

Theo việc có thể truy cập trang web của bạn tại địa chỉ mới:

Nếu trang web wordpress đang được lưu trữ trên mạng cục bộ của riêng bạn, như đã lưu ý, bạn sẽ KHÔNG thể truy cập nó NỘI BỘ, tức là từ một thiết bị trên cùng một mạng cục bộ (bao gồm cả máy chủ); dù qua localhost hay cả URL bạn vừa nhập ở các bước trên đều không được. Bạn CHỈ CÓ THỂ truy cập trang web BÊN NGOÀI (ví dụ: từ điện thoại sử dụng dữ liệu, từ một số máy tính trong mạng của bạn bè, từ máy tính tại nơi làm việc, v.v.). Bởi vì đó là một vấn đề khó khăn, hai tùy chọn tôi tìm thấy để bạn vẫn có thể truy cập trang web NỘI BỘ là: i) bạn có một bộ định tuyến có thể xử lý NAT loopback ii) bạn sử dụng Mạng riêng ảo

Tôi chưa kiểm tra (i), nhưng tôi biết rằng (ii) hoạt động vì tôi chỉ làm điều đó. Khi VPN được bật, hãy điều hướng đến URL của bạn và bạn sẽ có thể xem trang web.

Tôi nghĩ rằng điểm này thực sự nên được biết đến nhiều hơn với các hướng dẫn về cách thiết lập và tạo trang Wordpress trên mạng cục bộ

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.