18/09/2018, 16:27

Làm thế nào để cài đặt và cấu hình Ghost trên CentOS 7

Giới thiệu Ma là một nền tảng blog mã nguồn mở nhẹ, dễ sử dụng. Ghost là hoàn toàn tùy biến, với nhiều chủ đề có sẵn. Trong hướng dẫn này, bạn sẽ thiết lập Ghost trên CentOS 7. Bạn cũng sẽ cấu hình Nginx cho các yêu cầu proxy tới Ghost, và giữ cho Ghost chạy ẩn dưới dạng một dịch vụ hệ thống. ...

Giới thiệu

Ma là một nền tảng blog mã nguồn mở nhẹ, dễ sử dụng. Ghost là hoàn toàn tùy biến, với nhiều chủ đề có sẵn.

Trong hướng dẫn này, bạn sẽ thiết lập Ghost trên CentOS 7. Bạn cũng sẽ cấu hình Nginx cho các yêu cầu proxy tới Ghost, và giữ cho Ghost chạy ẩn dưới dạng một dịch vụ hệ thống.

Điều kiện tiên quyết

Để hoàn thành hướng dẫn này, bạn sẽ cần:

  • Một máy chủ CentOS 7 1GB được thiết lập bằng cách làm theo Thiết lập máy chủ ban đầu với hướng dẫn CentOS 7, bao gồm người dùng không phải root sudo.
  • Node.js được cài đặt bằng cách sử dụng phương thức lưu trữ EPEL được giải thích trong hướng dẫn: Làm thế nào để cài đặt Node.js trên một máy chủ CentOS 7.
  • Nginx được cài đặt trên máy chủ của bạn, như được hiển thị trong Làm thế nào để cài đặt Nginx trên CentOS 7.

Bước 1 - Cài đặt Ghost

Đầu tiên, chúng ta cần cài đặt Ghost. Chúng tôi sẽ đặt Ghost vào /var/www/ghost thư mục, là vị trí cài đặt được đề xuất.

Tải xuống phiên bản Ghost mới nhất từ ​​kho lưu trữ GitHub của Ghost bằng cách sử dụng wget:

wget https://ghost.org/zip/ghost-latest.zip

Để giải nén tệp lưu trữ, trước tiên hãy cài đặt unzip chương trình với trình quản lý gói. Nó luôn luôn là một ý tưởng tốt để đảm bảo rằng hệ thống là up-to-date trước khi cài đặt một chương trình mới, do đó, cập nhật các gói và cài đặt unzip với các lệnh sau:

sudo yum update -y

sudo yum install unzip -y

Các -y gắn cờ trong các lệnh trước cập nhật và cài đặt gói tự động mà không yêu cầu xác nhận từ người dùng.

Một lần unzip được cài đặt, giải nén gói đã tải xuống /var/www/ghost danh mục. Đầu tiên, tạo /var/www thư mục, sau đó giải nén tệp:

sudo mkdir /var/www

sudo unzip -d /var/www/ghost ghost-latest.zip

Chuyển sang /var/www/ghost/ danh mục:

cd /var/www/ghost/

Sau đó cài đặt các phụ thuộc Ghost, nhưng chỉ những phụ thuộc cần thiết cho sản xuất. Điều này bỏ qua bất kỳ sự phụ thuộc nào chỉ cần thiết cho những người phát triển Ghost.

sudo npm install --production

Ghost được cài đặt khi quá trình này hoàn tất, nhưng chúng ta cần thiết lập Ghost trước khi chúng ta có thể bắt đầu nó.

Bước 2 - Cấu hình Ghost

Ghost sử dụng tệp cấu hình có tại /var/www/ghost/config.js. Tệp này không tồn tại trong hộp, nhưng cài đặt Ghost bao gồm tệp config.example.js, chúng tôi sẽ sử dụng như điểm khởi đầu.

Sao chép tệp cấu hình mẫu vào /var/www/ghost/config.js. Chúng tôi sẽ sao chép tệp thay vì di chuyển tệp để chúng tôi có bản sao của tệp cấu hình ban đầu trong trường hợp chúng tôi cần hoàn nguyên các thay đổi của bạn.

sudo cp config.example.js config.js

Mở tệp để chỉnh sửa:

sudo vi config.js

Chúng ta phải thay đổi URL mà Ghost sử dụng. Nếu không, các liên kết trên blog sẽ đưa khách truy cập đến my-ghost-blog.com. Thay đổi giá trị của url cho tên miền của bạn hoặc địa chỉ IP của máy chủ nếu bạn không muốn sử dụng miền ngay bây giờ.

/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: {},
...

Các url giá trị phải ở dạng URL, như http://example.com hoặc là http://11.11.11.11. Nếu giá trị này không được định dạng đúng, Ghost sẽ không bắt đầu.

Ghost có thể hoạt động mà không cần cài đặt thư; chúng chỉ cần thiết nếu bạn cần hỗ trợ khôi phục mật khẩu cho người dùng Ghost. Chúng tôi sẽ bỏ qua việc cấu hình cài đặt này trong hướng dẫn này.

Bạn có thể tùy chỉnh Ghost thêm bằng cách làm theo các chi tiết cấu hình tại trang web chính thức.

Lưu tệp và thoát khỏi trình chỉnh sửa.

Trong khi vẫn còn trong /var/www/ghost thư mục, bắt đầu Ghost với lệnh sau:

sudo npm start --production

Đầu ra phải tương tự 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

Ghost đang lắng nghe trên cổng 2368và không nghe trên giao diện mạng công cộng, vì vậy bạn sẽ không thể truy cập trực tiếp vào giao diện đó. Hãy thiết lập Nginx trước mặt Ghost.

Bước 3 - Cấu hình Nginx để Proxy yêu cầu Ghost

Bước tiếp theo là thiết lập Nginx để phục vụ blog Ghost của chúng tôi. Điều này sẽ cho phép kết nối trên cổng 80 để kết nối thông qua cổng mà Ghost đang chạy, vì vậy mọi người có thể truy cập blog Ghost của bạn mà không cần thêm :2368 đến cuối địa chỉ. Nó cũng bổ sung thêm một lớp hướng dẫn và đặt bạn lên để mở rộng blog của bạn nếu nó phát triển.

Nếu Ghost vẫn đang chạy trong terminal của bạn, nhấn CTRL+C để tắt trường hợp Ghost trước khi bạn tiếp tục.

Bây giờ hãy cấu hình Nginx. Thay đổi thành /etc/nginx thư mục đầu tiên:

cd /etc/nginx/

Nếu bạn đã cài đặt Nginx từ kho lưu trữ CentOS EPEL như được trình bày trong hướng dẫn điều kiện tiên quyết, bạn sẽ không có sites-available và sites-enabled thư mục, được sử dụng để quản lý cấu hình trang web. Hãy tạo chúng:

sudo mkdir sites-available

sudo mkdir sites-enabled

Tiếp theo, tạo một tệp mới trong /etc/nginx/sites-available/ gọi là ghost:

sudo vi /etc/nginx/sites-available/ghost

Đặt cấu hình sau vào tệp và thay đổi your_domain_or_ip_address vào tên miền của bạn hoặc địa chỉ IP máy chủ của bạn nếu bạn không có 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;
    }
}

Cấu hình cơ bản này gửi tất cả các yêu cầu cho máy chủ này đến blog Ghost đang chạy trên cổng 2368và nó đặt tiêu đề HTTP thích hợp để khi bạn xem nhật ký Ghost, bạn sẽ thấy địa chỉ IP ban đầu của khách truy cập. Bạn có thể tìm hiểu thêm về cấu hình này trong Tìm hiểu về Proxy Nginx HTTP, cân bằng tải, đệm và lưu vào bộ nhớ đệm.

Lưu tệp, thoát trình chỉnh sửa và bật cấu hình này bằng cách tạo liên kết tượng trưng cho tệp này trong /etc/nginx/sites-enabled danh mục:

sudo ln -s /etc/nginx/sites-available/ghost /etc/nginx/sites-enabled/ghost

Nginx sẽ không sử dụng cấu hình mới này cho đến khi chúng tôi sửa đổi tệp cấu hình Nginx mặc định và yêu cầu nó bao gồm các tệp cấu hình trong sites-enabled thư mục. Ngoài ra, chúng tôi phải vô hiệu hóa trang web mặc định. Mở ra nginx.conf trong trình chỉnh sửa của bạn:

sudo vi nginx.conf

Bao gồm dòng sau bên trong http chặn để bao gồm các tệp cấu hình trong sites-enabled thư mục:

/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/*;

Sau đó, hoàn toàn bình luận ra server khối tìm thấy bên trong http khối:

/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 {
#       }
...
...

Lưu tệp và thoát khỏi trình chỉnh sửa. Kiểm tra cấu hình để đảm bảo không có vấn đề gì:

sudo nginx -t

Bạn sẽ thấy đầu ra sau nếu mọi thứ đều chính xác:

Outputnginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Nếu bạn thấy bất kỳ lỗi nào, hãy khắc phục và thử lại cấu hình.

Với tệp cấu hình làm việc, khởi động lại Nginx để áp dụng các thay đổi:

sudo systemctl restart nginx

Trước khi chúng ta bắt đầu lại Ghost, hãy tạo một tài khoản người dùng mới để chạy Ghost.

Bước 4 - Chạy Ghost với tư cách là người dùng riêng biệt

Để cải thiện bảo mật, chúng tôi sẽ chạy Ghost dưới một tài khoản người dùng riêng biệt. Người dùng này sẽ chỉ có quyền truy cập vào /var/www/ghost và thư mục chính của nó. Bằng cách này, nếu Ghost bị xâm phạm, bạn sẽ giảm thiểu thiệt hại tiềm năng cho hệ thống của mình.

Tạo một cái mới ghost người dùng với lệnh sau:

sudo adduser --shell /bin/bash ghost

Sau đó, làm cho người dùng mới này trở thành chủ sở hữu của /var/www/ghost danh mục:

sudo chown -R ghost:ghost /var/www/ghost/

Bây giờ hãy chắc chắn rằng người dùng này có thể chạy Ghost. Đăng nhập với tư cách là ghost người dùng:

sudo su - ghost

Bây giờ bắt đầu Ghost theo người dùng này và đảm bảo nó chạy:

cd /var/www/ghost

npm start --production

Bạn sẽ có thể truy cập blog của bạn tại http://your_domain_or_ip_address. Nginx sẽ gửi yêu cầu tới bản Ghost của bạn.

Mọi thứ đang hoạt động tốt, nhưng hãy chắc chắn rằng Ghost tiếp tục chạy tốt trong tương lai.

Bước 5 - Chạy Ghost làm Dịch vụ Hệ thống

Hiện tại, Ghost đang chạy trong nhà ga của chúng tôi. Nếu chúng tôi đăng xuất, blog của chúng tôi sẽ tắt. Hãy để Ghost chạy ẩn và đảm bảo nó khởi động lại khi hệ thống khởi động lại. Để làm điều này, chúng tôi sẽ tạo systemd tệp đơn vị chỉ định cách thức systemd nên quản lý Ghost. nhấn CTRL+C để ngăn chặn Ghost, và đăng xuất khỏi ghost tài khoản người dùng bằng cách nhấn CTRL+D.

Tạo một tệp mới để giữ định nghĩa của systemd tệp đơn vị:

sudo vi /etc/systemd/system/ghost.service

Thêm cấu hình sau vào tệp, định nghĩa tên dịch vụ, nhóm và người dùng cho dịch vụ và thông tin về cách 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

Nếu bạn không quen thuộc với systemd các tệp đơn vị, hãy xem hướng dẫn Hiểu các đơn vị Systemd và các tệp đơn vị sẽ giúp bạn tăng tốc nhanh chóng.

Lưu tệp và thoát khỏi trình chỉnh sửa. Sau đó kích hoạt và khởi động dịch vụ:

sudo systemctl enable ghost.service

sudo sytemctl start ghost.service

Một lần nữa, hãy truy cập http://your_domain_or_ip_address và bạn sẽ thấy blog của mình.

Phần kết luận

Trong hướng dẫn này, bạn đã cài đặt Ghost, cấu hình Nginx cho các yêu cầu proxy tới Ghost, và đảm bảo rằng Ghost chạy như một dịch vụ hệ thống. Tuy nhiên, có rất nhiều điều bạn có thể làm với Ghost. Hãy xem các hướng dẫn này để tìm hiểu thêm về cách sử dụng blog mới của bạn:

  • Làm thế nào để cấu hình và bảo trì Ghost từ dòng lệnh.
  • Cách thay đổi chủ đề và điều chỉnh cài đặt trong Ghost.
0