Thông thường mỗi VPS mình chỉ chạy cho một website mà thôi, tuy nhiên trong trường hợp bạn có nhiều website và muốn add thêm chạy trên VPS thì sao, hãy tham khảo bài hướng dẫn này để thực hiện.
Giới thiệu Virtual Hosts
Virtual Hosts được sử dụng để giúp cho một VPS có thể chạy được nhiều website khác nhau.
hocvps
trên SSH chọn menu 2) Them Domain
Theo như nginx website, Virtual Hosts được gọi là Server Blocks trên nginx, tuy nhiên cho dễ dàng giống như Apache nên mình sẽ gọi là Virtual Hosts trong bài này. Các bước add thêm website trên VPS nginx chạy CentOS bằng Virtual Hosts như sau:
Chuẩn bị server
Đã cài đặt sẵn webserver Nginx trên CentOS, có thể tham khảo bài viết cài đặt LEMP trên CentOS
Tạo thư mục chứa website
Ví dụ mình sẽ tạo thư mục ở folder /home/
nhé. Thay example.com
bằng domain của bạn.
mkdir -p /home/example.com/public_html
Gán quyền
Đảm bảo cho website hoạt động bình thường
chown -R nginx:nginx /home/example.com/public_html
Cài đặt Virtual Hosts
Thêm file cấu hình .conf cho domain mới
nano /etc/nginx/conf.d/example.com.conf
Sử dụng đoạn code sau:
# # example.com configuration # server { listen 80; server_name example.com; location / { root /home/example.com/public_html; index index.php index.html index.htm; try_files $uri $uri/ /index.php?q=$uri&$args; } error_page 404 /404.html; location = /404.html { root /home/example.com/public_html; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /home/example.com/public_html; } # pass the PHP scripts to FastCGI server # location ~ \.php$ { root /home/example.com/public_html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
Lưu lại và thoát.
Reload Nginx
service nginx reload
Test thử domain
Giờ mình sẽ tạo thử file index.html để test thử domain example.com có hoạt động đúng không nhé.
nano /home/example.com/public_html/index.html
Thêm đoạn code html vào file
<html> <head> <title>www.example.com</title> </head> <body> <h1>Success: You Have Set Up a Virtual Host</h1> </body> </html>
Lưu và thoát.
Bây giờ bạn hãy test thử với link http://example.com, nếu kết quả hiện ra như bên dưới là thành công.
Cài đặt thêm Virtual Hosts
Để add thêm nhiều website nữa, bạn có thể lặp đi lặp lại bước trên
Khởi động lại Nginx là tất cả các website sẽ hoạt động.
admin cho mình hỏi, mình cài hocvps, khi thêm domain thì lại hiển thị file not found
làm thế nào để gỡ rối
mình làm theo như vậy thì dính lỗi 403 forbidden. Mong được hỗ trợ từ các bạn
Mình chạy thêm domain thứ 2 trên 1 vps. Dùng Menu hocvps để thêm. Mà khi vào web 2 thì nó báo lỗi như vầy: https://imgur.com/MVxFNUX
Admin xem giúp ạ.
Mình sử dụng hocvps add domain nhưng bị lỗi. Admin có thể support không?
Hi Admin, Cái Script của mình có bị giới hạn về số domain add vô VPS không? Mình đã add khoảng 140 website/domain vào VPS. Lên demo được khoảng 40 website thì từ cái 41 trở đi auto redirect to domain chính. Check file .conf thì thấy nó trỏ về folder riêng hết mà không hiểu sao bị vậy.
Chào Hocvps, Mình có dùng script của bên bạn cài cho vps lúc cấu hình mình chọn domain chính lúc cài là A nhưng khi thêm domain sử dụng công cụ số 2 ( domain B) như bài đề cập thì truy cập vào domain B nó điều hướng về domain B mình có thử tạo thêm một domain khác nhưng vẫn bị tình trạng này. Mong được hỗ trợ
Ak mình đính chính là tất cả các domain đều bị chuyển hướng về domain A nhé.
em cũng giống như bác .. đã xóa cache, khởi động lại nginx, khởi động lại cả vps .. là đủ thứ trên đời mà cũng ko được ~~ Bác làm được chưa giúp em với
Đây là code cua file domain ạ
#
# dangtest.com configuration
#
server {
listen 80;
server_name 192.168.1.101 dangtest.com;
location / {
root /home/dangtest.com/public_html;
index info.php index.html index.htm;
try_files $uri $uri/ /info.php?q=$uri&$args;
}
error_page 404 /404.html;
location = /404.html {
root /home/dangtest.com/public_html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /home/dangtest.com/public_html;
}
# pass the PHP scripts to FastCGI server
#
location ~ \.php$ {
root /home/dangtest.com/public_html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index info.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Ad vui lòng cho em hỏi em đã làm theo các bước trên, nhưng server không hiển thị, tuy nhiên khi xóa bỏ file đi chạy file thì bình thường
Em xin chân thành cảm ơn !!
Hello admin! 🙂
I have bought new IP from OVH, I have installed and the site worked quite well on “non-www” version, I’d like to use “www” version so I changed in the “general setting” to “www.domain.com”, after that, I could not log in wp dashboard, I did try to redirect www to non-www by adding this
“server {
server_name http://www.example.com;
return 301 $scheme://example.com$request_uri;
}
”
to /etc/nginx/conf.d/redirect.conf
But I still can not log in until now, can you please help me out?
Many thanks 🙂
Để đổi từ non-www sang www bạn cần thay đổi cả ở Nginx Conf và trong wp-admin của site. Nginx Conf thì bạn sửa phần quy định website chứ không tạo riêng 1 redirect.conf như vậy. Bạn kiểm tra file conf nào trong /etc/nginx/conf.d/ quy định website thì sửa nhé
Trong wp-admin thì cần phải quét toàn bộ URL để thay đổi
Hi, cám ơn bạn nhé, mình xóa database và site rồi add lại dạng có www với hocvps là đc rồi, hihihi, thanks ad
Mình thêm đc website rồi.
giờ trỏ 1 subdomain từ cloudflare.com về website mới này như nào vậy các bác nhỉ ?
Bạn tạo A Record tên sub rồi trỏ về IP VPS nhé. Bạn có thể tham khảo quản lý qua CF tại đây
https://canhme.com/kinh-nghiem/huong-dan-su-dung-cloudflare/
mình có cái hocvps. sau khi thêm website phụ nữa vào. sau đó xóa đi thì bây giờ gõ địa chỉ ip của vps lên trình duyệt nó lại tự động trỏ vào website phụ.
giờ em muốn thay đổi để nó tự động vào website chính thì làm thế nào ạ?
nginx -t của bạn ra kết quả gì?
Và bạn chú ý phần lưu ý trong bài viết nhé. Thêm website bằng menu của hocvps
[root@moncup home]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
của em ra thế này ạ.
à được rồi anh ạ. tự dưng nó lại trỏ về tên miền chính rồi ạ.
E làm các bước như a xong
[root@cuonglm home]# curl -i datlm.com
HTTP/1.1 302 Moved Temporarily
Server: nginx/1.4.6 (Ubuntu)
Date: Thu, 11 Oct 2018 10:28:54 GMT
Content-Type: text/html
Transfer-Encoding: chunked
X-Powered-By: PHP/5.5.9-1ubuntu4.25
Set-Cookie: PHPSESSID=v0q69llref7saam96v3s0o6311; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Location: https://com.com
X-XYZ-LBX: LND
X-XYZ-SRV: web3
Set-Cookie: SRVNAME=web3; path=/
A có thể fix cho e k ạ?
Bạn đã trỏ domain về IP VPS chưa?
[root@cuonglm public_html]# curl -I datlm.com
HTTP/1.1 403 Forbidden
Server: nginx/1.14.0
Date: Fri, 12 Oct 2018 03:54:05 GMT
Content-Type: text/html
Content-Length: 169
Connection: keep-alive
Minh tro dung roi.gio n lai loi nay la sao a
Cảm ơn bạn!
Cho mình hỏi chút: Mình thực hiện tác bước như trên và trong nội dung file .conf chỗ nào ví dụ của bạn là example.com mình thay bằng domain của mình, thay đổi IP . Nhưng không hiểu sao khi mình test thử thì tên miền lại chạy về nội dung web 1 của mình. Bạn có thể giải thích giúp mình lỗi và cách sửa không?
1. Fix lỗi thì cho mình kết quả của nginx -t
2. Hệ thống bạn là gì? Vì nếu dùng stack script thì tạo website có menu rồi. Hướng dẫn này chỉ áp dụng cho hệ thống tự cài đặt hoàn toàn thôi
vì bạn trỏ về cùng 1 root
mình cx đang mắc chỗ đó.mình thử trỏ root ra 1 thư mục khác và phân quyền.nhưng k được @@ T.T
Mình không hiểu ý bạn. Nên tốt nhất bạn post toàn bộ nội dung Nginx Conf bạn đã thiết lập ra nhé
Mình cài VPS Vultr Window 7 Pro. Dùng Appserv 8.6, PHP 7.1 và Apache Web Server Version 2.4.25
KHông hiểu sao mình thêm domain vô nó cứ hiện ở folder WWW không, dù mình đã set thông số
DocumentRoot là một folder domain con, hình như thông số đó không có tác dụng. Vì mình tính thêm nhiều domain vào cái server đó.
Admin biết là nó bị gì không, chỉ mình với
Mình không dùng hệ thống Apache trên Windows OS nên không rõ rồi. Có thể bạn edit sai file hoặc file bạn edit là AutoGenerate, bạn cần chỉnh sửa chỗ khác
Cho em hỏi cách fix lỗi này với ạ:
[root@HomedyVPS2 ~]# service nginx status
Redirecting to /bin/systemctl status nginx.service
● nginx.service – nginx – high performance web server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Wed 2018-05-16 16:50:11 +07; 24min ago
Docs: http://nginx.org/en/docs/
Process: 25036 ExecStop=/bin/kill -s TERM $MAINPID (code=exited, status=0/SUCCESS)
Process: 3087 ExecReload=/bin/kill -s HUP $MAINPID (code=exited, status=0/SUCCESS)
Process: 25039 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=1/FAILURE)
Main PID: 3057 (code=exited, status=0/SUCCESS)
May 16 16:50:11 HomedyVPS2 systemd[1]: Starting nginx – high performance web server…
May 16 16:50:11 HomedyVPS2 nginx[25039]: nginx: [emerg] open() “/home/adlite.net/logs/access.log” failed (2: No such file or directory)
May 16 16:50:11 HomedyVPS2 systemd[1]: nginx.service: control process exited, code=exited status=1
May 16 16:50:11 HomedyVPS2 systemd[1]: Failed to start nginx – high performance web server.
May 16 16:50:11 HomedyVPS2 systemd[1]: Unit nginx.service entered failed state.
May 16 16:50:11 HomedyVPS2 systemd[1]: nginx.service failed.
May 16 17:10:31 HomedyVPS2 systemd[1]: Unit nginx.service cannot be reloaded because it is inactive.
May 16 17:10:46 HomedyVPS2 systemd[1]: Unit nginx.service cannot be reloaded because it is inactive.
nginx: [emerg] open() “/home/adlite.net/logs/access.log” failed (2: No such file or directory)
Không tồn tại /home/adlite.net/logs/access.log nhé bạn. Có 2 cách
1. Tạo file ý và phân quyền ghi cho webserver.
2. Xóa dòng quy định accesslog trong cấu hình Nginx đi
Cảm ơn HocVPS Script nhiều nha .
Hiện mình đang dùng HocVPS Script và thêm 2) Them Domain , mình thấy rất hay nhưng khi thêm subdomain thì mình phải cấu hình nano /etc/nginx/conf.d/example.com.conf thì mới chạy được .
cấu hình của mình như dưới .
#
# subdomain configuration
#
server {
listen 80;
server_name subdomain.example.com;
location / {
root /home/subdomain/public_html;
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?q=$uri&$args;
}
error_page 404 /404.html;
location = /404.html {
root /home/subdomain/public_html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /home/subdomain/public_html;
}
# pass the PHP scripts to FastCGI server
#
location ~ \.php$ {
root /home/subdomain/public_html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Cấu hình như bạn thì dùng hocvps menu2) Them Domain và nhập là được mà. Bạn nhập domain hay subdomain đều được
Vì bản chất subdomain của bạn là 1 website độc lập, có thư mục source code riêng
root /home/subdomain/public_html;
Mình add thêm sub domain. trong godaddy không cần trỏ gì vẫn được hả… sao mình mới gõ thêm subdomain thôi nó đã chạy luôn rồi ạ!
Có khả năng trong GoDaddy bạn đã tạo wildcard subdomain, bao hàm toàn bộ các subdomain.
hiện mình có 2 domain. nhưng domain chính của mình đã được bán.. giờ mình không thể vào được domain.com:port để upload mysql.. giờ mình muốn chuyển domain phụ thành domain chính để vô được phpmyadmin thi làm sao ạ….
mình xem hướng dẫn đổi domain.com.conf nhưng không được ạ
Bạn truy cập qua ip:port cũng được mà. Đổi thì bạn phải đổi server_name của conf
mình truy cập ip:port nó tự redirect qua tên miền chính luôn… mình đổi server_name trong file conf thành domain phụ mà vẫn không được ạ.. giờ không biết sao để vô SQL
Bạn post toàn bộ Nginx Conf trong /etc/nginx/conf.d/ ra đây mình xem. Cho mình cả nội dung của /etc/hocvps/scripts.conf
Paste vào http://pastebin.com/ cho gọn nhé bạn
Mình cài được rồi cho mình hỏi. quản lý filemanager với phpmyadmin ở đâu… mình vô domainmoi.com:1111/filemanager thì nó lại ra trang củ
File Manager quản lý chung toàn bộ các website, không riêng gì website nào cả bạn nhé
PHPMyAdmin quản lý theo database, không riêng theo website nốt
Hiện tại mình cài 1 website thôi.. nhưng sao chiếm nhiều ram dữ vậy nhỉ.. giờ mình muốn thêm vài website nữa Vps này có được không. VPS 140k/ tháng. Ai có hướng dẫn thêm domain vô vps cho mình xin luôn https://i.imgur.com/Rgsd8DR.jpg
HocVPs thì bạn dùng menu hocvps 2 Them Website
Mà sao 140k/tháng đc có VPS 500MB RAM vậy. Duy trì các service mặc định cũng ngốn kha khá rồi. Và đo lương không theo website được đâu. Website 10k visit nó khác với 10 visit chứ. Nên bạn cứ thêm xem sao, không ổn thì nâng cấp
oke ad.. Mà ad ơi, mình có cần cài thêm wordpress cho website thứ 2 không… trước thấy có bài nào nói hình như không cần cài thêm, nặng mà ạ