Hướng dẫn cấu hình và tạo trang web cơ bản với Nginx, PHP-FPM và Bash

Web developers
Text trên giới thiệu về việc tạo trang web cơ bản với Nginx, PHP-FPM và Bash script. Tác giả là một người lười và không thích sử dụng Web Control Panel. Tuy nhiên, việc cấu hình trang web trên Nginx bằng cách thủ công lại là công việc khá tẻ nhạt và lặp lại. Vì vậy, tác giả đã tạo ra một Bash script để tự động hóa quá trình này.
huong-dan-cau-hinh-va-tao-trang-web-co-ban-voi-nginx-php-fpm-va-bash

Với tư cách là một người lười, lại không thích sử dụng các Web Control Panel (cPanel, DirectAdmin,...). Thế nhưng, mỗi lần tôi tạo mới một trang web trên máy chủ Nginx, tôi lại phải tự cấu hình thủ công trang web qua những dòng lệnh khô khan mang tính chất lặp lại. Một người lười như tôi không thể nào chấp nhận được điều này. Tôi chợt nghĩ ra một giải pháp thay thế, đó là viết 1 Bash script để tự động hóa quá trình trên. Đây cũng là nội dung chính mà tôi muốn chia sẽ trong bài viết này.

Trước khi thực hiện theo bài viết, tôi giả định bạn đã cài đặt NGINXPHP-FPM trên máy chủ.

Dưới đây là các bước để cấu hình và tạo trang web cơ bản với Nginx, PHP-FPMBash:

Bước 1: Chuẩn bị

  • Tạo 1 tệp tin bash sell mới, ví dụ create_website.sh.

  • Sao chép đoạn mã sau và dán vào tệp tin vừa mới tạo:

#!/bin/bash

cd ~

echo -n "Input domain name: "

read DOMAIN

mkdir -p /home/$USER/www/$DOMAIN/html
mkdir -p /home/$USER/www/$DOMAIN/system/conf
mkdir -p /home/$USER/www/$DOMAIN/system/logs
chmod 775 /home/$USER/www/$DOMAIN/system/logs

cat >"/home/$USER/www/$DOMAIN/html/index.php" <<END
<html>
<head>
    <title>Title</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- UIkit CSS -->
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/uikit.min.css" />
    <!-- UIkit JS -->
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/uikit.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/uikit-icons.min.js"></script>
</head>
<body>
    <div class="uk-container uk-text-center uk-margin-xlarge-top">
        <div class="uk-margin">
            <a href="https://vietdev.com/community/" title="Vietdev Community" alt="Vietdev Community" target="_blank" class="uk-logo"><img src="https://vietdev.com/favicon-community/favicon.svg" width="130" height="130" alt="Vietdev Community" class="uk-responsive-width uk-logo-inverse"></a>
        </div>
        <div class="uk-margin"><h1><strong class="uk-text-secondary">$DOMAIN</strong></h1></div>
        <div class="uk-margin"><h3><strong class="uk-text-primary">Default Index Page!</strong></h3></div>
    </div>
</body>
</html>
END

cat >"/home/$USER/www/$DOMAIN/system/conf/www.$DOMAIN.conf" <<END
server {
    listen 80;
    listen [::]:80;
    # access_log off;
    access_log /home/$USER/www/$DOMAIN/system/logs/access.log;
    # error_log off;
    error_log /home/$USER/www/$DOMAIN/system/logs/error.log;

    server_name www.$DOMAIN $DOMAIN;
    root /home/$USER/www/$DOMAIN/html;
    index index.php;

    location / {
    try_files \$uri \$uri/ /index.php?q=\$uri&\$args;

    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }

    location ~ /.well-known {
        allow all;
    }

    client_max_body_size 50m;
}
END

sudo ln -s /home/$USER/www/$DOMAIN/system/conf/www.$DOMAIN.conf /etc/nginx/sites-available/www.$DOMAIN.conf

sudo ln -s /etc/nginx/sites-available/www.$DOMAIN.conf /etc/nginx/sites-enabled/www.$DOMAIN.conf

# Replace <user> with the name of your user who will own this directory 

sudo chown $USER:$USER -R /home/$USER/www/$DOMAIN 

# Set the correct permissions 

sudo chmod 775 /home/$USER/www/$DOMAIN 

sudo systemctl restart nginx
sudo systemctl restart php7.4-fpm

cd ~

echo -n "Config successfully!"
echo
  • Đặt quyền thực thi cho tệp tin script bằng cách chạy lệnh `chmod +x create_website.sh

Bước 2: Thực hiện cấu hình và tạo trang web

  • Mở terminal và di chuyển đến thư mục chứa tệp tin script (create_website.sh). Chạy lệnh ./create_website.sh để thực thi script.

Bước 3: Nhập tên miền

  • Khi script được thực thi, bạn sẽ được yêu cầu nhập tên miền cho trang web. Nhập tên miền và nhấn Enter.

Bước 4: Kết quả

Script sẽ thực hiện các bước sau:

  1. Tạo thư mục cho trang web trong /home/$USER/www/$DOMAIN.
  2. Tạo các thư mục con cho hệ thống nơi chứa tệp tin conf và nhật ký logs trong /home/$USER/www/$DOMAIN/system.
  3. Sao chép mã HTML cơ bản vào tệp tin /home/$USER/www/$DOMAIN/html/index.php.
  4. Tạo tệp tin cấu hình Nginx cho trang web trong /home/$USER/www/$DOMAIN/system/conf/www.$DOMAIN.conf.
  5. Tạo liên kết tượng trưng (symlink) cho tệp tin cấu hình Nginx trong /etc/nginx/sites-available/etc/nginx/sites-enabled.
  6. Cấp quyền cho người dùng (user) và nhóm (group) cho thư mục chứa trang web.
  7. Khởi động lại dịch vụ NginxPHP-FPM.

  8. Khi quá trình hoàn tất, bạn sẽ nhìn thấy thông báo "Config successfully!".

  9. Sau đó, bạn có thể truy cập trang web của mình bằng cách nhập địa chỉ http://www.domaincuaban.com hoặc http://domaincuaban.com vào trình duyệt. Trang web cơ bản sẽ được hiển thị với các nội dung và hình ảnh mặc định.

Hướng dẫn cấu hình và tạo trang web cơ bản với Nginx, PHP-FPM và Bash

  • Lưu ý: Đảm bảo rằng bạn đã thay thế các liên kết tới hình ảnh và logo trong mã HTML bằng các liên kết tương ứng của bạn.

  • Chú giải: $DOMAIN là biến sẽ nhận giá trị của domain mà bạn nhập vào trên terminal, còn $USER sẽ tự động nhận giá trị là user hiện hành của bạn trên máy chủ.

Trong những lần tạo domain tiếp theo, bạn chỉ cần chạy tệp tin thực thi create_website.sh sau đó nhập domain cần tạo rồi nhấn enter là xong. Việc chỉnh sửa tệp tin cấu hình của website cũng linh hoạt hoạt hơn, chỉ cần chỉnh sửa trong thư mục config của từng domain riêng biệt, giúp việc quản lý dễ dàng hơn.

Vậy là tôi đã hướng dẫn chi tiết để cấu hình và tạo trang web cơ bản sử dụng Nginx, PHP-FPM và Bash shell script. Bạn có thể tùy chỉnh và mở rộng mã này để phù hợp với nhu cầu cụ thể của mình.

Công nghệ được nhắc đến trong bài viết này

Tên Công NghệPhiên BảnPhát Hành
PHP---
nginx---
5 phút đọc·274 lượt xem·