Tương tự như bài viết hướng dẫn add thêm website chạy trên VPS nginx CentOS, hôm nay mình sẽ hướng dẫn các bạn cách thực hiện trên webserver Apache.
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
Các bước add thêm website trên VPS Apache chạy CentOS bằng Virtual Hosts như sau:
Chuẩn bị server
Đã cài đặt sẵn webserver Apache trên CentOS, có thể tham khảo bài viết cài đặt LAMP trên CentOS
Tạo thư mục chứa website
Ví dụ mình sẽ tạo thư mục ở folder /var/www nhé
sudo mkdir -p /var/www/example.com/public_html
Chú ý thay example.com bằng domain của bạn.
Gán quyền
Đảm bảo cho website hoạt động bình thường
sudo chown -R apache:apache /var/www/example.com/public_html
Ngoài ra chmod 755 để đảm bảo mọi người có thể xem được website của bạn
sudo chmod 755 /var/www
Cài đặt Virtual Hosts
Mình sẽ chỉnh sửa file cấu hình mặc định của Apache
sudo nano /etc/httpd/conf/httpd.conf
Thêm đoạn sau vào cuối file:
NameVirtualHost *:80 # # NOTE: NameVirtualHost cannot be used without a port specifier # (e.g. :80) if mod_ssl is being used, due to the nature of the # SSL protocol. # # # VirtualHost example: # Almost any Apache directive may go into a VirtualHost container. # The first VirtualHost section is used for requests without a known # server name. # <VirtualHost *:80> ServerAdmin webmaster@example.com DocumentRoot /var/www/example.com/public_html ServerName www.example.com ServerAlias example.com ErrorLog /var/www/example.com/error.log CustomLog /var/www/example.com/requests.log common </VirtualHost>
Bạn cần chú ý các dòng NameVirtualHost, Virtual Host, Document Root, and Server Name để sửa lại cho phù hợp.
Lưu lại và thoát.
Khởi động lại Apache
Dừng tất cả tiến trình Apache
sudo apachectl -k stop
Khởi động Apache
sudo /etc/init.d/httpd start
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é.
sudo nano /var/www/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. Cấu trúc file config của Apache lúc nãy sẽ tương tự như sau:
<VirtualHost *:80> ServerAdmin webmaster@example.com DocumentRoot /var/www/example.com/public_html ServerName www.example.com ServerAlias example.com ErrorLog /etc/var/www/example.com/error.log CustomLog /var/www/example.com/requests.log common </VirtualHost> <VirtualHost *:80> ServerAdmin webmaster@example.org DocumentRoot /var/www/example.org/public_html ServerName www.example.org ServerAlias example.org ErrorLog /var/www/example.org/error.log CustomLog /var/www/example.org/requests.log common </VirtualHost>
Khởi động lại Apache là tất cả các website sẽ hoạt động.
Mình có làm theo hướng dẫn này để chạy 1 vhost. Tuy nhiên khi dùng ip vpn thì không thể truy cập được site cấu hình vhost (dùng ip local thì vào được), còn site chính thì chạy bình thường.
Cảm ơn bài chia sẻ của Admin.
Mình làm theo thì bị lỗi như sau .
Hiện tại trên server của mình có cài 1 web với domain là example1.vn và có sử dụng ssl
Mình add thêm 1 web với domain là example2.vn cũng sử dụng ssl thì gõ vào domain example2.vn trên trình duyệt toàn bị redirect về domain example1.vn
Không biết mình có cấu hình sai chỗ nào không mong bạn trợ giúp. Mình đang dùng webservice là apache chạy centos 7 nhé.
FIle vitualhost như sau
ServerName http://www.example2.vn
ServerAlias example2.vn
DocumentRoot /var/www/html/example2/
Options -Indexes +FollowSymLinks
AllowOverride All
SSLEngine On
SSLCertificateFile /etc/httpd/ssl/example2.crt
SSLCertificateKeyFile /etc/httpd/ssl/example2.key
ServerName http://www.example2.vn
DocumentRoot /var/www/html/example2/
Options -Indexes +FollowSymLinks
AllowOverride All
.
Hi Admin,
hiện tại mình có 1 site host tren Linux server tai Office luon, minh map port cho nó ra ngoai và Point tên miền ( A Record ) về IP WAN của office.
ten miền publish cua minh la training.gbc-engineers.com va trong local network cua office minh co 1 cai name cho server do la moodle.gbcvn2.local . nhung khi gõ training.gbc-engineers.com thi no cứ ra cai address moodle.gbcvn2.local . ngay cả khi dùng 4GB ( bên ngoài network office ) và IP Wan no cũng cứ ra cái address ấy.
minh co 2 file host,
ServerAdmin moodle@gbc-engineers.com
ServerName moodle.gbcvn2.local
DocumentRoot /var/www/moodle
ErrorLog “/var/log/httpd/moodle.error.log”
CustomLog “/var/log/httpd/moodle.log” combined
/var/www/moodle>
AllowOverride None
Require all granted
File 2:
ServerAdmin training@gbc-engineers.com
ServerName training.gbc-engineers.com
DocumentRoot /var/www/moodle
ErrorLog “/var/log/httpd/moodle.error.log”
CustomLog “/var/log/httpd/moodle.log” combined
/var/www/moodle>
AllowOverride None
Require all granted
ngay khi xóa file Host 1 , restart server no vẫn vậy
Mình đang chạy 1 web rồi nên k rõ có lỗi khi tạo folder như cách làm virtual host bt k đó.
Còn cách tạo nhiều domain với virtual khi mới cài vps m cg hiểu.
Hi bạn,
Hiện mình đang dùng một domain và chứa ở thư mục:
var/www/html/
Vì mình không tạo virtual để cài nhiều domain từ đầu.
Nên mình có tạo thêm subdomain hoặc dùng một domain khác thì có làm theo guide này được không bạn?
Cảm ơn bạn
Được bạn nhé. Mỗi domain bạn dùng 1 thư mục website và 1 file cấu hình Virtual Hosts
Vậy domain chính mình đang để ở root là /var/www/html/ cần di chuyển vào 1 folder à bạn ?
Tại mình không chia thư mục ngay từ đầu.
Bạn để folder nào cũng đc, khác là được
Ví dụ trong bài viết mình hướng dẫn là /var/www/example.com/public_html đó. Chú ý gán quyền cho thư mục
em enable rồi bác ạ
AD cho em hỏi chút. Sao em không truy cập web từ máy tính khác bằng ipv6 được nhỉ, trong khi đó em truy cập trên chính máy centos thì lại được. em không cài firewall gì cả
Vì có thể bạn disable ipv6 rồi. https://hocvps.com/disable-ipv6-tren-centos/