Hướng dẫn cấu hình và tạo trang web cơ bản với Nginx, PHP-FPM và 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 NGINX
và PHP-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-FPM
và Bash
:
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:
- Tạo thư mục cho trang web trong
/home/$USER/www/$DOMAIN
. - 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
. - Sao chép mã HTML cơ bản vào tệp tin
/home/$USER/www/$DOMAIN/html/index.php.
- Tạo tệp tin cấu hình Nginx cho trang web trong
/home/$USER/www/$DOMAIN/system/conf/www.$DOMAIN.conf.
- 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
và/etc/nginx/sites-enabled
. - Cấp quyền cho người dùng (
user
) và nhóm (group
) cho thư mục chứa trang web. -
Khởi động lại dịch vụ
Nginx
vàPHP-FPM
. -
Khi quá trình hoàn tất, bạn sẽ nhìn thấy thông báo
"Config successfully!"
. -
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ặchttp://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.
-
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.