Thứ năm, 21/08/2014 | 00:00 GMT+7

Cách thiết lập nhiều trang web WordPress với Nginx trên Ubuntu 14.04

Tính năng multisite của WordPress cung cấp khả năng tạo nhiều trang web từ một cài đặt WordPress duy nhất. Mỗi trang web có thể có một chủ đề riêng biệt, bộ plugin và bộ sưu tập nội dung (bài đăng và trang). Điều này làm giảm chi phí duy trì và cập nhật một số cài đặt của WordPress, đồng thời cho phép bạn lưu trữ nhiều trang web hoàn toàn không liên quan đến nhau.

Đa trang WordPress có hai loại: folder con hoặc domain phụ. Trong hướng dẫn này, ta sẽ cài đặt nhiều trang web WordPress để sử dụng domain phụ. Điều đó nghĩa là các trang web ta tạo sẽ có địa chỉ web domain phụ như http://wp-site.yourdomain.com . Điều này có thể được ánh xạ tới một domain bên ngoài như http://wp-site.net để mỗi trang web trông độc lập với bên ngoài.

Yêu cầu

Hướng dẫn này yêu cầu user phải có kiến thức về những điều sau:

Ta sẽ tạo ba trang web WordPress với các domain sau:

  • Trang 1:

    Miền: examplewp.com (Miền chính)

    Đây là trang web được tạo khi WordPress được cài đặt.

  • Trang 2:

    Tên domain bên ngoài: shoppingsite.com

    Tên domain phụ: shoppingsite.example.com

  • Trang 3:

    Tên domain bên ngoài: companysite.org

    Tên domain phụ: companysite.example.com

Miền đầu tiên là domain chính mà qua đó WordPress sẽ được cài đặt. Đảm bảo cài đặt DNS cho cả ba domain để trỏ đến địa chỉ IP của Server sẽ lưu trữ WordPress.

Bước một - Cài đặt bản ghi ký tự đại diện DNS

Trong phần này, ta sẽ thêm bản ghi ký tự đại diện DNS cho miền chính để có thể thêm nhiều trang web hơn bất kỳ lúc nào mà không cần bản ghi A riêng lẻ. (Ngoài ra, bạn có thể thêm bản ghi A mới cho từng domain phụ.)

Lưu ý: Điều này chỉ được thực hiện cho * tên domain chính ( examplewp.com trong hướng dẫn này).

Đăng nhập vào console DigitalOcean của bạn và chuyển đến phần Mạng. Chỉnh sửa domain chính và tạo một ký tự đại diện Bản ghi cho domain này trỏ đến địa chỉ IP của Server. Bản ghi ký tự đại diện được tạo bằng lệnh dấu hoa thị (*) vào ô nhập tên server như trong ảnh chụp màn hình bên dưới.

 Control panel  DNS - bản ghi ký tự đại diện

Nếu bạn lưu trữ DNS của domain của bạn ở nơi khác, bạn nên đặt bản ghi ký tự đại diện ở đó.

Những gì bạn sẽ thấy bây giờ:

Các truy vấn DNS cho bất kỳ random-sub-domain.examplewp.com sẽ trả về địa chỉ IP của Server.

Bước hai - Cài đặt và cấu hình LEMP Stack

Trong phần này, ta sẽ cài đặt và cấu hình Nginx, MySQL và PHP. Có một bài viết chi tiết về cách cài đặt LEMP mà bạn có thể tham khảo nếu muốn. Phần này sẽ phục vụ như một cài đặt nhanh chóng. Ngoài ra còn có hình ảnh LEMP trên Ubuntu 14.04 trong tab Ứng dụng trong phần Chọn Hình ảnh khi tạo Server .

Cập nhật repository và cài đặt Nginx, MySQL, PHP5-FPM và các module PHP cần thiết khác.

apt-get update apt-get install -y nginx mysql-server php5-fpm php5-mysql php5-curl php5-mcrypt php5-gd 

Khi server MySQL đang được cài đặt, bạn sẽ được yêu cầu nhập password cho user database root . Vui lòng nhập một password mạnh và không để trống . Bạn sẽ nhập password hai lần.

Mật khẩu root  MySQL

Tạo một root tài liệu cho Nginx sẽ chứa các file WordPress. Ta sẽ sử dụng / usr / share / nginx / wordpress trong suốt hướng dẫn này.

mkdir /usr/share/nginx/wordpress 

Ta sẽ thay thế server ảo mặc định của Nginx bằng server của ta , vì vậy hãy xóa softlink của nó trong folder hỗ trợ trang web .

rm /etc/nginx/sites-enabled/default 

Tạo một file server ảo mới bên trong folder trang web có sẵn . Tệp này có thể được đặt tên là bất cứ thứ gì. Trong ví dụ của ta , ta sẽ gọi nó là wp-ms .

nano /etc/nginx/sites-available/wp-ms 

Chỉnh sửa file này và đặt cấu hình sau. Chỉnh sửa văn bản được đánh dấu màu đỏ theo môi trường của bạn. Trong dòng server_name , bạn nên thêm cả ba (hoặc nhiều hơn) domain multisite của bạn và domain phụ ký tự đại diện cho domain đầu tiên.

server {     listen [::]:80 ipv6only=off;     server_name examplewp.com *.examplewp.com shoppingsite.com companysite.org;      root /usr/share/nginx/wordpress;     index index.php index.html index.htm;      location / {         try_files $uri $uri/ /index.php?$args ;     }      location ~ /favicon.ico {         access_log off;         log_not_found off;     }      location ~ \.php$ {         try_files $uri /index.php;         include fastcgi_params;         fastcgi_pass unix:/var/run/php5-fpm.sock;     }      access_log  /var/log/nginx/$host-access.log;     error_log   /var/log/nginx/wpms-error.log; } 

Nếu Server này sẽ chỉ lưu trữ cài đặt WordPress này, thì chỉ thị listenserver_name có thể được thay đổi thành như sau:

listen [::]:80 default_server ipv6only=off; server_name examplewp.com *.examplewp.com; 

Việc sử dụng biến $host trong chỉ thị access_log sẽ tạo ra các file log riêng biệt cho từng domain như examplewp.com-access.logshoppingsite.com-access.log . Không thể sử dụng các biến như vậy cho chỉ thị error_log , vì vậy tất cả các lỗi được ghi vào một file duy nhất.

Lưu file này và tạo một softlink của file này trong folder hỗ trợ trang web .

ln -s /etc/nginx/sites-available/wp-ms /etc/nginx/sites-enabled/wp-ms 

Thực hiện kiểm tra cấu hình Nginx và khởi động lại nếu nó trả về OK .

service nginx configtest service nginx restart 

Bước 3 - Tạo Database MySQL và User cho WordPress

Trong phần này, ta sẽ tạo database MySQL cho WordPress và user chỉ có quyền đối với database này.

Đăng nhập vào dòng lệnh MySQL với quyền là user root .

mysql -u root -p 

Tạo database .

CREATE DATABASE wordpress; 

Tạo user MySQL và cấp quyền cho database này:

CREATE USER 'wordpress_user'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress_user'@'localhost'; 

Thay thế mật khẩu từ bằng một password mạnh. Xóa các quyền và thoát khỏi dòng lệnh MySQL.

FLUSH PRIVILEGES; exit 

Ghi lại những chi tiết này vì cần chúng trong Bước bốn.

Tên database : wordpress

User database : wordpress_user

Mật khẩu database : mật khẩu

Thông tin thêm về user MySQL có thể được tìm thấy trong bài viết này .

Bước 4 - Download và cài đặt WordPress

Trong phần này, ta sẽ download version mới nhất của WordPress và cài đặt nó. Điều này sẽ dành cho trang web đầu tiên của ta , examplewp.com .

Download và extract WordPress.

wget http://wordpress.org/latest.tar.gz tar -xf latest.tar.gz 

Di chuyển các file đã extract vào root tài liệu.

mv wordpress/* /usr/share/nginx/wordpress/ 

Chỉ định quyền sở hữu cho user www-data . Điều này là cần thiết cho việc tải lên phương tiện và để các bản cập nhật lõi / plugin / chủ đề hoạt động trong WordPress.

chown -R www-data:www-data /usr/share/nginx/wordpress 

Truy cập tên domain chính trong trình duyệt của bạn để bắt đầu cài đặt WordPress.

http://examplewp.com/ 

Bạn có thể thêm hậu tố “www” vào URL nếu cần. Nhấp vào nút Tạo file cấu hình, sau đó nhấp vào Bắt đầu! cái nút. Điền thông tin chi tiết về database (sử dụng thông tin từ Bước Ba) và nhấp vào Gửi .

Chi tiết database  WordPress

Đến đây, WordPress sẽ cài đặt kết nối với database để kiểm tra thông tin đăng nhập đã nhập. Khi kết nối thành công, nút Chạy cài đặt xuất hiện. Nhấn vào nó. Hoàn thành biểu mẫu Thông tin cần thiết để cài đặt tiêu đề trang web, tên user , password và email của bạn, sau đó nhấp vào Cài đặt WordPress . Bạn nên chọn một tên user không chung chung để bảo mật.

Màn hình chào mừng của WordPress

Bước 5 - Bật Multisite và Tạo các Trang web Bổ sung

Trong phần này, ta sẽ cho phép WordPress nhiều trang và tạo ra hai trang web bổ sung đề cập trong phần Prequisites của bài viết này.

Một hằng số PHP phải được xác định trong file wp-config.php để kích hoạt trang Cài đặt mạng .

Chỉnh sửa file wp-config.php :

nano /usr/share/nginx/wordpress/wp-config.php 

Thêm đoạn mã sau vào trước comment /* That's all, stop editing! Happy blogging. */ :

/* Multisite settings */ define( 'WP_ALLOW_MULTISITE', true ); 

Ta sẽ chỉnh sửa file này một vài lần nữa trong hướng dẫn này. Vui lòng thêm tất cả các dòng mới trong phần /* Multisite settings */ mà ta vừa tạo.

Lưu các file . Đăng nhập vào bảng quản trị WordPress và chuyển đến Công cụ> Cài đặt mạng . Chọn tùy chọn Tên domain phụ , sửa đổi Tiêu đề mạng như mong muốn, sau đó nhấp vào Cài đặt .

 Cài đặt  mạng WordPress

Bạn sẽ thấy hai khối mã sẽ được thêm vào trong tệp wp-config.php.htaccess . Sao chép mã wp-config.php trông giống như sau:

define('MULTISITE', true); define('SUBDOMAIN_INSTALL', true); define('DOMAIN_CURRENT_SITE', 'examplewp.com'); define('PATH_CURRENT_SITE', '/'); define('SITE_ID_CURRENT_SITE', 1); define('BLOG_ID_CURRENT_SITE', 1); 

Chỉnh sửa file wp-config.php .

nano /usr/share/nginx/wordpress/wp-config.php 

Thêm những dòng này vào trước comment /* That's all, stop editing! Happy blogging. */ và lưu nó. Có thể bỏ qua mã hiển thị cho .htaccess vì Nginx không có file này.

Đăng xuất khỏi bảng quản trị WordPress và đăng nhập lại. Từ thanh công cụ quản trị ở trên cùng bên trái, chuyển đến Trang web của tôi> Quản trị mạng> Trang web .

Thanh công cụ WordPress

Bấm vào nút Thêm Mới để mở biểu mẫu Thêm Trang web Mới . Ảnh chụp màn hình sau đây hiển thị các chi tiết đã điền cho trang web mua sắm trong ví dụ của ta . Địa chỉ Trang web được nhập sẽ tạo thành domain phụ của trang web này.

Tạo một trang WordPress mới

Nhấp vào Thêm trang web và trang web đã tạo sẽ có thể truy cập được qua http://shoppingsite.examplewp.com .

Lặp lại các bước này để tạo trang web thứ hai (companysite.examplewp.com trong ví dụ của ta ).

Những gì bạn sẽ thấy bây giờ:

Ba trang WordPress sau:

  • examplewp.com
  • shoppingsite.examplewp.com
  • companysite.examplewp.com

Mỗi người trong số họ sẽ có nội dung, chủ đề và bộ plugin hoạt động của riêng họ.

Bước 6 - Cài đặt ánh xạ domain

Trong phần này, ta sẽ cho phép bạn sử dụng một domain riêng biệt cho mỗi trang web WordPress, bằng cách download và bật plugin Bản đồ domain WordPress MU. Plugin này cho phép user WordPress Multisite ánh xạ blog / trang web của họ sang một domain khác.

Đăng nhập vào Server qua SSH và download plugin Bản đồ domain MU của WordPress . Đầu tiên hãy cài đặt lệnh unzip , sau đó extract plugin.

wget http://downloads.wordpress.org/plugin/wordpress-mu-domain-mapping.latest-stable.zip apt-get install unzip unzip wordpress-mu-domain-mapping.latest-stable.zip 

Di chuyển các file đã extract vào folder plugin WordPress.

mv wordpress-mu-domain-mapping /usr/share/nginx/wordpress/wp-content/plugins/ 

Sao chép file Sunrise.php từ folder của plugin vào folder wp-content .

cp /usr/share/nginx/wordpress/wp-content/plugins/wordpress-mu-domain-mapping/sunrise.php /usr/share/nginx/wordpress/wp-content/ 

Chỉnh sửa file wp-config.php và thêm dòng sau trước comment /* That's all, stop editing! Happy blogging. */ .

Tệp: /usr/share/nginx/wordpress/ wp-config.php

define('SUNRISE', 'on'); 

Lưu file này và quay lại trình duyệt web. Từ thanh công cụ của WordPress, chuyển đến Trang web của tôi> Quản trị mạng> Plugin .

bổ sung

Nhấp vào liên kết Kích hoạt mạng trong plugin Bản đồ domain WordPress MU . Đi tới Cài đặt> Ánh xạ domain và áp dụng các thay đổi đối với Tùy chọn domain như sau:

  • Bỏ chọn Đăng nhập từ xa
  • Kiểm tra chuyển hướng vĩnh viễn
  • Bỏ chọn Chuyển hướng các trang quản trị đến domain root của trang web

Tùy chọn ánh xạ domain

Nhấp vào Lưu sau khi hoàn tất. Các cài đặt này chuyển hướng tất cả các yêu cầu cho các domain phụ (như companysite.examplewp.com) đến các domain bên ngoài tương ứng của chúng (như companysite.org) bao gồm cả các trang quản trị (/ wp-admin).

Trong bước tiếp theo, ta sẽ ánh xạ một domain đến từng trang web dựa trên ID trang web của nó. Có nhiều cách để tìm ID của một trang web nhưng để quản trị dễ dàng hơn, ta sẽ tạo một plugin WordPress Must-use đơn giản hiển thị một cột ID bổ sung trên trang Sites .

Đăng nhập vào Server qua SSH và tạo folder mu-plugins .

mkdir /usr/share/nginx/wordpress/wp-content/mu-plugins 

Tạo một file PHP bên trong folder này và dán mã sau:

nano /usr/share/nginx/wordpress/wp-content/mu-plugins/wpms_blogid.php 

Bạn có thể sao chép chính xác nội dung này:

<?php add_filter( 'wpmu_blogs_columns', 'do_get_id' ); add_action( 'manage_sites_custom_column', 'do_add_columns', 10, 2 ); add_action( 'manage_blogs_custom_column', 'do_add_columns', 10, 2 );  function do_add_columns( $column_name, $blog_id ) {     if ( 'blog_id' === $column_name )         echo $blog_id;     return $column_name; }  function do_get_id( $columns ) {     $columns['blog_id'] = 'ID';     return $columns; } 

Phần Trang web> Tất cả các trang web bây giờ sẽ hiển thị một cột ID bổ sung.

TÔI

Ghi lại các giá trị ID cho từng trang web và chuyển đến trang Cài đặt> Tên domain . Nhập ID trang web theo sau là domain bên ngoài cho trang web. Ví dụ: vì companysite có ID là 3, trên trang này, ID trang phải là 3 và domain phải là companysite.org .

Ánh xạ ID trang web với một domain

Bạn có thể thêm tiền tố “www” nếu bạn muốn đặt URL của trang web là www.companysite.org . Lặp lại các bước này cho các domain khác. Nhấp vào Lưu ở cuối trang.

Những gì bạn sẽ thấy bây giờ:

Mỗi trang web sẽ có domain riêng thay vì domain phụ; tức là, nhập http://companysite.org trong trình duyệt của bạn sẽ mở Trang web Công ty Trực tuyến của Tôi . Bạn có thể kiểm tra ngay bây giờ bằng cách truy cập http://shoppingsite.comhttp://companysite.org . Bạn sẽ thấy sự thay đổi tiêu đề trang web ở góc trên bên trái của trang.

Như vậy, mỗi trang web có thể được duy trì riêng biệt thông qua bảng quản trị WordPress của riêng nó:

http://examplewp.com/wp-admin/ http://shoppingsite.com/wp-admin/ http://companysite.org/wp-admin/ 

Cập nhật cho lõi / plugin / chủ đề và cài đặt plugin / chủ đề phải được thực hiện từ trang quản trị mạng của domain chính:

http://examplewp.com/wp-admin/network/ 

đọc thêm


Tags:

Các tin liên quan

Cách cài đặt và bảo mật phpMyAdmin với Nginx trên server Ubuntu 14.04
2014-08-06
Cách cài đặt và bảo mật phpMyAdmin với Nginx trên server CentOS 7
2014-08-06
Cách cài đặt Nginx trên CentOS 7
2014-07-22
Cách tạo chứng chỉ ECC trên Nginx cho Debian 7
2014-07-21
Cách thiết lập cân bằng tải Nginx với kết thúc SSL
2014-07-17
Cách cài đặt Laravel với web server Nginx trên Ubuntu 14.04
2014-06-24
Cách cài đặt gpEasy CMS với NGINX và PHP5-FPM trên Debian 7
2014-06-03
Cách sử dụng Nginx làm Giám đốc lưu lượng toàn cầu trên Debian hoặc Ubuntu
2014-05-30
Cách sử dụng HAProxy làm bộ cân bằng tải lớp 7 cho WordPress và Nginx trên Ubuntu 14.04
2014-05-27
Cách cung cấp tệp mật khẩu KeePass2 với Nginx trên server Ubuntu 14.04
2014-05-16