Mục lục
- 1) Cài Nginx và PHP 8.3
- 2) Tạo thư mục cài đặt
- 3) Tải và giải nén Init Uploader (không cần SFTP)
- 4) Thiết lập cấu hình Init Uploader (mục CONFIGURATION)
- 5) Cấp quyền cho web user
- 6) Điều chỉnh PHP 8.3 cho upload lớn
- 7) Cấu hình Nginx cho cdn.example.com
- 8) Cài chứng chỉ HTTPS bằng Certbot
- 9) Kiểm tra hoạt động
- 10) Gợi ý bảo trì
1) Cài Nginx và PHP 8.3
sudo apt update && sudo apt upgrade -y
sudo apt install nginx -y
# Cài PHP 8.3 và các extension cần thiết (GD hoặc Imagick, Fileinfo, cURL, Zip, XML, MBString)
sudo apt install php8.3-fpm php8.3-cli php8.3-common \
php8.3-gd php-imagick php8.3-mbstring php8.3-xml php8.3-zip php8.3-curl php8.3-fileinfo unzip -y
php -v
2) Tạo thư mục cài đặt
sudo mkdir -p /var/www/init-uploader
sudo chown -R $USER:$USER /var/www/init-uploader
3) Tải và giải nén Init Uploader (không cần SFTP)
Sử dụng link tải chính thức để cài trực tiếp trên server.
cd /var/www/init-uploader
sudo wget -O init-uploader.zip "https://inithtml.com/releases/tools/init-uploader.zip?v=1.1.0"
sudo unzip -o init-uploader.zip
Cấu trúc sau khi giải nén:
/var/www/init-uploader/
├─ init-uploader.php
└─ uploads/
4) Thiết lập cấu hình Init Uploader (mục CONFIGURATION)
Mở file init-uploader.php và chỉnh thông tin phù hợp domain và bảo mật.
sudo nano /var/www/init-uploader/init-uploader.php
Cấu hình gợi ý cho bản demo:
// Xác thực
define('API_KEY', 'supersecretapikey123');
define('SECRET_KEY', 'supersecrethmackey456');
define('USE_HMAC_AUTH', false);
define('HMAC_TIME_WINDOW', 300);
// Đường dẫn
define('UPLOAD_DIR', __DIR__ . '/uploads');
define('BASE_URL', 'https://cdn.example.com');
// Giới hạn upload
define('MAX_FILE_SIZE', 200 * 1024 * 1024); // 200MB
define('ALLOWED_EXTENSIONS', ['jpg','jpeg','png','gif','webp']);
// Kiểm tra định dạng ảnh
define('STRICT_IMAGE_VALIDATION', false);
// Hệ thống
define('ENABLE_LOGGING', true);
define('REQUIRE_HTTPS', true);
5) Cấp quyền cho web user
Đặt quyền sở hữu cho www-data để PHP-FPM có thể ghi và đọc dữ liệu.
sudo chown -R www-data:www-data /var/www/init-uploader
sudo find /var/www/init-uploader -type d -exec chmod 755 {} \;
sudo find /var/www/init-uploader -type f -exec chmod 644 {} \;
6) Điều chỉnh PHP 8.3 cho upload lớn
sudo nano /etc/php/8.3/fpm/php.ini
Chỉnh các giá trị sau:
upload_max_filesize = 512M
post_max_size = 512M
max_execution_time = 600
max_input_time = 600
memory_limit = 1024M
sudo systemctl restart php8.3-fpm
7) Cấu hình Nginx cho cdn.example.com
sudo nano /etc/nginx/sites-available/cdn.example.com
server {
listen 80;
server_name cdn.example.com;
root /var/www/init-uploader;
index init-uploader.php index.php;
# Giới hạn và timeout thoáng cho upload lớn
client_max_body_size 512M;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
access_log /var/log/nginx/init-uploader.access.log;
error_log /var/log/nginx/init-uploader.error.log;
location / {
try_files $uri $uri/ /init-uploader.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_read_timeout 600;
}
location ~ /\.ht {
deny all;
}
}
sudo ln -s /etc/nginx/sites-available/cdn.example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
8) Cài chứng chỉ HTTPS bằng Certbot
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d cdn.example.com
sudo systemctl enable certbot.timer
sudo systemctl start certbot.timer
9) Kiểm tra hoạt động
Truy cập https://cdn.example.com. Nếu hiển thị JSON thông báo “No files uploaded” là server đã hoạt động.
Test upload bằng API key:
curl -X POST "https://cdn.example.com" \
-H "X-API-Key: supersecretapikey123" \
-F "file=@/path/to/test.jpg" \
-F "path=manga/demo"
10) Gợi ý bảo trì
- Xoá hoặc xoay log
/var/www/init-uploader/upload.logđịnh kỳ. - Giữ quyền thư mục
uploads/chowww-datađể PHP có thể ghi. - Bật
USE_HMAC_AUTH=truenếu cần xác thực nâng cao cho môi trường production. - Khuyến nghị đặt CDN (Cloudflare, BunnyCDN, v.v.) trước thư mục
/uploadsđể tối ưu tốc độ.
Bình luận