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 tạo 2 file .conf với nội dung như bên dưới, nhưng chỉ 1 site chạy được, site không load được. Bạn giúp mình với, cảm ơn
Site 1
NameVirtualHost *:80
ServerAdmin webmaster@nhathuocvuongtron.com
ServerName nhathuocvuongtron.com
ServerAlias http://www.nhathuocvuongtron.com
DocumentRoot /var/www/nhathuocvuongtron.com/public_html/
ErrorLog /var/www/nhathuocvuongtron.com/logs/error.log
CustomLog /var/www/nhathuocvuongtron.com/logs/access.log combined
Site 2
NameVirtualHost *:80
ServerAdmin webmaster@biquyetvang.vn
ServerName biquyetvang.vn
ServerAlias http://www.biquyetvang.vn
DocumentRoot /var/www/biquyetvang.vn/public_html/
ErrorLog /var/www/biquyetvang.vn/logs/error.log
CustomLog /var/www/biquyetvang.vn/logs/access.log combined
Site 2 mình thấy hiện Demo Test Hello mà
Ad cho mình hỏi trong bài viết trên, mục cuối “Cài đặt thêm Virtual Hosts”, mình thấy cả 2 web đều để port 80 luôn ah ???
đúng rồi bạn. HTTP dùng port 80 nhé
Vậy nếu mình muốn chạy port khác thì sửa lại 80 thành 81 đúng không ?
Có cần thêm 1 dòng NameVirtualHost *:81 nữa không bạn
Cảm ơn
uhm sửa 80 thành 81. Nhưng khi đó truy cập trên trình duyệt bạn cần nhập domain:81 nhé
Cho hình hỏi cấu hình như vậy có cần phải cài đặt DNS trước không ạ!mình lần đầu tiên làm chưa hiểu lắm!
Bạn vẫn cần trỏ domain về IP VPS trên quản lý DNS của Domain nhé
Cho mình hỏi mình tạo web 1 chạy OK rồi
ServerAdmin aaa@gmail.com
ServerName 10.210.254.205
ServerAlias 10.210.254.205
DocumentRoot /var/www/html/lichcongtac.vn/public_html
ErrorLog /var/www/html/lichcongtac.vn/logs/error.log
CustomLog /var/www/html/lichcongtac.vn/logs/access.log combined
Nhưng sao Web 2 chạy không duoc
ServerAdmin aaa@gmail.com
ServerName 10.210.254.205
ServerAlias http://10.210.254.205:81
DocumentRoot /var/www/html/test.vn/public
ErrorLog /var/www/html/test.vn/logs/error.log
CustomLog /var/www/html/test.vn/logs/access.log combined
Nhờ các anh xem giúp
Bạn để servername giống như nhau thế kia thì nó không phân giải được để mà biết cái nào cái nào đâu bạn. Nếu bạn để port khác 80 thì bạn cần phải mở port nếu dùng firewall nữa
ServerAdmin dinhnghia258@gmail.com
ServerName test.vn
ServerAlias http://10.210.254.205:81
DocumentRoot /var/www/html/test.vn/public
ErrorLog /var/www/html/test.vn/logs/error.log
CustomLog /var/www/html/test.vn/logs/access.log combined
Sửa lại thế này cũng không chạy được bạn ơi
1. Bạn restart Apache hiện thông báo gì? Với bạn set ServerAlias cũng không đúng
2. Bạn đã trỏ test.vn về IP VPS chưa
3. Thư mục /var/www/html/test.vn/public có phải thư mục website không
Chào bạn
Mình restart Apache OK hết, mình chạy trên cùng 1 server có 1 IP đang chay local nên mình truy cập bằng IP luôn mà không chạy
Cảm ơn bạn
Okie bạn
Mình cài control panel vestacp trên centos 6
khi thêm website lúc chạy báo lỗi Internal Server Error
là do lỗi gì vậy b
Lỗi liên quan đến webserver. Bạn kiểm tra Apache và Nginx chạy ok không? Và bạn thêm bằng cách nào?
có bài viết nào hướng dẫn kiểm tra cái đó ko bạn..Mình mới vọc vps nên ko rõ lắm 🙂
mình thêm code và import database bình thường trên quản trị vestacp
Tức bạn thêm website bằng menu của VestaCP? Vì bạn đang cmt vào 1 topic không hề liên quan đến vestacp nên mình đã hỏi rõ ràng bạn thêm website bằng cách nào. Bạn check trạng thái của các services liên quan như mình bảo thôi, apache và nginx, đọc thêm bài các câu lệnh Linux thông thường…
cho e hỏi lúc làm lệnh này sudo mkdir -p /var/www/example.com/public_html
mà thành công thì nó có báo gì ko ạ?e làm xong thì nó chỉ xuống dòng thôi
nếu thành công nó có tạo folder trong public_html ko ạ? e làm xong ko thấy 🙁
Thì nó sẽ tạo thư mục như bạn bảo
/var/www/example.com/public_html
Không thông báo gì bạn nhéCho em xin link bài hướng dẫn với ạ.
Bạn thêm domain thứ 2 vào bên cạnh domain chính ở dòng
ServerAlias
Ví dụ
ServerAlias domain1.com domain2.com
Anh Luân ơi cho em hỏi : Em đã làm theo các bước ở đây rồi. Nhưng domain t2 chỉ thay được cho domain t1 ở trang chủ thôi. Khi dùng domain t2 vào trang con thì nó nhảy ra domain t1. Vậy em phải làm sao để domain t2 chạy độc lập như 1 site bình thường ạ.
Phần
Cài đặt thêm Virtual Hosts
, bạn tạo các file Vhost riêng cho từng website chứ?Ý em là add thêm nhiều domain cho 1 website đó anh. cùng 1 database luôn đó ạ.
Nếu thế bạn xem Park Domain nhé, không phải trường hợp thêm website như bạn mô tả đâu.
Park Domain dùng để nhiều domain hiển thị cùng 1 website(database)
Hôm trước thiếu lện này làm hoài ko đươc sudo chown -R apache:apache /var/www/example.com/public_html
Em dùng hocvps để tạo 1 web mới rồi cài như này ở thư mục …./home/trinolab
https://www.youtube.com/watch?list=PL-Gp-VkybfmvDwiiO99CjXGspaNBW8IXE&v=L86_wKov_aI
không cần domain được không ạ? kiếm cái url ở đâu?
Url chính là website em/optimus đó. Nội dung trong domain/public_html truy cập qua web bằng domain nhé.
Ví dụ website anh là
hocvps.com
. Anh up thư mục A lên/home/hocvps.com/public_html/
thì truy cập qua web bằnghocvps.com/A
.VPS của em có 1 web có tên miền rồi. Giờ em muốn tạo 1 web nữa không cần tên miền được không ạ?
Để cài cái Social Media Marketing Tool này
Link Demo: http://optimus-prime.trinolab.website/demo/public/home
Email : admin@email.com
password : 123456
LINK DOWNLOAD: https://drive.google.com/file/d/0BwJc9YN1kfhRTDJWWUY5cHJhMm8/view
Anh có thể hướng dẫn em cài tool này trên VPS được k ạ?
Không có domain thì em tạo VPs mới, truy cập qua IP thôi
Hi bạn, theo cript này mình muốn thực thi để quản lý domain bằng php script, thêm sửa xóa bằng PHP, có cách nào không bạn nhỉ?
Script không hỗ trợ sẵn vấn đề này rồi bạn à. Bạn thử các hệ quản trị khác như VestaCP, Sentora xem
Vâng cảm ơn bạn ạ
Bạn ơi cho mình hỏi.
Khi mình chạy thì các file .php bị lỗi “Internal Server Error” còn nếu là các file html thì vẫn chạy được bình thường.
Lỗi đó là do đâu bạn nhỉ? Do mình phân quyền sai hay như thế nào vậy bạn
Bạn mô tả hệ thống cài đặt của bạn và lỗi, cũng như check error log chứ hiện tại chung chung quá mình chưa hiểu
Cảm ơn bạn đã trả lời nhé.
Hôm đó mình up file php lên server, để owner là nobody nhưng group vẫn là root nên không được. Mình đổi cả lại group cũng là nobody thì đã hoạt động được rồi.
Cảm ơn các bạn đã nhiệt tình hỗ trợ :))
OK bạn. Vấn đề do file owner permission.
Mình cài Hocvps scrip, dùng lệnh thêm website và đã thêm thành công, nhưng sao vào filemanager thì lại k thấy folder của domain đó mà chỉ thấy 1 folder mới tên là false (chắc bị lỗi) nhỉ
Bị lỗi gì đó rồi, gửi mình thông tin login SSH vào mail để mình check được không?
Chào anh, em đã add được domain mới rồi ạ. Nhưng hiện cái domain mới đó k dẫn về site mới (site mà mình up lên folder của domain đó) mà nó lại dẫn về main domain của VPS. không biết là lỗi gì ạ?
Mình add được rồi bạn ạ nhưng k hiểu sao cái domain mình mới add nó k load dữ liệu từ folder của domain đó mà nó cứ tự động chuyển hướng về main-domain của VPS nhỉ?
Nếu không check cụ thể được thì mình cũng không biết nguyên nhân ở đâu nữa
Của mình cài vectacp khởi động lại apache ko được
Báo lỗi sao thế bạn?
Mình cài vectacp có sẵn home/admin/web rồi, mình trỏ về web về đây thay vì var/www/example.com/public_html/index.html được không bác.
Hic, bạn đang hỏi gì vậy, mình chẳng hiểu gì rồi
Ý bác này nói cái thư mục chứa web mặc định của vestacp là /home/user/
Giờ muốn cài web ở thư mục /var/ww có được không.
Mình thì nghĩ là được, chỉ cần cấu hình lại file vhost hoặc file nginx
Đúng rồi bạn mà mình đã thêm Virtual Hosts vào vhost trỏ tới thư mục chứa source.
Đã thêm DB, Domain, DNS trong VectaCP và cấu hình kết nối DB trên Source. nhưng khi truy cập vào web vẫn bị thông báo “500 Internal Server Error”. Không biết sao luôn
Bị lỗi 500 là do bạn đổi thư mục mà chưa phân quyền cho user thôi
Nếu bạn cài nginx với php-fpm thì sẽ không khởi động được apache nhé
Bạn Giang cho hỏi, cài Sentora có hao tài nguyên VPS hơn VectaCP ko vậy?
Tài nguyên Sentora khi mình cài xong là khoảng 180 – 200MB, còn vesta là gần 300
Vậy VectaCP vẫn đỡ hơn mà thích cái Control Panel của th Sentora. Tks bác
Xét kỹ hơn xíu thì thế này:
Lúc cài xong chưa có web thì Sentora ít tốn tài nguyên hơn Vestacp
Nhưng lúc có web thì ngược lại, vì vesta sử dụng webserver nginx, tốc độ xử lý nhanh hơn, nên tiết kiệm được tài nguyên.
Nói vậy chứ mình vẫn thích giao diện của Vesta như bạn. Hiện tại mình đang xài Sentora.
Mình có 3 giao diện: Zentora, Cpanel x3, DirectAdmin
Luân cho mình hỏi mình cài 2 web trên cùng 1 vps chạy hocvps. khi creat user và databas thì 2 site chạy cùng 1 cái hay là mình phải tạo thêm 1 user nữa. làm sao để phân biệt rõ ràng được 2 cái user cho từng site vậy bạn? không hiểu sao mình thêm 1 web vào mà cái thứ 2 nó cứ bị lỗi 400 Bad Request
Mỗi một user tương ứng với 1 database. 2 site riêng thì 2 database, 2 user nhé bạn.
không có giới hạn luôn hả bạn
Tất nhiên rồi, VPS là thế
Minh dung script hocvps, cai xong ko thay muc httpd trong /etc
HocVPS Script không dùng Apache mà cài Nginx nên không có thư mục kia nhé bạn
Cho mình hỏi là mình mua VPS tại nhân hoàn , họ cài sẵn apache, mysql.. và Driect Admin. Giờ muốn thêm domain thì làm theo cách này à bạn, với muốn cài cái hocvps script thì có cần phải rebuild lại vps hay không
Nếu cài Direct Admin rồi thì mọi thao tác bạn thực hiện trên đó nhé. Muốn cài HocVPS Script thì phải rebuild lại VPS.
Luân cho hỏi, nếu cài cái Script Hocvps vào có làm theo cách này được không ?
Nếu cài HocVPS Script rồi thì không cần mày mò theo cách này làm gì, bạn chỉ cần chạy menu hocvps rồi chọn Thêm website là được.
mình chạy lệnh thêm website trước rồi
nó có thêm website
mình trỏ domain về nhưng không chạy !
báo không có trang này !
Domain của bạn là gì để mình check. Có thể domain chưa nhận IP đó bạn.
đã làm được rồi Luân ơi
mình xóa VPS cento đi
cài bản Cento 7 vào rồi cài lại
tên miền thứ 2 mình trỏ theo dạng IP mới nhận
cái này mình phải thuê hoặc mua một host và domain với cài được hay sao ạ
Mình đã làm đủ các bước nhưng khi test doamin nó vẫn ra nguyên cái nội dung của file index
domain
Success: You Have Set Up a Virtual Host
Mình thêm web vô /home/domain/public_html
Thanks
Có vẻ như nó là folder này:
/var/www/html/
Sao mình trỏ domain về rồi và tạo một file index.html tại /var/www
mà sao nó không chạy
http://vtoolfix.com
Mình cung không cần phải chỉnh sửa gì trông file httpd.conf luôn ha bạn.
Thanks
Đúng thế bạn
Cho mình hỏi chút nếu mình chỉ dùng 1 domian duy nhất có cần làm như các bước ở trên không bạn.
Và nếu mình không làm các bước như trên thì add 1 domian vô như thế nào ?
Cảm ơn.
Nếu chỉ dùng 1 domain thì ko cần làm các bước như trên. Mặc định domain đó sẽ nhận đường dẫn là
/var/www/
(ko nhớ có đúng ko nữa 🙂 )có ai rành triển khai nhiều web wp trên 1 vps không… giúp minh với…. mình newbie chưa hiểu rõ lắm…. xin cảm ơn
Bạn có thể cài đặt HocVPS Script, mỗi web add domain mới rồi upload lên folder tương ứng.
login bằng SSH thì cái đoạn mã vào cuối file bằng cách nào vậy bạn? trên SSH ko thấy có chỗ để edit file 🙁
Bác ơi cái này có làm được trên máy chủ ubuntu 12.04 k ạ
Không bạn ạ, hướng dẫn này cho CentOS thôi
cho mình hỏi là sau khi tạo xong rồi, mình đặt 1 domain chạy joomla, 1 domain chạy wordpress được chứ Luân?
Mình là dân ko chuyên chỉ biết copy cài đặt thôi 😀
được hết
anh Luân ơi, sao em tạo VirtualHost mà khi truy cập vào website nó chỉ chạy trang apache mà không chạy qua trang index.html nhỉ…. mấy bữa rồi mà vẫn chưa khắc phục được. không hiểu tại sao. a giúp e với. híc
Bạn up 1 file abc.html lên xem có chạy ko vậy?
Kinh nghiệm xương máu: tên hostname của server trùng với domain nên khi có request nó tự nhận diện domain là chính nó nên chuyển về thư mục /var/www/html
bạn sửa file /etc/hostname rồi chạy lệnh
hostname -F /etc/hostname
là được
Mình fai thêm # ở: ErrorLog /var/www/example.org/error.log
CustomLog /var/www/example.org/requests.log common
2 dòng này nó mới ko lỗi khi restart apache và cài thành công Virutualhost nỉ?
Tiện đây cho mh hỏi? Mh muốn tạo subdomain trên goddady thì tạo thêm cái gì trên DNS Zone vậy b? và thiết lập cấu hình ở Apache thì làm sao để nó chạy + lấy dữ liệu riêng biệt cho sub.domain.com mà ko chạy trùng dữ liệu vs domain.com.. Vì mh có làm vài lần gõ sub.domain.com cũng như domain.com !!
thanks bác!
Bạn cần tạo thêm một A Record subdomain trỏ đến IP hosting là xong, lúc này subdomain sẽ coi như domain riêng biệt.
Cho e hỏi câu nữa,chỗ đoạn: nano /etc/httpd/conf/httpd.conf sửa file này thì cứ để nguyên nội dung cả file httpd.conf chỉ thêm mỗi đoạn kia của bác thui à? e cũng từng làm mấy kiểu mà gõ sub.domain.com nó cũng ra như domain.com là tn nỉ?
thanks bác?
Đúng rồi bác, làm như đoạn Cài đặt thêm Virtual Hosts ấy.
Redirect bac check lại vấn đề DNS và cache nữa nhé.
Cài đặt thêm Virtual Hosts cùng domain nhưng khác port được ko bạn.
Cảm ơn Luân rất nhiều vì bài viết, nhân tiện cho mình hỏi, giả sử mình đã setup domain abc.com, trong thư mục public_html của site này mình tạo 1 folder /bak . KHi mình truy cập vào abc.com/bak, mình muốn hiển thị danh sách file trong folder này thì phải làm ntn?
Ví dụ: http://screenshots.ubuntu.com/screenshot-with-version/apache2/2.2.22-1ubuntu1
Cái bạn hỏi là Directory Listing, chèn đoạn sau vào file .htaccess là được:
Options +Indexes
Mình gặp phải lỗi này:
Warning: DocumentRoot [/etc/httpd/var/www/winmain.vn/public_html] does not exist
httpd (no pid file) not running
Bác Luân cho e hỏi là làm theo cách này khi create user thì làm sao để cho nó hiểu user 1 trỏ về thư mục của domain 1, user 2 trỏ về thư mục domain 2 vậy?
Mình làm đến đoạn sudo apachectl -k stop nó báo là “httpd could not reliably determine the server’s fully qualified domain name ” là sao nhỉ
Cái này do chưa setup hostname cẩn thận thôi. Nhưng mà ko sao đâu bạn, chạy bình thường.
Cho mình hỏi chút.
Khi mình cài xong tất cả các dịch vụ. Tất cả dịch vụ đều chạy tốt kể cả các file trong folder var/www/html
Nhưng website trả về 1 trang trắng là sao bạn nhỉ và cũng ko debug dc. 🙁
Đã giải quyết xong cái này 😀
Mình sử dụng xml mà chưa cài thư viện php-xml
cảm ơn anh Luân Trần đã chia sẻ cho mọi người
Không hiểu sao mỗi lần cái Plugin hoặc update là WP nó đòi tài khoản FTP.
có cách nào giải quyết triệt để không bác Luân ?
Vấn đề của bạn đây: https://hocvps.com/sua-loi-khong-cai-dat-duoc-plugin-theme-wordpress/
Đã chạy được thanks bác nhiều !
cấu hình PHP upload chưa đúng
Cái này hay.Em đang cần đây. Cho đỡ tốn $. Nhưng chắc là ảnh hưởng đến tốc độ của site bác nhỉ
Tất nhiên là sẽ ảnh hưởng rồi. Trước chỉ phục vụ 1 em, giờ phải phục vụ thêm 1 em nữa, nếu server tài nguyên đủ lớn thì mới chơi được.