LAMP là một Web Server viết tắt của các thành phần Linux, Apache, MySQL/MariaDB, PHP. Bài viết này mình sẽ hướng dẫn các bạn làm thế nào để cài đặt LAMP trên CentOS 7, phiên bản mới nhất hiện nay. Đây là bài viết đầu tiên trong Series LAMP Server mình sẽ giới thiệu trong thời gian tới.
1. Cài đặt Apache 2.4 trên CentOS 7
Kiểm tra hostname bằng lệnh hostname
lệnh này sẽ cho kết quả đầy đủ nhất dạng FQDN hoặc hostname -f
hiện thị hostname dạng ngắn gọn.
Tham khảo thêm bài viết cách thay đổi hostname và hướng dẫn disable SElinux trên CentOS.
Lệnh cài Apache Web Serrver
yum install httpd
Việc cài đặt diễn ra nhanh chóng, trước khi cấu hình chi tiết Apache(httpd) các bạn nên backup file config để phòng trường hợp sai sót còn có cái phục hồi lại.
cp /etc/httpd/conf/httpd.conf ~/httpd.conf.bak
Câu lệnh sẽ tạo một file dự phòng có tên httpd.conf.bak trong profile của root. Trong linux file backup mình có thói quen thêm phần mở rộng là .bak muốn khôi phục cấu hình về mặc định chỉ cần sửa lại tên file là được.
Tối ứu Apache
Để Web Server đạt hiệu suất cao nhất bạn dùng vi editor mở file httpd.conf
chỉnh sửa một chút.
vi /etc/httpd/conf/httpd.conf
Thêm vào các thông số bên dưới.
KeepAlive Off <IfModule prefork.c> StartServers 2 MinSpareServers 4 MaxSpareServers 10 MaxClients 80 MaxRequestsPerChild 3000 </IfModule>
Cấu hình trên áp dụng cho Cloud VPS Linode có cấu hình thấp 1GB RAM.
- KeepAlive: chức năng duy trì connection và đóng sau khoảng thời gian timeout được chỉ định, khi không được cấu hình đúng cách nó làm tăng lượng memory không giải phóng được tài nguyên.
- <IfModule prefork.c> … </IfModule>: khai báo dùng module MPM prefork để mỗi process xử lý một request.
- StartServers: thông số này quy định số process sinh ra khi khởi động Apache.
- MinSpareServers, MaxSpareServers: quy định số process con nhàn rỗi nhỏ nhất và lớn nhất được sinh ra để chờ xử lý request từ client.
- MaxClients: số requests được xử lý đồng thời.
- MaxRequestsPerChild: giới hạn số requests tối đa đến web server, giá trị
0
có nghĩa là không giới hạn, nếu giá trị này quá thấp sẽ làm giảm hiệu suất vì các requests mới sẽ phải đợi để được xử lý.
Không có setup chung cho các thông số này căn cứ vào lượng truy cập thực tế trên mỗi trang web mới có thông số cụ thể.
Bạn tham khảo thêm các bài viết về cách tối ưu Web Server để biết thêm chi tiết.
Khởi động lại Apache
Trên CentOS 7 chạy lệnh.
systemctl restart httpd.service
Bạn vẫn có thể dùng câu lệnh service httpd restart
như trên CentOS 5/6 bình thường.
Kiểm tra cài đặt Apache & Module mpm prefork
Xem dịch vụ httpd (apache) và mpm prefork đã start hay chưa dùng lệnh sau.
cat /etc/httpd/logs/error_log | grep prefork
netstat -tulpn
Kết quả như trên là đã start thành công rồi, Module pmp prefork, apache đã chạy với pid 20149, Web server đang lắng nghe trên port 80.
Làm đến đâu mình thường check kết quả đến đó nếu ok mới cấu hình tiếp. Một số bạn thường copy paste lệnh đây là một thói quen cấu hình linux không tốt dẫn đến nhiều bug rất khó kiểm soát.
Để xem từ ngoài internet đã truy cập được website hay chưa bạn mở trình duyệt ra rồi nhập địa chỉ IP Public của máy chủ ảo trên thanh địa chỉ http://IP_Public nếu hiện ra trang Apache 2 Test Page là bạn đã thành công rồi.
2. Cấu hình Virtual Hosts trên Apache
Bây giờ Apache đã được tối ưu, nếu muốn chạy nhiều website trên một VPS bạn phải tạo Virtual Hosts cho Apache. Nói chung thì, kể cả có chạy một website duy nhất thì cũng nên tạo Virtual Hosts sau này muốn cài cắm thêm cũng dễ.
Tạo thư mục cần thiết và phân quyền
mkdir -p /var/www/thuysys.com/public_html mkdir -p /var/www/thuysys.com/logs mkdir -p /var/www/thuysys.com/backup
Khi triển khai bất kỳ một trang web nào mình sẽ tạo một thư mục có tên là domain của trang web, trong đó sẽ có 3 folder:
- public_html: bạn sẽ để sourcecode của trang web vào đây.
- logs: để chứa log của trang web.
- backup: chứa các file backup định kỳ hoặc các file cấu hình.
Tiếp theo cần phân quyền lại cho thư mục vừa tạo vì chúng đang thuộc quyền sở hữu của root, bạn phải chuyển quyền sở hữu sang cho user apache
là user quản trị webserver.
chown -R apache:apache /var/www/thuysys.com
Tham số -R
này sẽ chuyển toàn bộ thư mục bao gồm cả files và subfolder từ root sang cho apache.
Tham khảo:
Tạo Virtual Hosts
Trong thư mục conf.d
tạo file vhosts.conf
đây là file chứa cấu hình Virtual hosts. Bên dưới là mẫu cho web thuysys.com, bạn thay đổi các giá trị cho phù hợp với domain của bạn.
Trước hết, mở lại file vi /etc/httpd/conf/httpd.conf
thêm vào dòng bên dưới.
NameVirtualHost *:80
Rồi mở file vi /etc/httpd/conf.d/vhost.conf
thêm vào config bên dưới.
<VirtualHost *:80> ServerAdmin admin@thuysys.com ServerName thuysys.com ServerAlias www.thuysys.com DocumentRoot /var/www/thuysys.com/public_html/ ErrorLog /var/www/thuysys.com/logs/error.log CustomLog /var/www/thuysys.com/logs/access.log combined
Trong đó:
- VirtualHost *:80: port dùng cho trang web có domain được mô tả trong ServerAlias.
- DocumentRoot: đường dẫn đến thư mục chứa sourcecode.
- ServerAdmin: đơn giản chỉ là mail quản trị viện.
- ServerName: root domain của virtual host được người dùng gõ trên trình duyệt.
- ServerAlias: tên gọi khác của root domain, còn được dùng để cấu hình www và non www .
- ErrorLog: ghi lại log các lỗi phát sinh.
- CustomLog: ghi lại log các truy cập.
Bạn nên cấu hình ghi lại log cho web server để debug và theo dõi truy cập đây cũng nguồn dữ liệu quan trọng tạo cơ sở để cấu hình web server và thiết lập tường lửa, nếu cần tối ưu tốc độ bạn có thể tạm thời vô hiệu hóa đi cũng được.
Nói chung không có gì phức tạp cả, từ giờ khi muốn thêm trang web khác bạn chỉ việc thêm tiếp một cái <VirtualHost>…</VirtualHost> là xong.
Hoặc bạn tách mỗi cặp thẻ Virtual Host ra một file, đặt đuôi mở rộng là .conf
đấy cũng là cách hay để quản lý nhiều domain.
Tạo index.html test Web Server
Muốn biết Virtual Hosts hoạt động thế nào thì tạo một file index.html đơn giản vi
/var/www/thuysys.com/public_html/index.html
Với nội dung sau:
<html> <head> <title>Welcome</title> </head> <body> <h1>Cau hinh LAMP VirtualHost thanh cong</h1> </body> </html>
Cấu hình cho Apache khởi động cùng máy chủ
systemctl enable httpd.service
Thế là xong từ giờ webserver sẽ tự khởi động mỗi khi start VPS.
Xong đâu đấy mở trình duyệt ra truy cập domain thuysys.com xem để kiểm tra hoặc dùng lệnh curl -I http://www.thuysys.com
nếu trả vềkết quả như bên dưới là đã thành công rồi.
[root@srv1 ~]# curl -I http://www.thuysys.com HTTP/1.1 200 OK
3. Kết bài
Đây chỉ là cấu hình khá cơ bản còn nhiều thông số khác cần phải quan tâm khi cấu hình Webserver, hiện tại máy chủ của bạn mới chỉ xử lý được các file html đơn giản.
Muốn thực thi được mã nguồn PHP như WordPress cần cài cắm và cấu hình MySQL/MariaDB & PHP thêm, mình xin dừng bài viết tại đây hẹn các bạn ở bài tới.
Em mới mua một Cloud Server như thế này ->
OS: CentOS 7 (64-bit), CPU: 6, RAM: 6 GB, SSD: 100 GB, Băng thông: 100 Mbps, Lưu lượng chuyển tải: Unlimited
Em chưa có kiến thức gì Cloud Server cả giờ nên bắt đầu từ đâu ạ?
Bạn muốn chạy web site thì có thể thực hành theo hướng dẫn của mình có 2 series là LEMP và LAMP bạn thử cài xem sao
bạn ơi cho mình hỏi mình cấu hình như trên nhưng máy client không thể truy xuất vào web được
Bạn bị lỗi như nào
pc mình không vào được webserver
Nó thông báo lỗi gì, ko mô tả lỗi sao mình giúp đc.
bạn có fb ko mình ib chụp hình cho dễ
Bạn kiểm tra lại firewall trên server có khả năng bị chặn port 80 rồi
Lệnh nào để kiểm tra bật tắt KeepAlive timeout thế bác.
Giải thích rõ hơn phần này được ko ?
Em dang xài CentOS 6 thì lệnh khởi động webser cùng lúc khởi động vps là gì ạ
Bàn dùng mấy lệnh này
Khởi động lại Webserver(apache)
service httpd restart
Khởi động lại VPS:
restart
Mà em dùng browser của web server test luôn, nó không vô được. em chưa thử test bằng client. Trước khi cấu hình Virtual host có phải làm gì khác ngoài đặt IP không ạ
Bạn kiểm tra lại quá trình cài webserver và dùng
netstat
xem port 80 có ở trạng thái listen không.Port 80 có listen ạ.
Bạn kiểm tra lại cách tạo virtualhost, chú ý
ServerName
Bạn nhập domain của trang webCho mình hỏi, mình vừa tạo 1 vps ở vultr rồi cài đặt apache luôn và kiểm tra các bước như bạn thì thấy ok nhưng khi mình vào bằng IP trên browser thì báo: This site can’t be reached chứ không hiện ra trang Apache. Bạn chỉ giúp mình có những trường hợp nào gây ra lỗi này với, cách khắc phục ra sao. Cảm ơn bạn.
Ip của bạn là gì
là IP public của VPS đấy bạn
Mình muốn hỏi IP Public để check giúp bạn, bạn chạy lệnh
netstat -tulpn | grep :80
để xem apache đã run hay chưa.Vừa dựng xong cái web – Bán TRẢ mực chấm com. tại : inchigroup.com.
Đang nghiên cứu thị trường thì vấp phải quả bảo mật của Drupal cho nên anh tìm kiếm thông tin về VPs. Thêm web lại thêm server thì tiền tấn mà đổ vào. VICB
Cần tư vấn gì không anh, vẫn phần mềm quản lý nghiệp vụ chưa giải quyết xong à
vi /etc/httpd/conf.d/vhost.conf
Mình làm được tới đoạn đó rồi, ghi được nội dung file rồi thì giờ sao nữa vậy bạn, enter đủ kiểu cũng k được
Bạn nhập ký tự :wq để lưu và thoát khỏi trình soạn thảo vi
Sao không được bạn nhỉ
Bạn đọc thêm bài viết cách dùng vi
E502: “/etc/httpd/conf.d/kenhtop10.com.conf” is a directory
Mình :wq nó báo lỗi thế này bạn ạ
Bạn làm đến bước nào rồi? Tạo cấu hình virtual host xọng bạn phải restart lại apache, lệnh
systemctl restart httpd
Mình tới đoạn nhập thông tin virtualhost bằng câu vi /etc/httpd/conf.d/kenhtop10.com.conf , nhập hết nội dung trong cặp thẻ rồi, bấm esc sau đó :wq thoát ra thì nó bị lỗi đó.k bấm esc thì k lưu và thoát được. bạn hướng dẫn lại giúp mình đoạn đó
Như vậy bạn chưa tạo được file cấu hình virtual host, bạn dùng user nào tạo file vậy không lưu được file hơi lạ
Mình dùng DigitalOcean bạn ơi, mình detroy làm lại các bước rồi mà cũng k được
Nếu không phiền bạn có thể gửi tài khoản VPS để mình config giúp cho.
tại mình cũng muốn xem bạn làm thế nào, để biết mình sai chỗ nào để sau này mình có thể tự làm được. Nếu được bạn có thể teamview giúp mình chút được không
Ok gửi mình teamview
Ồ hay quá nhờ mấy bài viết chi tiết của anh mà em đã cài được website trên Vps rồi thanks anh nhé!
bạn đang dùng máy chủ gì thế, mình có web joomla trên dreamhost định chuyển sang vps k biết có chạy đc không
Mình dùng vps của linode.
joomla cũng là web php nên không vấn đề gì bạn ạ, bạn vào tham khảo http://www.thuysys.com/tag/sao-luu-phuc-hoi để biếtcách backup website trên host.