Package Web Station có nhiệm vụ giúp tạo website mà không phải cấu hình webserver (Nginx/Apache).
Thông thường chúng ta phải qua 3 bước:
- Script Language Settings: (Tạo profile) Nếu trang web có dùng ngôn ngữ PHP hay Python thì cần chỉ định rõ phiên bản và các extension cần dùng. Nếu là web tĩnh thì bỏ qua bước này.
- Web Service: Tạo service bao gồm chọn ngôn ngữ script (bước 1), nơi chứa trang web, webserver (nginx/apache)
- Web Portal: Bao gồm chọn service (bước 2), Portal type (kiểu đường dẫn truy cập trang web), Port (http/https)
Xong bước 3 là có thể mở trang web để kiểm tra. Nếu trang web có dùng CSDL thì phải cài đặt CSDL riêng, mã nguồn trang web sẽ truy cập CSDL chứ không phải thiết lập ở Web Station.
Adminer
Thí dụ đơn giản nhất là cài đặt adminer, ứng dụng quản lý CSDL chỉ gồm 1 file.
Vì trong vài năm gần đây adminer không được cập nhật nên để bảo đảm tính tương thích chúng ta dùng PHP 7.4 (cài đặt nếu chưa có), tuy nhiên adminer vẫn chạy bình thường với PHP 8.2. Nhớ thêm các extension được dùng bởi adminer (MySQLi, PDO_MySQL…, tùy theo cho adminer quản lý CSDL gì). Tải adminer về đặt ở thư mục web/adminer là xong bước 2. Chú ý là file của website cần có owner là http:http.
Portal type (bước 3) chọn Alias portal, khi đó đường dẫn truy cập là https://nas_domain/adminer
WordPress
DSM 7.2 có package WordPress để cài đặt WordPress đơn giản không phải cấu hình webserver. Tuy nhiên package này dùng webserver Apache nên nếu không muốn cài thêm webserver Apache chúng ta phải cài đặt thủ công, bằng cách tải file nguồn về và cài đặt theo hướng dẫn của WordPress.
Tuy nhiên cài đặt thông qua Web Station thì mặc định không thể tùy chọn permalinks.
Các file cấu hình Nginx có thể tìm ở /etc/nginx/conf.d
, symlink của /usr/local/etc/nginx/conf.d
(và vài nơi khác).
Để có thể tùy chọn permalinks, ssh vào NAS, tạo file /etc/nginx/permalinks
# /etc/nginx/permalinks
location / {
if (!-e $request_filename) {
rewrite ^.*$ /index.php last;
}
try_files $uri $uri/ /index.php?$args =404;
}
Tiếp theo xem nội dung trong thư mục conf.d các file ẩn có tên .service.dãy_số_hex.conf, nếu có dòng tương tự như
root /volume1/web/thư_mục_wordpress;
thì đó là file cấu hình WordPress.
Thêm vào dưới dòng index …
include permalinks;
Sau đó khởi động lại nginx
systemctl reload nginx
Chú thích
- Sửa đổi cấu hình web server sẽ khiến DSM tạo ra file cấu hình nginx mới và không xóa file cũ. Lâu ngày phải dọn rác thủ công. Thư mục conf.d chứa các symlink, xóa symlink thì DSM sẽ phát hiện và tạo lại symlink từ file gốc (target), vì vậy nếu symlink dư thừa thì xóa cả symlink và target.
# ls -al
...
.service.af37c6d4-3586-4df7-aa69-3a5b65f3b2bf.2540df89-b2c2-45de-a3a2-836e950abcde.conf -> /usr/local/etc/nginx/conf.d-available/259a139a-8c42-45cb-ba53-d4dff6a67890.w3conf
...
# find / -name .service.af37c6d4-3586-4df7-aa69-3a5b65f3b2bf.2540df89-b2c2-45de-a3a2-836e950abcde.conf
/usr/local/etc/nginx/conf.d/.service.af37c6d4-3586-4df7-aa69-3a5b65f3b2bf.2540df89-b2c2-45de-a3a2-836e950abcde.conf
/var/tmp/nginx/test/plugin_config/conf.d/.service.af37c6d4-3586-4df7-aa69-3a5b65f3b2bf.2540df89-b2c2-45de-a3a2-836e950abcde.conf
# rm .service.af37c6d4-3586-4df7-aa69-3a5b65f3b2bf.2540df89-b2c2-45de-a3a2-836e950abcde.conf
# rm /usr/local/etc/nginx/conf.d-available/259a139a-8c42-45cb-ba53-d4dff6a67890.w3conf
# rm /var/tmp/nginx/test/plugin_config/conf.d/.service.af37c6d4-3586-4df7-aa69-3a5b65f3b2bf.2540df89-b2c2-45de-a3a2-836e950abcde.conf
- Nếu chọn https thì DSM tự tạo file cấu hình nginx cho website đã có đoạn redirect http > https