Với giao diện quản trị đơn giản cùng khả năng tùy chỉnh nhiều chủ đề, Ghost là một trong những 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, mình sẽ hướng dẫn bạn cách cài đặt và cấu hình Ghost trên CentOS 7 để bạn có thể nhanh chóng sở hữu một blog cho riêng mình.
Những điểm chính
- Điều kiện cần đáp ứng: Để cài đặt và cấu hình Ghost trên CentOS 7, bạn cần một máy chủ CentOS, tài khoản user non-root có quyền sudo, cài đặt sẵn Node.js và Nginx.
- Các bước cài đặt: Bắt đầu từ việc cài đặt Ghost, cấu hình Ghost, cấu hình Nginx để chuyển tiếp (proxy) các yêu cầu đến Ghost, chạy Ghost với tư cách user riêng và chạy Ghost như một dịch vụ hệ thống.
- Biết đến dịch vụ VPS Vietnix ổn định, an toàn và chuyên nghiệp.
Đ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.
- Đã cài đặt Nginx trên CentOS 7 trên.
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 VPS AMD của Vietnix. Với cấu hình RAM tối thiểu 2GB và ổ cứng 40GB SSD, VPS AMD của Vietnix sẽ mang đến hiệu suất vượt trội cho blog Ghost của bạn. Bạn sẽ không còn phải lo lắng về tình trạng giật lag hay thời gian tải trang chậm chạp nữa. Đặc biệt, bạn sẽ có toàn quyền quản trị VPS, cho phép cài đặt bất kỳ phần mềm và tùy chỉnh cấu hình theo nhu cầu riêng của mình.
Các 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.
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.
Ổn định và an toàn với dịch vụ VPS chuyên nghiệp của Vietnix
Với 12 năm kinh nghiệm trong lĩnh vực lưu trữ, Vietnix mang đến dịch vụ VPS tốc độ cao, ổn định vượt trội và bảo mật tối ưu. Hệ thống cơ sở hạ tầng hiện đại, sử dụng 100% ổ cứng SSD NVMe và công nghệ ảo hóa tiên tiến đảm bảo hiệu suất tối đa cho mọi ứng dụng của bạn. Đội ngũ hỗ trợ kỹ thuật chuyên nghiệp 24/7 sẵn sàng giải đáp mọi thắc mắc và hỗ trợ bạn kịp thời. Bên cạnh đó, Vietnix cam kết mang đến giá cả cạnh tranh nhất thị trường, cùng nhiều chương trình ưu đãi hấp dẫn.
Thông tin 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.
- Website: https://vietnix.vn/.
Trên đây là hướng dẫn cách cài đặt và cấu hình Ghost trên CentOS 7 mà mình muốn chia sẻ tới bạn. Với khả năng tùy biến cao và cộng đồng hỗ trợ nhiệt tình, Ghost sẽ là công cụ đắc lực giúp bạn xây dựng và phát triển nội dung của mình một cách chuyên nghiệp và hiệu quả. Ngoài ra, bạn cũng có thể tham khảo thêm các bài viết dưới đây của mình để nâng cao kiến thức về CentOS 7:
Mọi người cũng xem:
Hướng dẫn cài đặt Eclipse Theia Cloud IDE Platform trên CentOS 7
Hướng dẫn sử dụng map module của Nginx trên CentOS 7
Hướng dẫn cách sử dụng Prometheus để quản lý trên CentOS 7
Cách triển khai Browser Caching với header Module của Nginx trên CentOS 7
Cách thêm log module vào Nginx trên CentOS 7 đơn giản