Cách triển khai Ghost CMS trên Rocky Linux 9

theanh

Administrator
Nhân viên
Ghost là một nền tảng blog mã nguồn mở giúp bạn tạo blog trông chuyên nghiệp. Nó được ra mắt vào năm 2013 như một giải pháp thay thế cho WordPress vì WordPress trở nên quá phức tạp. Nó được viết bằng JavaScript và được hỗ trợ bởi thư viện Node.js.

Hướng dẫn này sẽ khám phá cách cài đặt Ghost CMS bằng Nginx và MySQL trên máy chủ chạy Rocky Linux 9. Chúng tôi sẽ sử dụng máy chủ Nginx để lưu trữ blog và chứng chỉ SSL Let's Encrypt để bảo mật cài đặt của chúng tôi.

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


  • Máy chủ chạy Rocky Linux 9.

  • Người dùng không phải root có quyền sudo.

  • Tên miền đủ điều kiện (FQDN) trỏ đến máy chủ của bạn. Đối với mục đích của chúng tôi, chúng tôi sẽ sử dụng ghost.example.com làm tên miền.

  • Đảm bảo mọi thứ đã được cập nhật.
Mã:
$ sudo dnf update
[*]
Cài đặt các gói tiện ích cơ bản. Một số trong số chúng có thể đã được cài đặt.
Mã:
$ sudo dnf install wget curl nano unzip yum-utils -y

Bước 1 - Cấu hình Tường lửa​

Bước đầu tiên là cấu hình tường lửa. Rocky Linux sử dụng Tường lửa Firewalld. Kiểm tra trạng thái của tường lửa.
Mã:
$ sudo firewall-cmd --state
running
Tường lửa hoạt động với các vùng khác nhau và vùng công cộng là vùng mặc định mà chúng ta sẽ sử dụng. Liệt kê tất cả các dịch vụ và cổng đang hoạt động trên tường lửa.
Mã:
$ sudo firewall-cmd --permanent --list-services
Nó sẽ hiển thị đầu ra sau.
Mã:
cockpit dhcpv6-client ssh
Wiki.js cần các cổng HTTP và HTTPS để hoạt động. Mở chúng ra.
Mã:
$ sudo firewall-cmd --add-service=http --permanent
$ sudo firewall-cmd --add-service=https --permanent
Tải lại tường lửa để áp dụng thay đổi.
Mã:
$ sudo firewall-cmd --reload

Bước 2 - Cài đặt Nginx​

Rocky Linux 9 đi kèm với phiên bản Nginx cũ hơn. Bạn cần tải xuống kho lưu trữ Nginx chính thức để cài đặt phiên bản mới nhất.

Tạo và mở tệp /etc/yum.repos.d/nginx.repo để tạo kho lưu trữ Nginx chính thức.
Mã:
$ sudo nano /etc/yum.repos.d/nginx.repo
Dán mã sau vào nó.
Mã:
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Cài đặt máy chủ Nginx.
Mã:
$ sudo dnf install nginx -y
Xác minh cài đặt.
Mã:
$ nginx -v
nginx version: nginx/1.22.1
Kích hoạt và khởi động máy chủ Nginx.
Mã:
$ sudo systemctl enable nginx --now
Kiểm tra trạng thái của máy chủ.
Mã:
$ sudo systemctl status nginx
? nginx.service - nginx - high performance web server Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled) Active: active (running) since Tue 2022-10-25 08:27:47 UTC; 2s ago Docs: http://nginx.org/en/docs/ Process: 1650 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS) Main PID: 1651 (nginx) Tasks: 2 (limit: 5912) Memory: 1.9M CPU: 7ms CGroup: /system.slice/nginx.service ??1651 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf" ??1652 "nginx: worker process"
Oct 25 08:27:47 ghost.example.com systemd[1]: Starting nginx - high performance web server...

Bước 3 - Cài đặt Node.js​

Ghost Installer cần Nodejs để hoạt động. Chạy các lệnh sau để cài đặt Node 16.
Mã:
$ curl -fsSL https://rpm.nodesource.com/setup_16.x | sudo bash -
Cài đặt Node.
Mã:
$ sudo dnf install -y nodejs
Xác minh Node cài đặt.
Mã:
$ node --version
v16.18.0
Vào thời điểm viết hướng dẫn này, Node 18 đã ra mắt và là phiên bản LTS. Ghost vẫn chưa thêm hỗ trợ cho phiên bản này. Hãy kiểm tra Tài liệu Ghost về các phiên bản Node để biết phiên bản Node mới nhất được hỗ trợ. Khi Ghost thêm hỗ trợ cho Node 18, hãy cài đặt Node 18 bằng các lệnh sau.
Mã:
$ curl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash -
$ sudo dnf install -y nodejs

Bước 4 - Cài đặt MySQL​

Rocky Linux 9 đi kèm với phiên bản MySQL mới nhất. Bạn có thể cài đặt bằng một lệnh duy nhất.
Mã:
$ sudo dnf install mysql-server
Kiểm tra phiên bản MySQL.
Mã:
$ mysql --version
mysql Ver 8.0.30 for Linux on x86_64 (Source distribution)
Bật và khởi động MySQL dịch vụ.
Mã:
$ sudo systemctl enable mysqld --now
Kiểm tra trạng thái dịch vụ.
Mã:
$ sudo systemctl status mysqld
? mysqld.service - MySQL 8.0 database server Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled) Active: active (running) since Tue 2022-10-25 09:00:26 UTC; 3s ago Process: 2920 ExecStartPre=/usr/libexec/mysql-check-socket (code=exited, status=0/SUCCESS) Process: 2942 ExecStartPre=/usr/libexec/mysql-prepare-db-dir mysqld.service (code=exited, status=0/SUCCESS) Main PID: 3021 (mysqld) Status: "Server is operational" Tasks: 39 (limit: 5912) Memory: 404.4M CPU: 4.686s CGroup: /system.slice/mysqld.service ??3021 /usr/libexec/mysqld --basedir=/usr
Oct 25 09:00:18 ghost.example.com systemd[1]: Starting MySQL 8.0 database server...
Oct 25 09:00:18 ghost.example.com mysql-prepare-db-dir[2942]: Initializing MySQL database
Oct 25 09:00:26 ghost.example.com systemd[1]: Started MySQL 8.0 database server.
Theo mặc định, bạn có thể đăng nhập vào shell MySQL bằng xác thực Unix. Nhưng bạn không thể chạy trình hướng dẫn thiết lập bảo mật. Do đó, bước sau là cần thiết cho MySQL phiên bản 8.0.28 trở lên. Nhập MySQL Shell.
Mã:
$ sudo mysql
Chạy lệnh sau để đặt mật khẩu cho người dùng root của bạn. Đảm bảo mật khẩu có sự kết hợp giữa số, chữ hoa, chữ thường và ký tự đặc biệt.
Mã:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourPassword12!';
Thoát khỏi shell. Lưu ý ở bước này là bạn không thể đăng nhập vào shell MySQL bằng xác thực Unix nữa.
Mã:
mysql> exit
Chạy tập lệnh cài đặt bảo mật MySQL.
Mã:
$ sudo mysql_secure_installation
Bạn sẽ được yêu cầu cài đặt Thành phần Xác thực mật khẩu. Thành phần này kiểm tra độ mạnh của mật khẩu được sử dụng trong MySQL. Nhấn Y để cài đặt.
Mã:
Securing the MySQL server deployment.
Connecting to MySQL using a blank password.
VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?
Press y|Y for Yes, any other key for No: Y
Tiếp theo, bạn sẽ được yêu cầu thiết lập mức độ chính sách xác thực mật khẩu. Chọn 2 vì đây là mức mạnh nhất. Sau đó, bạn sẽ được yêu cầu tạo mật khẩu gốc. Nhập mật khẩu với các yêu cầu được đưa ra. Và khi được hỏi bạn có muốn tiếp tục với mật khẩu không, hãy nhấn Y để tiếp tục.
Mã:
There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2
Please set the password for root here.
New password:
Re-enter new password:
Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y
Cuối cùng, hãy nhấn Y để xóa người dùng ẩn danh, không cho phép đăng nhập root từ xa, xóa cơ sở dữ liệu thử nghiệm và tải lại bảng đặc quyền.
Mã:
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Success.
Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Success.
By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y - Dropping test database...
Success. - Removing privileges on test database...
Success.
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
Success.
All done!
Như vậy là hoàn tất quá trình cài đặt và bảo mật MySQL.

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

Quá trình cài đặt Ghost sẽ bao gồm ba thành phần - Công cụ dòng lệnh Ghost-CLI dùng để cài đặt và quản lý các bản cập nhật cho blog Ghost và chính gói blog.

Cài đặt Ghost-CLI​

Chạy lệnh sau để cài đặt công cụ Ghost-CLI. Bỏ qua mọi cảnh báo bạn nhận được trong quá trình này.
Mã:
$ sudo npm install ghost-cli@latest -g

Chuẩn bị thư mục Ghost​

Tạo thư mục gốc Ghost.
Mã:
$ sudo mkdir -p /var/www/html/ghost
Đặt quyền sở hữu thư mục thành quyền sở hữu hiện tại người dùng.
Mã:
$ sudo chown $USER:$USER /var/www/html/ghost
Đặt quyền thư mục chính xác.
Mã:
$ sudo chmod 755 /var/www/html/ghost
Chuyển sang Ghost thư mục.
Mã:
$ cd /var/www/html/ghost

Cài đặt Ghost​

Cài đặt Ghost là một quy trình lệnh duy nhất.
Mã:
$ ghost install
Trong quá trình cài đặt, công cụ CLI sẽ hỏi một số câu hỏi để cấu hình blog.
  • Vào thời điểm viết hướng dẫn này, Ghost-CLI không hỗ trợ bất kỳ Hệ điều hành ngoài Ubuntu. Nó sẽ hỏi bạn có muốn tiếp tục cài đặt không. Nhấn Y để tiếp tục.
  • URL blog: Nhập URL blog đầy đủ của bạn cùng với giao thức https. (https://ghost.example.com)
  • Tên máy chủ MySQL: Nhấn Enter để sử dụng giá trị mặc định của localhost vì bản cài đặt Ghost và MySQL của chúng tôi nằm trên cùng một máy chủ.
  • Tên người dùng MySQL: Nhập root làm tên người dùng MySQL của bạn.
  • Mật khẩu MySQL: Nhập mật khẩu gốc đã tạo trước đó.
  • Tên cơ sở dữ liệu Ghost: Đặt tên cho cơ sở dữ liệu Ghost của bạn. (ghostdb)
  • Mật khẩu sudo: Nhập mật khẩu sudo của hệ thống để thực hiện các lệnh nâng cao.
  • Thiết lập người dùng MySQL ghost?: Trình cài đặt sẽ hỏi bạn có muốn tạo người dùng MySQL riêng cho Ghost không. Nhấn Y để tiếp tục.
  • Thiết lập Nginx?: Thông thường, Ghost-CLI phát hiện cài đặt Nginx của bạn và tự động định cấu hình cho blog của bạn. Nhưng hiện tại, nó không thể phát hiện cài đặt Nginx của chúng tôi. Do đó, trình cài đặt sẽ tự động bỏ qua bước này. Chúng ta sẽ cấu hình Nginx theo cách thủ công.
  • Thiết lập SSL?: Vì bỏ qua cấu hình Nginx nên công cụ CLI cũng sẽ bỏ qua việc thiết lập SSL.
  • Thiết lập systemd?: Ghost sẽ hỏi bạn có muốn thiết lập dịch vụ hệ thống cho Ghost không. Nhấn Y để tiếp tục.
  • Khởi động Ghost?: Nhấn Y để bắt đầu cài đặt Ghost. Dịch vụ sẽ khởi động nhưng chúng ta sẽ cần cấu hình Nginx và SSL để nó hoạt động.

Bước 6 - Cài đặt SSL​

Trước khi tiếp tục, chúng ta cần cài đặt công cụ Certbot và chứng chỉ SSL cho tên miền của mình.

Để cài đặt Certbot, chúng ta sẽ sử dụng trình cài đặt gói Snapd. Snapd luôn có phiên bản ổn định mới nhất của Certbot, bạn nên sử dụng phiên bản này.

Công cụ Snapd yêu cầu kho lưu trữ Epel để hoạt động.
Mã:
$ sudo dnf install epel-release -y
Chúng ta sẽ sử dụng Snapd để cài đặt Certbot. Cài đặt Snapd.
Mã:
$ sudo dnf install snapd -y
Kích hoạt và khởi động dịch vụ Snap.
Mã:
$ sudo systemctl enable snapd.socket --now
Tạo các liên kết cần thiết cho Snapd tới làm việc.
Mã:
$ sudo ln -s /var/lib/snapd/snap /snap
$ echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh
Đảm bảo rằng phiên bản snapd của bạn được cập nhật.
Mã:
$ sudo snap install core
$ sudo snap refresh core
Cài đặt Certbot.
Mã:
$ sudo snap install --classic certbot
Sử dụng lệnh sau để đảm bảo lệnh Certbot có thể chạy được bằng cách tạo liên kết tượng trưng đến /usr/bin thư mục.
Mã:
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Tạo chứng chỉ SSL.
Mã:
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [emailprotected] -d ghost.example.com
Lệnh trên sẽ tải xuống chứng chỉ vào /etc/letsencrypt/live/ghost.example.com thư mục trên máy chủ của bạn.

Tạo chứng chỉ nhóm Diffie-Hellman.
Mã:
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Thực hiện chạy thử quy trình để kiểm tra xem quá trình gia hạn SSL có hoạt động tốt không.
Mã:
$ sudo certbot renew --dry-run
Nếu không thấy lỗi nào, bạn đã hoàn tất. Chứng chỉ của bạn sẽ tự động gia hạn.

Bước 7 - Cấu hình Nginx​

Tạo và mở tệp /etc/nginx/conf.d/ghost.conf để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/conf.d/ghost.conf
Dán mã sau vào Tệp ghost.conf. Thay thế tất cả các trường hợp của ghost.example.com bằng tên miền của bạn.
Mã:
## enforce HTTPS
server { listen 80; listen [::]:80; server_name ghost.example.com; return 301 https://$server_name$request_uri;
}
server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name ghost.example.com; access_log /var/log/nginx/ghost.access.log; error_log /var/log/nginx/ghost.error.log; client_max_body_size 20m; http2_push_preload on; # Enable HTTP/2 Server Push ssl_certificate /etc/letsencrypt/live/ghost.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/ghost.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/ghost.example.com/chain.pem; ssl_session_timeout 1d; # Enable TLS versions (TLSv1.3 is required upcoming HTTP/3 QUIC). ssl_protocols TLSv1.2 TLSv1.3; # Enable TLSv1.3's 0-RTT. Use $ssl_early_data when reverse proxying to # prevent replay attacks. # # @see: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data ssl_early_data on; ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384'; ssl_prefer_server_ciphers on; ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1; ssl_session_cache shared:SSL:50m; ssl_session_tickets off; # OCSP Stapling --- # fetch OCSP records from URL in ssl_certificate and cache them ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem; add_header X-Early-Data $tls1_3_early_data; location / { proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Proto https; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://localhost:2368; }
}
# This block is useful for debugging TLS v1.3. Please feel free to remove this
# and use the `$ssl_early_data` variable exposed by NGINX directly should you
# wish to do so.
map $ssl_early_data $tls1_3_early_data { "~." $ssl_early_data; default "";
}
Cấu hình trên sẽ chuyển hướng tất cả các yêu cầu HTTP sang HTTPS và sẽ đóng vai trò là proxy cho dịch vụ Ghost để phục vụ nó thông qua tên miền của bạn.

Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Mở tệp /etc/nginx/nginx.conf để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/nginx.conf
Thêm dòng sau vào trước dòng include /etc/nginx/conf.d/*.conf;.
Mã:
server_names_hash_bucket_size 64;
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Xác minh Nginx của bạn cấu hình.
Mã:
$ sudo nginx -t
Nếu bạn không thấy lỗi nào, điều đó có nghĩa là bạn có thể tiếp tục. Tải lại máy chủ Nginx.
Mã:
$ sudo systemctl reload nginx

Bước 8 - Cấu hình SELinux​

Cho phép Nginx kết nối với mạng.
Mã:
$ sudo setsebool -P httpd_can_network_connect 1

Bước 9 - Chạy trang web​

Bây giờ, bạn có thể xác minh cài đặt của bạn bằng cách mở https://ghost.example.com trong trình duyệt web của bạn. Bạn sẽ nhận được trang sau cho biết quá trình cài đặt thành công.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22583%22%3E%3C/svg%3E

Bước 10 - Hoàn tất thiết lập​

Để hoàn tất quá trình thiết lập blog Ghost, hãy truy cập https://ghost.example.com/ghost trong trình duyệt của bạn. Phần /ghost bổ sung ở cuối tên miền blog của bạn sẽ chuyển hướng bạn đến Bảng điều khiển quản trị của Ghost hoặc trong trường hợp này là thiết lập vì đây là lần đầu tiên bạn truy cập vào bảng điều khiển này.

Bạn sẽ được yêu cầu tạo tài khoản Quản trị viên và chọn tiêu đề blog.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22576%22%20height=%22750%22%3E%3C/svg%3E


Nhập thông tin chi tiết của bạn và nhấp vào Nhấp vào nút Tạo tài khoản & bắt đầu xuất bản để tiếp tục.

Tiếp theo, bạn sẽ được đưa đến màn hình sau, tại đó bạn được cung cấp các tùy chọn như viết bài đăng đầu tiên, tùy chỉnh trang web của mình và nhập thành viên.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22580%22%3E%3C/svg%3E


Chúng ta sẽ chọn Quản trị viên Explore Ghost để khám phá và đi trực tiếp đến bảng điều khiển. Khi kết thúc quá trình thiết lập, bạn sẽ được chào đón bằng bảng điều khiển Quản trị của Ghost.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22597%22%3E%3C/svg%3E


Nếu bạn muốn chuyển sang chế độ tối, bạn có thể thực hiện bằng cách nhấp vào công tắc chuyển đổi bên cạnh nút bánh răng cài đặt ở cuối trang cài đặt.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22177%22%20height=%2273%22%3E%3C/svg%3E


Chuyển sang trang Bài đăng và bạn sẽ thấy bài đăng mặc định. Bạn có thể hủy đăng hoặc xóa và bắt đầu đăng.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22568%22%3E%3C/svg%3E
)

Bước 11 - Cấu hình Mailer​

Ghost không chỉ hoạt động như một nền tảng viết blog mà còn là một trình quản lý bản tin. Đối với các hoạt động hàng ngày, bạn có thể sử dụng bất kỳ dịch vụ thư giao dịch nào để làm việc với Ghost để gửi thư. Nhưng nếu bạn muốn gửi bản tin qua Ghost, thì Mailgun là trình gửi thư hàng loạt chính thức duy nhất được hỗ trợ. Bạn cũng có thể sử dụng một dịch vụ bản tin khác nhưng để làm được điều đó, bạn sẽ cần sử dụng tính năng tích hợp Zapier của Ghost.

Trước tiên, chúng ta hãy cấu hình dịch vụ SMTP cho email giao dịch. Để thực hiện việc này, hãy mở tệp /var/www/html/ghost/config.production.json để chỉnh sửa.
Mã:
$ nano /var/www/html/ghost/config.production.json
Tìm mục sau dòng.
Mã:
"mail": { "transport": "Direct" },
Thay thế chúng bằng mã sau.
Mã:
"mail": { "from": "'Acme Support' [emailprotected]", "transport": "SMTP", "options": { "host": "YOUR-SES-SERVER-NAME", "port": 465, "service": "SES", "auth": { "user": "YOUR-SES-SMTP-ACCESS-KEY-ID", "pass": "YOUR-SES-SMTP-SECRET-ACCESS-KEY" } }
},
Ở đây chúng tôi sử dụng dịch vụ Amazon SES Mail vì nó rất rẻ và miễn phí trọn đời nếu bạn sử dụng dịch vụ EC2 của họ.

Nếu bạn muốn sử dụng dịch vụ bản tin của họ bằng Mailgun, hãy nhập mã sau thay vào đó.
Mã:
"mail": { "from": "'Acme Support' [emailprotected]", "transport": "SMTP", "options": { "service": "Mailgun", "host": "smtp.mailgun.org", "port": 587, "secure": true, "auth": { "user": "[emailprotected]", "pass": "1234567890" } }
},
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Sau khi hoàn tất, hãy khởi động lại ứng dụng Ghost để các thay đổi có hiệu lực.
Mã:
$ ghost restart
Để định cấu hình cài đặt bản tin, hãy truy cập Cài đặt >> Phần bản tin email.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22664%22%3E%3C/svg%3E


Nhấp vào liên kết Cấu hình Mailgun để mở rộng.

Điền Vùng Mailgun, tên miền và khóa API của bạn.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22672%22%20height=%22294%22%3E%3C/svg%3E


Nhấp vào nút Lưu ở góc trên bên phải để lưu cài đặt.

Để kiểm tra việc gửi bản tin, hãy mở bất kỳ bài đăng nào, mở cài đặt của bài đăng đó và nhấp vào tùy chọn Bản tin email. Tiếp theo, hãy gửi email thử nghiệm để kiểm tra xem nó có hoạt động không. Nếu bạn không gặp bất kỳ lỗi nào, điều đó có nghĩa là việc phân phối bản tin của bạn đang hoạt động.

Bước 12 - Cập nhật Ghost​

Có hai loại cập nhật Ghost - Cập nhật nhỏ và Cập nhật lớn.

Trước tiên, hãy sao lưu đầy đủ nếu bạn muốn chạy bản cập nhật nhỏ.
Mã:
$ cd /var/www/html/ghost
$ ghost backup
Chạy lệnh cập nhật để thực hiện cập nhật nhỏ cập nhật.
Mã:
$ ghost update
Để thực hiện bản cập nhật lớn, bạn nên làm theo hướng dẫn cập nhật chi tiết chính thức tại Ghost. Tùy thuộc vào phiên bản hiện tại của bạn và phiên bản chính mà bạn muốn cập nhật, các bước sẽ khác nhau.

Kết luận​

Đây là phần kết thúc hướng dẫn của chúng tôi về cách thiết lập Ghost CMS trên máy chủ Rocky Linux 9 của bạn bằng Nginx. Nếu bạn có bất kỳ câu hỏi hoặc phản hồi nào, hãy chia sẻ chúng trong phần bình luận bên dưới.
 
Back
Bên trên