CodeGym /Các khóa học /Docker SELF /Cài đặt và cấu hình web server (Nginx/Apache)

Cài đặt và cấu hình web server (Nginx/Apache)

Docker SELF
Mức độ , Bài học
Có sẵn

Cài đặt và cấu hình web server (Nginx/Apache)

1. Web server là gì?

Hôm nay tụi mình sẽ nói về NginxApache, hai web server phổ biến nhất. Cuối bài giảng này, server của bạn sẽ tự hào chào đón những người dùng bất ngờ trên internet.

Trước khi đi sâu vào câu lệnh, hãy cùng hiểu xem tụi mình đang cố đạt được điều gì. Web server – là một chương trình chấp nhận các HTTP request (ví dụ như khi người dùng nhập địa chỉ trang web vào trình duyệt), xử lý chúng và trả về nội dung tương ứng (trang HTML, file hoặc thậm chí lỗi «404 Not Found»). Nó đóng vai trò cầu nối giữa người dùng và nội dung của bạn.

Nginx vs Apache: trận chiến của các web server

Nếu Nginx và Apache gặp nhau trong một quán cà phê thì:

  • Nginx sẽ gọi một ly latte hoa oải hương và giải quyết mọi việc theo cách bất đồng bộ: «Cứ gửi request đi, một phút nữa tao sẽ trả file, đừng làm phiền!».
  • Apache, ngược lại, sẽ truyền thống hơn, tạo thread cho từng nhiệm vụ và trả lời lịch sự, dù sẽ chậm hơn khi có nhiều request.

Khác biệt cơ bản:

Đặc điểm Nginx Apache
Kiến trúc Bất đồng bộ Hướng luồng
Hiệu suất Cao khi tải lớn Phù hợp với dynamic (PHP/Perl)
Đơn giản Dễ cấu hình, nhưng có chi tiết riêng Đa năng hơn, nhưng phức tạp hơn

Khi nào chọn cái nào?

  • Nếu trang web của bạn chỉ là một nhóm file tĩnh (ví dụ như blog hoặc landing page), thì Nginx là bạn đồng hành.
  • Nếu bạn làm việc với các ứng dụng web động (ví dụ như trang web PHP), Apache sẽ cung cấp nhiều linh hoạt hơn.

2. Cài đặt máy chủ web

Bây giờ, khi bạn đã hiểu tại sao nó cần thiết, đã đến lúc bắt đầu cài đặt. Chúng ta sẽ xem xét cách cài đặt cả Nginx cũng như Apache. Chọn thứ bạn cảm thấy phù hợp hơn hoặc cài cả hai ngay để cảm thấy như một chuyên gia.

Cài đặt Nginx

  1. Cập nhật danh sách gói:

    sudo apt-get update
    
  2. Cài đặt Nginx:

    sudo apt-get install nginx
    
  3. Kiểm tra trạng thái máy chủ:

    sudo systemctl status nginx
    

    Nếu mọi thứ ổn, bạn sẽ thấy gì đó như: active (running).

  4. Kiểm tra trang mặc định: Mở trình duyệt và nhập http://localhost. Bạn sẽ thấy trang chào mừng của Nginx, xác nhận rằng cài đặt đã thành công.

Cài đặt Apache

  1. Cập nhật danh sách gói:

    sudo apt-get update
    
  2. Cài đặt Apache:

    sudo apt-get install apache2
    
  3. Kiểm tra trạng thái máy chủ:

    sudo systemctl status apache2
    

    Tương tự như Nginx, trạng thái phải là «active (running)».

  4. Kiểm tra trang mặc định: Mở trong trình duyệt http://localhost. Bây giờ sẽ có trang mặc định của Apache.


3. Cấu hình cơ bản của máy chủ web

Các cài đặt nằm đâu?

  • Với Nginx, file cấu hình chính nằm tại:

    /etc/nginx/nginx.conf
    
  • Với Apache:

    /etc/apache2/apache2.conf
    

Thử mở các file cấu hình bằng trình chỉnh sửa yêu thích của bạn (ví dụ như nano):

sudo nano /etc/nginx/nginx.conf
Quan trọng!

Đây là lúc bắt đầu cuộc phiêu lưu đầu tiên của bạn: có thể bây giờ bạn sẽ chẳng hiểu gì, vì các file cấu hình trông giống như những câu thần chú trong game nhập vai. Nhưng đừng sợ – chúng ta sẽ phân tích rõ ràng.

Khởi động, dừng và khởi động lại máy chủ

Nếu bạn biết cách quản lý các dịch vụ trong Linux, thì "một nửa công việc đã xong". Dưới đây là các lệnh cơ bản để quản lý máy chủ web của chúng ta:

Với Nginx:

sudo systemctl start nginx   # Bật
sudo systemctl stop nginx    # Tắt
sudo systemctl restart nginx # Khởi động lại
sudo systemctl reload nginx  # Tải lại cấu hình

Với Apache:

sudo systemctl start apache2
sudo systemctl stop apache2
sudo systemctl restart apache2
sudo systemctl reload apache2

Kiểm tra cấu hình

Trước khi khởi động lại máy chủ, luôn kiểm tra xem bạn có mắc lỗi nào không:

  • Với Nginx:

      sudo nginx -t
    
  • Với Apache:

      sudo apachectl configtest
    

Bất kỳ lỗi nào trong cấu hình sẽ được hiển thị – bạn sẽ không thể vô tình làm hỏng máy chủ được đâu.


4. Demo: Chạy trang web đầu tiên của chúng ta

Bây giờ bọn mình sẽ làm điều mà mấy bạn lập trình web hay thích – tạo một trang web với cái tên siêu sáng tạo là «Hello Server».

Dành cho Nginx

  1. Tạo thư mục cho site:

    sudo mkdir -p /var/www/hello
    sudo nano /var/www/hello/index.html
    

    Viết vào file đoạn này (đúng vậy, cái gì thiên tài thì luôn đơn giản):

    <h1>Hello, Nginx Server!</h1>
  2. Cấu hình:

    sudo nano /etc/nginx/sites-available/hello
    

    Ví dụ config đơn giản:

    server {
        listen 80;
        server_name hello.local;
    
        root /var/www/hello;
        index index.html;
    
        location / {
            try_files $uri $uri/ =404;
        }
        }
  3. Kích hoạt cấu hình:

    sudo ln -s /etc/nginx/sites-available/hello /etc/nginx/sites-enabled/
    sudo nginx -t
    sudo systemctl reload nginx
    
  4. Thêm dòng này vào /etc/hosts, để cấu hình tên miền hello.local trên máy cục bộ:

    127.0.0.1 hello.local
    
  5. Kiểm tra site trên trình duyệt: http://hello.local.

Quan trọng!

File hosts là file mapping giữa địa chỉ IP và tên miền. Nó chính là DNS server cục bộ của bạn. File này có trên mọi hệ điều hành. Nếu bạn dùng Windows, nó sẽ nằm ở địa chỉ C:\Windows\System32\drivers\etc\hosts

Dành cho Apache

  1. Tạo thư mục:

    sudo mkdir -p /var/www/hello
    sudo nano /var/www/hello/index.html
    

    Điền nội dung vào file:

    <h1>Hello, Apache Server!</h1>
  2. Tạo cấu hình virtual host:

    sudo nano /etc/apache2/sites-available/hello.conf
    

    Ví dụ config:

    <VirtualHost *:80>
        ServerName hello.local
        DocumentRoot /var/www/hello
    
        <Directory /var/www/hello>
            Options Indexes FollowSymLinks
            AllowOverride All
            Require all granted
        </Directory>
    </VirtualHost>
  3. Kích hoạt cấu hình:

    sudo a2ensite hello.conf
    sudo systemctl reload apache2
    
  4. Thêm dòng này vào /etc/hosts:

    127.0.0.1 hello.local
    
  5. Kiểm tra: http://hello.local.


Sau bài giảng hôm nay, bạn đã sẵn sàng tự cài đặt và cấu hình máy chủ web cơ bản. Chỉ cần thêm một chút cố gắng – bạn sẽ triển khai được những trang web và ứng dụng chỉn chu, không còn như một bức tranh trẻ em nữa. HTTPS đang chờ đâu đó quanh góc, nhưng chúng ta sẽ để dành nói sau nhé.

Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION