Di chuyển website NGINX sang máy chủ Caddy của ServBay
ServBay là môi trường phát triển web cục bộ mạnh mẽ, tích hợp nhiều máy chủ web phổ biến như Caddy, NGINX và Apache. ServBay đã cấu hình sẵn các quy tắc URL Rewrite cho các máy chủ này, đặc biệt là Caddy và NGINX, giúp đơn giản hóa tối đa công việc cấu hình cho các lập trình viên.
Tài liệu này cung cấp hướng dẫn chi tiết về cách chuyển đổi liền mạch website NGINX hiện tại của bạn sang máy chủ Caddy tích hợp trong ServBay. Chúng tôi sẽ lấy ví dụ với các framework PHP nổi tiếng như Laravel và hệ quản trị nội dung WordPress để minh họa quá trình chuyển đổi.
ServBay hỗ trợ toàn diện các máy chủ Web
ServBay cung cấp hỗ trợ toàn diện cho Caddy, NGINX và Apache, bạn có thể linh hoạt chuyển đổi máy chủ web mặc định tùy theo nhu cầu dự án. Vui lòng tham khảo tài liệu Cách chuyển đổi máy chủ web mặc định để biết thêm chi tiết.
Tổng quan
Di chuyển website từ một máy chủ web sang máy chủ khác thường liên quan đến việc chuyển đổi tập tin cấu hình cũng như mã nguồn website. Với ServBay, quá trình di chuyển sang Caddy được tối ưu hóa tối đa cho sự đơn giản. Đối với hầu hết các framework PHP và hệ quản trị nội dung phổ biến (như Laravel, WordPress, Symfony, CodeIgniter, Drupal, Joomla...), ServBay đã hỗ trợ sẵn ngay khi cài đặt, bạn không cần tự tay viết hoặc chỉnh sửa file cấu hình Caddy. ServBay sẽ tự động sinh ra Caddyfile dựa trên các thiết lập website của bạn trong giao diện GUI.
Chuẩn bị trước khi di chuyển
Trước khi bắt đầu bất cứ thao tác chuyển đổi nào, hãy đảm bảo bạn đã chuẩn bị đầy đủ:
- Sao lưu mã nguồn website: Hãy sao lưu toàn bộ tập tin và thư mục trong thư mục gốc của website.
- Sao lưu cơ sở dữ liệu: Sao lưu cơ sở dữ liệu đang sử dụng (ví dụ MySQL, PostgreSQL, MongoDB...). ServBay có các công cụ quản lý dữ liệu tích hợp hoặc bạn cũng có thể sao lưu thủ công.
- Cài đặt ServBay: Đảm bảo bạn đã cài đặt và chạy ServBay thành công trên hệ điều hành macOS.
- Xác nhận vị trí file: Đặt mã nguồn website vào thư mục website mặc định
/Applications/ServBay/www
của ServBay hoặc tạo thư mục con bên trong. Ví dụ, nếu dự án của bạn tênmyproject
, hãy chuyển vào/Applications/ServBay/www/myproject
.
Cách hoạt động của Caddy trong ServBay
Việc hiểu cơ chế quản lý cấu hình Caddy trong ServBay là rất quan trọng để chuyển đổi thành công. Khác với việc tự tay quản lý Caddyfile, ServBay dùng giao diện đồ họa (GUI) để bạn thêm và cấu hình website. Khi bạn thêm một website, chọn Caddy làm máy chủ web, ServBay tự động sinh và quản lý các đoạn cấu hình Caddyfile dựa trên tên miền, thư mục gốc, phiên bản PHP... bạn đã thiết lập. Các đoạn này sẽ được tích hợp vào Caddyfile chính của ServBay để website hoạt động bình thường.
Nói cách khác, bạn chỉ cần thêm website vào GUI của ServBay là cấu hình Caddy đã hoàn tất, không phải động chạm hay chỉnh sửa bất kỳ file .caddyfile
hoặc file văn bản nào khác.
Các bước di chuyển
Di chuyển website NGINX sang máy chủ Caddy của ServBay rất dễ dàng:
- Khởi động ServBay: Đảm bảo ứng dụng ServBay đang chạy.
- Chọn thư mục mã nguồn: Di chuyển hoặc sao chép toàn bộ mã nguồn NGINX (bao gồm code, hình ảnh, CSS, JS...) vào thư mục mới bên trong thư mục website của ServBay, ví dụ
/Applications/ServBay/www/your-site-name
. - Thêm website mới qua GUI của ServBay:
- Mở ứng dụng ServBay.
- Chuyển đến mục “Websites” (Trang web).
- Nhấn nút “Thêm website”.
- Điền thông tin website:
- Domain (Tên miền): Nhập tên miền truy cập cục bộ, ví dụ
your-site-name.servbay.demo
. - Website Root (Thư mục gốc): Chọn thư mục bạn đã đặt mã nguồn, ví dụ
/Applications/ServBay/www/your-site-name
. - Web Server (Máy chủ web): Chọn
Caddy
. - PHP Version (Phiên bản PHP): Chọn phiên bản PHP ứng dụng của bạn yêu cầu.
- Domain (Tên miền): Nhập tên miền truy cập cục bộ, ví dụ
- Nhấn “Lưu” hoặc “Tạo”.
- Kiểm tra website: ServBay sẽ tự thêm tên miền mới vào file hosts của máy tính và cấu hình Caddy. Truy cập tên miền đã thiết lập (ví dụ
http://your-site-name.servbay.demo
) trên trình duyệt để kiểm tra website. - Cấu hình cơ sở dữ liệu: Nếu website dùng CSDL, hãy đảm bảo dịch vụ CSDL tương ứng của ServBay (MySQL, PostgreSQL,...) đã hoạt động, đồng thời cập nhật lại thông tin kết nối trong file cấu hình website (thường là
127.0.0.1
hoặclocalhost
cho địa chỉ, cùng tên đăng nhập/mật khẩu).
Ví dụ: Di chuyển website Laravel
Cấu hình NGINX phổ biến (Tham khảo)
Đây là một ví dụ cấu hình NGINX thường dùng cho website Laravel. Nó chỉ ra cách cấu hình thư mục gốc, file khởi động (index.php
) và xử lý PHP FastCGI trong NGINX:
server {
listen 80;
server_name laravel.servbay.demo; # Sử dụng tên miền mẫu của ServBay
root /Applications/ServBay/www/laravel/public; # Trỏ vào thư mục public của Laravel
index index.php index.html index.htm;
location / {
# Cố gắng truy cập trực tiếp file/thư mục, nếu không có thì chuyển hướng về index.php
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
# Cấu hình xử lý PHP FastCGI
include fastcgi_params;
# Đường dẫn PHP-CGI socket mặc định của ServBay
fastcgi_pass unix:/Applications/ServBay/tmp/php-cgi.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /\.ht {
# Ngăn truy cập file ẩn bảo mật
deny all;
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Cấu hình Caddy tương ứng trong ServBay (Tự động sinh, không cần viết tay)
Không cần tự cấu hình Caddyfile
Với ServBay, bạn KHÔNG cần tự tạo hay chỉnh sửa Caddyfile để thiết lập các chức năng trên. GUI của ServBay sẽ tự động sinh mọi cấu hình Caddy cần thiết dựa theo thiết lập khi thêm website. Ví dụ sau chỉ minh họa cách ServBay nội bộ chuyển đổi cấu hình từ kiểu NGINX sang Caddy, giúp bạn hiểu cơ chế hoạt động.
Dưới đây là đoạn cấu hình Caddy mà về lý thuyết ServBay sẽ tự động sinh cho website Laravel ở trên (đã đơn giản hóa, thực tế ServBay có thể sinh phức tạp hơn nhằm gia tăng tính năng):
# Cấu hình này được ServBay tự động quản lý
laravel.servbay.demo {
# Thiết lập thư mục gốc website
root * /Applications/ServBay/www/laravel/public
# Cấu hình xử lý PHP FastCGI qua socket của ServBay
php_fastcgi unix//Applications/ServBay/tmp/php-cgi.sock
# Bật file_server phục vụ file tĩnh
file_server
# Định nghĩa matcher cho các file không tĩnh
@notStatic {
not {
file {
try_files {path} {path}/ /index.php?{query}
}
}
}
# Rewrite đến index.php với các yêu cầu không phải file tĩnh
rewrite @notStatic /index.php
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Các bước thực tế khi di chuyển Laravel:
- Sao chép mã nguồn Laravel vào
/Applications/ServBay/www/laravel
. - Đảm bảo thư mục
laravel/public
là điểm truy cập của website. - Thêm website mới trên GUI của ServBay: Domain
laravel.servbay.demo
, thư mục gốc/Applications/ServBay/www/laravel/public
, chọn Caddy làm máy chủ web. - Cấu hình các thông số kết nối CSDL chuẩn xác trong file
.env
của Laravel. - Truy cập
http://laravel.servbay.demo
để kiểm tra hoạt động.
Ví dụ: Di chuyển website WordPress
Cấu hình NGINX phổ biến (Tham khảo)
Dưới đây là ví dụ cấu hình cơ bản của NGINX dành cho WordPress:
server {
listen 80;
server_name wordpress.servbay.demo; # Dùng tên miền mẫu của ServBay
root /Applications/ServBay/www/wordpress; # Thư mục cài đặt WordPress
index index.php index.html index.htm;
location / {
# Quy tắc rewrite permalink cho WordPress
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
# Xử lý PHP FastCGI
include fastcgi_params;
# Đường dẫn PHP-CGI socket mặc định của ServBay
fastcgi_pass unix:/Applications/ServBay/tmp/php-cgi.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /\.ht {
# Không cho truy cập file ẩn
deny all;
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Cấu hình Caddy tương ứng trong ServBay (Tự động sinh, không cần viết tay)
Không cần tự cấu hình Caddyfile
Tương tự WordPress, GUI của ServBay tự động sinh các cấu hình Caddy cần thiết. Ví dụ dưới đây chỉ mô tả cách ServBay chuyển quy tắc permalink cho WordPress sang Caddy để bạn dễ hình dung.
Đây là đoạn Caddyfile lý thuyết về cách ServBay tự động sinh cho website WordPress:
# Cấu hình này được ServBay tự động quản lý
wordpress.servbay.demo {
# Thiết lập thư mục gốc website
root * /Applications/ServBay/www/wordpress
# Xử lý PHP FastCGI qua socket
php_fastcgi unix//Applications/ServBay/tmp/php-cgi.sock
# Bật file_server
file_server
# Định nghĩa matcher cho file không tĩnh
@notStatic {
not {
file {
try_files {path} {path}/ /index.php?{query}
}
}
}
# Rewrite về index.php để hỗ trợ permalink
rewrite @notStatic /index.php
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Các bước thực tế khi di chuyển WordPress:
- Sao chép mã nguồn WordPress vào
/Applications/ServBay/www/wordpress
. - Thêm website mới qua GUI của ServBay: Domain
wordpress.servbay.demo
, thư mục gốc/Applications/ServBay/www/wordpress
, máy chủ web chọnCaddy
. - Thiết lập thông số kết nối CSDL trong file
wp-config.php
của WordPress. - Truy cập
http://wordpress.servbay.demo
để kiểm thử. Nếu gặp vấn đề với permalink, thông thường là do ServBay đã thiết lập sẵn Rewrite rule nên không cần cấu hình thêm. Hãy kiểm tra phần “Cài đặt” -> “Đường dẫn tĩnh” ở bảng điều khiển WordPress để chắc chắn đã chuẩn.
Lưu ý
- Kết nối cơ sở dữ liệu: Sau khi di chuyển, đảm bảo cập nhật lại thông tin kết nối CSDL trong code website, trỏ về dịch vụ CSDL đang chạy của ServBay.
- Biến môi trường: Nếu ứng dụng cần các biến môi trường đặc biệt, hãy cấu hình đúng trong môi trường ServBay (qua file
.env
của PHP hoặc qua các tuỳ chọn cấu hình của ServBay). - Cấu hình NGINX phức tạp: Các ví dụ trong tài liệu chủ yếu dùng cho cấu hình Laravel và WordPress phổ biến. Nếu cấu hình NGINX của bạn phức tạp (nhiều rule tuỳ biến, sử dụng module đặc biệt...), rất có thể ServBay không thể tự động tạo chính xác cấu hình Caddy tương ứng. Khi đó, bạn nên tham khảo tài liệu Caddy và dùng các điểm mở rộng cấu hình Caddy của ServBay (nếu có) hoặc tùy biến dựa vào hiểu biết logic sinh file tự động của ServBay. Đa phần các ứng dụng web phổ biến, cấu hình sinh tự động của ServBay là đủ dùng.
- HTTPS/SSL: ServBay hỗ trợ cấu hình HTTPS cho website cục bộ. Bạn có thể sử dụng ServBay User CA hoặc ServBay Public CA để tạo và tin tưởng chứng chỉ SSL cho máy tính của mình mà không cần tự cấu hình lệnh TLS của Caddy.
Tổng kết
Di chuyển website NGINX sang máy chủ Caddy của ServBay là một quá trình rất đơn giản nhờ tính năng tự động hoá quản lý cấu hình của ServBay. Với các ứng dụng phổ biến như Laravel hay WordPress, bạn chỉ cần chép file vào đúng thư mục và thêm website trên GUI là xong. ServBay sẽ tự động xử lý các quy tắc rewrite URL, PHP FastCGI,..., giúp bạn nhanh chóng chạy website bằng Caddy trên môi trường cục bộ.