Tìm hiểu và cài đặt webserver sử dụng apache và sử dụng nginx.
1. Web server là gì?
- Ở khía cạnh phần cứng, web server là một server lưu trữ các tài nguyên mà tạo nên một trang web và nó gửi các tài nguyên đó đến client yêu cầu.
- Ở khía cạnh phần mềm, web server bao gồm một số phần mềm kiểm soát người dùng truy cập, nó sử lý thông tin và trả về trang web hay tài nguyên cho người dùng.
2. Apache
2.1.Apache là gì?
Apache là một phần mềm mã nguồn mởi miễn phí được cài đặt trên các server(web server) để xử lý các yêu cầu tới máy chủ theo giao thức HTTP. Apache có tên chính thức là Apache HTTP Server
Ưu điểm của Apache:
- Là phần mềm mã nguồn mở, miễn phí kể cả cho mục đích thương mại.
- Apache đáng tin cậy, ổn định với nhiều hệ điều hành
- Apache linh hoạt với cấu trúc module
- Apache dễ dàng cấu hình và thân thiện với người mới dùng.
- Hoạt động hiệu quả với các web site wordpress
- Apache có cộng đồng lớn và sẵn sàng hỗ trợ bất cứ lúc nào.
- Apache là phần mềm đa nền tảng(Unix, Linux và Windows).
Nhược điểm:
- Hiệu năng kém nếu website có lượng truy cập lớn.
- Nhiều tùy chọn dẫn đến nhiều điểm yếu trong bảo mật.
2.2. Cài đặt Apache.
Cài đặt Apache trên Centos 7
- Sử dụng lệnh sau để cài đặt Apache bằng yum:
sudo yum install httpd -y
- Khởi động và enable dịch vụ
systemctl start httpd systemctl enable httpd
- Kiểm tra trạng thái của service:
systemctl status httpd
- Kiểm tra port được sử dụng bởi httpd:
netstat -natp | grep httpd
- Tạo một file HTML để kiểm tra dịch vụ Apache đã chạy và phản hồi các yêu cầu HTTP với file này hay chưa. Tạo file
index.html
trong thư mục DocumentRoot của Apache là/var/www/html
:cd /var/www/html vi index.html
Và thêm nội dung sau: ```
Test hoạt động Apache
- Truy cập địa chỉ ip của server trên trình duyệt để kiểm tra:

### 2.3. Quản lý apache
- Dừng dịch vụ:
systemctl stop httpd
- Để khởi động máy chủ web khi dừng:
sudo systemctl start httpd
- Để khởi động lại dịch vụ, gõ:
sudo systemctl restart httpd
- Nếu chỉ cần cập nhật lại cấu hình mà không làm mất kêt nối chạy lệnh:
sudo systemctl reload httpd
- Enable để có thể khởi động apache cùng hệ thống:
systemctl enable httpd
- Disable để cấu hình không khởi động apache cùng hệ thống:
systemctl disable httpd
## 2.4. Log
Apache có hai file log:
- **Error log**: Là file lưu log về lỗi hay các chuẩn đoán về lỗi trong quá trình phục vụ các yêu cầu. Nó thường lưu
## 3. Nginx

### 3.1. Nginx là gì?
Nginx là một phần mềm webserver mã nguồn mở miễn phí, nó cũng được sử dụng làm một bộ đệm, cân bằng tải, reverse proxy,..
NGINX xuất bản chính thức vào tháng 10 năm 2004. Nhà sáng lập của phần mềm này là Igor Sysoev, triển khai dự án từ năm 2002 để giải quyết vấn đề C10k. C10k là giới hạn của việc xử lý 10 ngàn kết nối cùng lúc. Ngày nay, có nhiều web server còn phải chịu nhiều kết nối hơn vậy để xử lý. NGINX sử dụng kiến trúc hướng sự kiện (event-driven) không đồng bộ (asynchronous). Tính năng này khiến NGINX server trở nên đáng tin cậy, tốc độ và khả năng mở rộng lớn nhất.
Vì khả năng mạnh mẽ, và để có thể xử lý hàng ngàn kết nối cùng lúc, nhiều website có traffic lớn đã sử dụng dịch vụ NGINX. Một vài trong số những ông lớn công nghệ dùng nó là Google, Netflix, Adobe, Cloudflare, WordPress, và còn nhiều hơn nữa.
### 3.2. Nginx và Apache
#### Về hệ điều hành hỗ trợ
Cả Apache và Nginx đều hỗ trợ đa nền tảng, Apache có hiệu năng ổn định trên tất cả các nền tảng tuy nhiên, Nginx lại tỏ ra kém hiệu quả hơn khi sử dụng trên windows.
#### Hỗ trợ người dùng
Cả hai đều có cộng đồng hỗ trợ lớn tuy nhiên Apache lại thiếu hỗ trợ từ chính công ty của nó, Apache Foundation.
#### Hiệu năng
Nginx có hiệu năng tốt hơn với các website có nội dung tĩnh và sử dụng tài nguyên hiệu quả hơn so với Apache.
### 3.3. Cài đặt Nginx trên Centos 7.
Các bước trong bài đều yêu cầu quyền root.
- Thêm EPEL repository:
yum install epel-release yum update
- Cài đặt và bật dịch vụ Nginx:
yum install nginx -y systemctl start nginx
- Nếu sử dụng firewalld, cần cho phép dịch vụ HTTP và HTTPS:
sudo firewall-cmd –permanent –zone=public –add-service=http sudo firewall-cmd –permanent –zone=public –add-service=https sudo firewall-cmd –reload ```
- Truy cập vào địa chỉ IP của server, ta sẽ thấy test web:
-
Đã cài đặt thành công.
- Thư mục root mặc định của nginx là /usr/share/nginx/html. Cấu hình mặc định này được cấu hình trong /etc/nginx/conf.d/default.conf
- Cấu hình Server Block: Server block được biết đến như virtual host trong Apache, có thể được thêm bằng cách thêm file config trong /etc/conf.d/ với đuôi là .conf sẽ được load khi Nginx được mở.
- File cấu hình chính của nginx là
/etc/nginx/nginx.conf
.