Với giao diện quản trị đơn giản cùng khả năng tùy chỉnh nhiều chủ đề, Ghost đã và đang trở thành một nền tảng blog mã nguồn mở miễn phí được sử dụng phổ biến hàng đầu hiện nay. Trong bài viết này, Vietnix sẽ hướng dẫn bạn cách cài đặt và cấu hình Ghost trên CentOS 7 đơn giản và nhanh chóng nhất. Mời bạn cùng theo dõi ngay tại đây.
Điều kiện cần thiết để cài đặt và cấu hình Ghost trên CentOS 7
Trước khi thực hiện các bước như trong hướng dẫn bên dưới, bạn cần đảm bảo đáp ứng được các điều kiện sau:
- Một máy chủ CentOS 1GB và một tài khoản user non-root có quyền sudo.
- Có cài đặt Node.js bằng repo EPEL.
- Nginx được cài sẵn trên server đó. (Hướng dẫn chi tiết về cách cài đặt Nginx trên CentOS 7 tại đây)
Nếu bạn đang tìm kiếm giải pháp máy chủ lưu trữ với chi phí tiết kiệm thì có thể tham khảo các gói VPS của Vietnix. Hiện tại, Vietnix đang cung cấp dịch vụ máy chủ ảo VPS với cấu hình RAM tối thiểu 1GB và ổ cứng 20GB SSD với toàn quyền quản trị giúp bạn có thể cài đặt các phần mềm tùy chọn theo nhu cầu sử dụng. Nếu còn phân vân chưa biết nên sử dụng gói VPS Giá Rẻ, Cloud Server, VPS Cao Cấp, VPS NVMe, VPS GPU, đội ngũ Vietnix sẽ hỗ trợ tư vấn chi tiết cho bạn hoàn toàn miễn phí.
5 bước cài đặt và cấu hình Ghost trên CentOS 7
Dưới đây là các bước cài đặt và cấu hình Ghost trên CentOS 7 mà bạn có thể tham khảo:
Bước 1: Cài đặt Ghost
Đầu tiên, bạn có thể đặt Ghost trong thư mục được khuyến nghị là /var/www/ghost
. Từ kho lưu trữ GitHub của Ghost, bạn tải xuống phiên bản mới nhất thông qua wget
:
wget https://ghost.org/zip/ghost-latest.zip
Tiếp theo, bạn cần cài đặt chương trình unzip
thông qua trình quản lý package để có thể giải nén kho lưu trữ. Bạn phải đảm bảo rằng hệ thống đã được cập nhật trước khi bắt đầu cài đặt một chương trình mới. Nếu chưa, sử dụng các lệnh sau để cập nhật các packages và cài đặt unzip
:
sudo yum update -y
sudo yum install unzip -y
Trong lệnh trên, cờ -y có vai trò tự động cập nhật và cài đặt các package mà không cần xác nhận từ người dùng. Sau khi cài đặt unzip
, bạn tiến hành giải nén package đã tải xuống trong thư mục /var/www/ghost
. Lúc này, bạn cần tạo thư mục /var/www
rồi giải nén file:
sudo mkdir /var/www
sudo unzip -d /var/www/ghost ghost-latest.zip
Để chuyển sang thư mục /var/www/ghost/
, dùng lệnh:
cd /var/www/ghost/
Bây giờ, bạn cần cài đặt các phụ thuộc của Ghost, nhưng bạn chỉ nên chọn những phần cần thiết trong quá trình sản xuất. Lệnh su sẽ bỏ qua mọi phụ thuộc cần thiết cho nhà phát triển Ghost:
sudo npm install --production
Như vậy, bạn đã cài đặt Ghost thành công. Tiếp theo bạn cần thực hiện một số thiết lập để cấu hình Ghost.
Bước 2: Cấu hình Ghost
Ghost sử dụng file cấu hình được đặt tại /var/www/ghost/config.js
. Mặc dù file này không có sẵn nhưng bạn vẫn có thể bắt đầu với file cấu hình config.example.js
có trong bản cài đặt Ghost.
Thay vì di chuyển file cấu hình, bạn nên sao chép nó sang /var/www/ghost/config.js
để đảm bảo khả năng phục hồi lại các thay đổi trong trường hợp cần thiết về sau.
sudo cp config.example.js config.js
Để chỉnh sửa, bạn cần mở file bằng cách nhập:
sudo vi config.js
Đến bước này, bạn cần phải thay đổi URL mà Ghost sử dụng để tránh trường hợp các liên kết trên blog sẽ dẫn khách truy cập đến địa chỉ my-ghost-blog.com. Giá trị của trường URL
có thể được thay đổi thành tên miền, hoặc nếu bạn chưa muốn sử dụng tên miền thì có thể đổi thành địa chỉ IP máy chủ.
/var/www/ghost/config.js
...
config = {
// ### Production
// When running Ghost in the wild, use the production environment
// Configure your URL and mail settings here
production: {
url: 'http://your_domain_or_ip_address',
mail: {},
...
Hãy đảm bảo rằng url
phải có định dạng của một URL (chẳng hạn như http://vietnixtest.com
hoặc http://11.11.11.11
. Nếu không đúng định dạng, Ghost sẽ không thể khởi động.
Ngoài ra, Ghost cũng có thể hoạt động mà không cần cài đặt email, chúng chỉ cần thiết khi bạn cần khôi phục mật khẩu cho người dùng Ghost. Vì thế bài hướng dẫn này sẽ bỏ qua bước cấu hình thiết lập mail. Sau khi thực hiện các tùy chỉnh cần thiết, bạn lưu file và thoát khỏi trình chỉnh sửa.
Lúc này, khi vẫn còn ở trong thư mục /var/www/ghost
, bạn có thể khởi động Ghost với câu lệnh sau:
sudo npm start --production
Sau câu lệnh trên, output sẽ hiển thị như sau:
Output
> ghost@0.11.7 start /var/www/ghost
> node index
WARNING: Ghost is attempting to use a direct method to send email.
It is recommended that you explicitly configure an email service.
Help and documentation can be found at http://support.ghost.org/mail.
Migrations: Creating tables...
...
Ghost is running in production...
Your blog is now available on http://your_domain_or_ip_address
Ctrl+C to shut down
Bây giờ, Ghost đang nghe trên công 2368
nhưng Ghost lại không nghe từ public network interface. Vì thế, bạn không thể truy cập trực tiếp vào Ghost. Để giải quyết vấn đề này, bạn cần thiết lập Nginx phía trước Ghost.
Bước 3: Cấu hình Nginx để chuyển tiếp (proxy) các yêu cầu đến Ghost
Tại bước này, người dùng sẽ thiết lập Nginx để phục vụ blog Ghost. Điều này cho phép các kết nối trên port 80
kết nối đến port mà Ghost đang hoạt động và bạn sẽ truy cập blog mà không cần thêm port :2368 vào cuối địa chỉ nữa.
Nếu như Ghost vẫn đang chạy trong cửa sổ terminal, bạn cần phải bấm CTRL+C
để tắt trước khi đến với bước tiếp theo.
Sau đó, bạn sẽ tiến hành cấu hình Nginx với thao tác đầu tiên là thay đổi thư mục /etc/nginx
.
cd /etc/nginx/
Bạn sẽ không có thư mục sites-available
và sites-enabled
để quản lý cấu hình trang web nếu như cài đặt Nginx từ repo EPEL của CentOS. Vậy nên, bạn cần tạo ra chúng với câu lệnh sau:
sudo mkdir sites-available
sudo mkdir sites-enabled
Tiếp đó, bạn tạo một file mới với tên ghost
trong /etc/nginx/sites-available/
:
sudo vi /etc/nginx/sites-available/ghost
Hãy đặt cấu hình sau vào file rồi thay đổi your_domain_or_ip_address
thành tên miền hoặc địa chỉ IP máy chủ trong trường hợp bạn chưa có tên miền:
/etc/nginx/sites-available/ghost
server {
listen 80;
server_name your_domain_or_ip_address;
location / {
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:2368;
}
}
Như vậy, cấu hình cơ bản này sẽ gửi tất cả các yêu cầu cho máy chủ đến blog Ghost đang chạy trên cổng 2368
. Đồng thời, nó cũng đặt các tiêu đề HTTP thích hợp giúp bạn có thể xem địa chỉ IP ban đầu của khách truy cập một cách dễ dàng.
Sau khi hoàn tất quá trình chỉnh sửa, bạn đã có thể lưu file và thoát khỏi trình chỉnh sửa. Tiếp theo, hãy tạo một symlink cho file này trong thư mục /etc/nginx/sites-enabled
:
sudo ln -s /etc/nginx/sites-available/ghost /etc/nginx/sites-enabled/ghost
Chỉ khi bạn sửa đổi tệp cấu hình Nginx mặc định và yêu cầu nó bao gồm các file cấu hình trong thư mục sites-enabled
, thì Nginx mới có thể sử dụng được cấu hình mới này. Bên cạnh đó, bạn cũng cần phải vô hiệu hóa trang web mặc định để đảm bảo rằng Nginx sẽ chỉ phục vụ trang web bạn đã cấu hình trong file.
Đầu tiên, bạn mở file nginx.conf
trong trình chỉnh sửa với lệnh:
sudo vi nginx.conf
Đừng quên đặt dòng sau vào trong block http
để bao gồm các file cấu hình trong thư mục sites-enabled
:
/etc/nginx/nginx.conf
http {
...
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
Tiếp theo, bạn tạm thời vô hiệu hóa server
block được tìm thấy bên trong khối http
:
/etc/nginx/nginx.conf
...
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
# server {
# listen 80 default_server;
# listen [::]:80 default_server;
# server_name _;
# root /usr/share/nginx/html;
#
# # Load configuration files for the default server block.
# include /etc/nginx/default.d/*.conf;
#
# location / {
# }
#
# error_page 404 /404.html;
# location = /40x.html {
# }
#
# error_page 500 502 503 504 /50x.html;
# location = /50x.html {
# }
...
...
Sau khi hoàn tất, bạn lưu file và thoát khỏi trình chỉnh sửa. Để đảm bảo rằng không có vấn đề hay sai sót nào xảy ra, bạn cần kiểm tra cấu hình với lệnh sau:
sudo nginx -t
Nếu như mọi thứ đều đang hoạt động đúng cách, kết quả hiển thị sẽ như sau:
Output
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Còn trong trường hợp nhận thấy sự tồn tại của bất cứ lỗi nào, bạn hãy nhanh chóng sửa chúng và kiểm tra cấu hình lại một lần nữa.
Ngoài ra, để áp dụng các thay đổi với file cấu hình đang hoạt động, bạn cần khởi động lại Nginx:
sudo systemctl restart nginx
Trước khi khởi động lại Ghost, bạn cần tạo một tài khoản user mới theo hướng dẫn của bước 4.
Bước 4: Chạy Ghost với tư cách user riêng
Để đảm bảo an toàn và cải thiện tính bảo mật, bạn cần chạy Ghost với một tài khoản người dùng riêng biệt. Tài khoản này chỉ cho phép người dùng truy cập vào thư mục /var/www/ghost
và thư mục chính. Như vậy, bạn có thể hạn chế tối đa thiệt hại có thể xảy ra đối với hệ thống nếu như Ghost bị xâm phạm.
Để tạo người dùng mới, bạn nhập lệnh sau:
sudo adduser --shell /bin/bash ghost
Tiếp theo, bạn cần đặt người dùng mới làm chủ sở hữu của thư mục /var/www/ghost
:
sudo chown -R ghost:ghost /var/www/ghost/
Để đảm bảo rằng người dùng mới này có thể chạy Ghost, bạn tiến hành đăng nhập với tư cách người dùng ghost
:
sudo su - ghost
Bây giờ, bạn đã có thể bắt đầu chạy Ghost với tài khoản người dùng này:
cd /var/www/ghost
npm start --production
Bạn có thể truy cập lại blog của mình và lúc này, Nginx sẽ chuyển tiếp các yêu cầu tới Ghost.
Xem thêm: Hướng dẫn cài đặt NodeJS trên CentOS 7
Bước 5: Chạy Ghost như một dịch vụ hệ thống
Sau khi hoàn thành các thao tác trên, Ghost hiện đang chạy trong cửa sổ terminal. Tuy nhiên, chỉ cần bạn đăng xuất khỏi Ghost, blog sẽ ngừng hoạt động. Khi đó, bạn cần để Ghost chạy ở nền và đảm bảo rằng nó sẽ khởi động cùng với hệ thống.
Để làm được điều trên, bạn cần tạo một file systemd
để mô tả cách systemd
quản lý Ghost. Hãy dừng Ghost bằng cách bấm CTRL+C
và bấm CTRL+D
để đăng xuất khỏi tài khoản người dùng ghost
. Tiếp theo, bạn cần tạo một file mới để chứa định nghĩa của file systemd
.
sudo vi /etc/systemd/system/ghost.service
Sau đó, bạn thêm cấu hình bên dưới vào file để xác định tên dịch vụ, group và user cho dịch vụ cũng như những thông tin về cách mà dịch vụ sẽ bắt đầu:
/etc/systemd/system/ghost.service
[Unit]
Description=Ghost
After=network.target
[Service]
Type=simple
WorkingDirectory=/var/www/ghost
User=ghost
Group=ghost
ExecStart=/usr/bin/npm start --production
ExecStop=/usr/bin/npm stop --production
Restart=always
SyslogIdentifier=Ghost
[Install]
WantedBy=multi-user.target
Bây giờ, bạn chỉ cần lưu file, thoát khỏi trình chỉnh sửa để tiến hành kích hoạt và bắt đầu dịch vụ với những câu lệnh sau:
sudo systemctl enable ghost.service
sudo sytemctl start ghost.service
Cuối cùng, bạn truy cập lại vào http://your_domain_or_ip_address
và bây giờ bạn sẽ thấy được blog của mình.
Với hơn 10 năm kinh nghiệm trong lĩnh vực cung cấp giải pháp lưu trữ VPS, Vietnix đã ghi dấu ấn trong lòng hơn 50.000 khách hàng cá nhân, doanh nghiệp với những cái tên nổi bật như GTV, Vietnamworks, SEOSONA, SAGO Media,… với hơn 100.000 dịch vụ đã được kích hoạt. Đáng tự hào hơn, Vietnix đã nhận được giải thưởng Thương hiệu Việt Nam xuất sắc 2022, khẳng định vị thế của mình trên thị trường.
Các giải pháp lưu trữ của Vietnix đã được khách hàng đánh giá cao và tin tưởng sử dụng. Tính đến hiện tại, 97% khách hàng đã sử dụng dịch vụ của Vietnix sẽ giới thiệu dịch vụ đến người khác sau khi sử dụng. Nếu bạn đang có ý định phát triển kinh doanh trên internet, hãy để Vietnix đồng hành cùng bạn.
Mọi vấn đề thắc mắc cần tư vấn, quý khách vui lòng liên hệ:
- Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh.
- Hotline: 1800 1093.
- Email: sales@vietnix.com.vn.
Lời kết
Như vậy, bài viết trên đã hướng dẫn bạn cách cài đặt và cấu hình Ghost trên CentOS 7 một cách dễ dàng và nhanh chóng. Ngoài ra, đừng quên để lại comment bên dưới nếu bạn gặp bất cứ khó khăn hay cần hỗ trợ trong quá trình thực hiện theo hướng dẫn nhé.