Cách tạo blog bằng Ghost và Nginx trên Ubuntu 14.04
Ghost là một nền tảng blog open-souce , nhẹ (~ 7,5MB) và rất dễ sử dụng. Ghost hoàn toàn có thể tùy chỉnh. Có rất nhiều chủ đề có sẵn cho Ghost trên Internet, miễn phí cũng như trả phí. Trong hướng dẫn này, ta sẽ đi qua các bước để cài đặt Ghost và chạy trên hệ thống Ubuntu 14.04 của bạn. Ta cũng sẽ cài đặt Nginx vào các cổng proxy và cài đặt forever
, một gói nút, để giữ cho Ghost chạy trong nền.
Yêu cầu
Không có yêu cầu kích thước tối thiểu cho một server để chạy Ghost. Cân nhắc xem blog của bạn sẽ nhận được bao nhiêu khách truy cập và lượng nội dung bạn định chia sẻ khi quyết định tạo Server ở kích thước nào. Hướng dẫn này đã được thử nghiệm trên DigitalOcean Server có kích thước nhỏ nhất chạy Ubuntu 14.04.
Trước khi bắt đầu, bạn cần những điều sau:
- Ubuntu 14.04 Server
- Tên domain đã đăng ký trỏ đến địa chỉ IP cho Server
- User không phải root có quyền sudo
Hướng dẫn này sẽ giúp bạn cài đặt domain trỏ đến Server.
Tất cả các lệnh trong hướng dẫn này phải được chạy với quyền user không phải root. Nếu cần có quyền truy cập root cho lệnh, nó sẽ được đặt trước sudo
. Cài đặt server ban đầu với Ubuntu 14.04 giải thích cách thêm user và cấp cho họ quyền truy cập sudo.
Bước 1 - Cài đặt Node.js và Npm
Bạn cần cập nhật index gói local của bạn và cài đặt các gói zip
và wget
. Ta sẽ sử dụng chúng sau trong hướng dẫn này.
- sudo apt-get update
- sudo apt-get install zip wget
Ghost yêu cầu Node.js v0.10.x (ổn định mới nhất). Các version không ổn định của Node, như v0.12.x, không được hỗ trợ. Node.js v0.10.36 và npm v2.5.0 được Ghost.org khuyến nghị.
Cài đặt Node.js bằng phương pháp PPA từ hướng dẫn này .
Khi bạn đã cài đặt Node.js, hãy kiểm tra version đã cài đặt bằng lệnh:
- node -v
Đầu ra phải giống như sau :
v0.10.38
Kiểm tra xem npm
đã được cài đặt chưa:
- npm -v
Nó sẽ xuất ra version đã cài đặt của npm nếu nó được cài đặt:
1.4.28
Nếu nó xuất ra lỗi không cài đặt được npm, hãy cài đặt nó bằng lệnh sau:
- sudo apt-get install npm
Cập nhật npm
lên version 2.5.0 bằng cách chạy lệnh sau:
- sudo npm install npm@2.5.0 -g
Kiểm tra version npm
đã cài đặt:
- npm -v
Đầu ra phải là:
2.5.0
Bước 2 - Cài đặt bản Ghost
Tiếp theo ta cần cài đặt Ghost. Ghost.org khuyên bạn nên cài đặt Ghost trong var/www/ghost
, vì vậy đó là nơi ta sẽ cài đặt nó.
Đầu tiên, ta sẽ tạo một folder /var/www/
và sau đó download version Ghost mới nhất từ kho GitHub của Ghost:
- sudo mkdir -p /var/www/
- cd /var/www/
- sudo wget https://ghost.org/zip/ghost-latest.zip
Bây giờ ta đã có được version Ghost mới nhất, ta phải extract nó. Ta cũng sẽ thay đổi folder của bạn thành /var/www/ghost/
:
- sudo unzip -d ghost ghost-latest.zip
- cd ghost/
Bây giờ ta có thể cài đặt các phụ thuộc Ghost và module nút (chỉ phụ thuộc production ):
- sudo npm install --production
Ghost được cài đặt khi quá trình này hoàn tất. Ta cần cài đặt Ghost trước khi có thể khởi động nó.
Bước 3 - Cài đặt Ghost
File cấu hình của Ghost phải được đặt tại /var/www/ghost/config.js
. Tuy nhiên, không có file nào như vậy được cài đặt bằng Ghost. Thay vào đó, cài đặt bao gồm config.example.js
.
Sao chép file cấu hình ví dụ vào vị trí thích hợp. Đảm bảo sao chép thay vì di chuyển để bạn có bản sao của file cấu hình ban đầu trong trường hợp bạn cần hoàn nguyên các thay đổi của bạn .
- sudo cp config.example.js config.js
Cài đặt URL và thư của bạn, nằm trong phần production
, là những vùng thông tin quan trọng cần sửa đổi. URL là cần thiết. Nếu không, các liên kết sẽ đưa bạn đến trang http://my-ghost-blog.com
mặc định. Ghost có thể hoạt động mà không cần cài đặt thư, nhưng bạn nên thêm chúng vào. Tại thời điểm viết bài này, Ghost chỉ yêu cầu mail hoạt động trong trường hợp user quên password account của họ, vì vậy việc không cấu hình mail sẽ không gây hại gì nhiều.
Mở file để chỉnh sửa:
- sudo nano config.js
Bạn phải thay đổi giá trị của url
thành bất kỳ domain nào của bạn (hoặc bạn có thể sử dụng địa chỉ IP của server trong trường hợp bạn không muốn sử dụng domain ngay bây giờ). Giá trị này phải ở dạng URL. Ví dụ: http://example.com/ hoặc http://45.55.76.126/ . Nếu giá trị này không được định dạng đúng, Ghost sẽ không bắt đầu.
Đồng thời thay đổi giá trị của host
trong phần server
thành 0.0.0.0
.
Sau đây là các giá trị cần được thay đổi bằng màu đỏ:
var path = require('path'), config; config = { // ### Production // When running Ghost in the wild, use the production environment // Configure your URL and mail settings here production: { url: 'http://my-ghost-blog.com', mail: { // Your mail settings }, database: { client: 'sqlite3', connection: { filename: path.join(__dirname, '/content/data/ghost.db') }, debug: false }, server: { // Host to be passed to node's `net.Server#listen()` host: '127.0.0.1', // Port to be passed to node's `net.Server#listen()`, for iisnode s$ port: '2368' } }, (...)
Lưu file và thoát khỏi editor nano bằng cách nhấn CTRL+X
rồi nhấn Y
và cuối cùng là ENTER
.
Khi vẫn ở trong folder /var/www/ghost
, hãy khởi động Ghost bằng lệnh sau:
- sudo npm start --production
Đầu ra phải giống như sau :
> ghost@0.6.4 start /var/www/ghost > node index Migrations: Database initialisation required for version 003 Migrations: Creating tables... Migrations: Creating table: posts [...]
Nếu mọi việc suôn sẻ, bạn có thể truy cập blog của bạn bằng cổng 2368: http://your_domain._name :2368
(hoặc http://your_servers_ip:2368
).
Nhấn CTRL+C
trong terminal của bạn để tắt version Ghost.
Lưu ý: Ghost có thể được tùy chỉnh thêm. Ghost.org giải thích chi tiết từng tùy chọn cấu hình.
Bước 4 - Cài đặt Nginx
Bước tiếp theo là cài đặt Nginx. Về cơ bản, nó sẽ cho phép các kết nối trên cổng 80 kết nối thông qua cổng mà Ghost đang chạy. Nói một cách dễ hiểu, bạn có thể truy cập blog Ghost của bạn mà không cần thêm :2368
.
Cài đặt nó bằng lệnh sau:
- sudo apt-get install nginx
Tiếp theo, ta sẽ phải cấu hình Nginx bằng cách thay đổi folder của bạn thành /etc/nginx
và xóa file mặc định trong /etc/nginx/sites-enabled
:
- cd /etc/nginx/
- sudo rm sites-enabled/default
Ta sẽ tạo một file mới trong /etc/nginx/sites-available/
được gọi là ghost
và mở nó bằng nano
để chỉnh sửa:
- sudo touch /etc/nginx/sites-available/ghost
- sudo nano /etc/nginx/sites-available/ghost
Dán mã sau vào file và thay đổi mã được đánh dấu màu đỏ thành domain của bạn hoặc địa chỉ IP server của bạn nếu bạn không muốn thêm domain ngay bây giờ:
server { listen 80; server_name your_domain.tld; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $http_host; proxy_pass http://127.0.0.1:2368; } }
Bây giờ ta sẽ softlink cấu hình của ta trong sites-enabled
:
- sudo ln -s /etc/nginx/sites-available/ghost /etc/nginx/sites-enabled/ghost
Ta sẽ khởi động lại Nginx:
- sudo service nginx restart
Tiếp theo, ta sẽ tạo một user mới. User này sẽ chỉ được cấp các quyền để thực hiện các công việc trong folder /var/www/ghost
. Đây là một biện pháp bảo mật. Nếu Ghost bị xâm phạm, hệ thống của bạn sẽ an toàn. Điều này có thể được thực hiện bằng cách chạy lệnh này:
- sudo adduser --shell /bin/bash --gecos 'Ghost application' ghost
Ta sẽ cấp các quyền :
- sudo chown -R ghost:ghost /var/www/ghost/
Đến đây bạn có thể đăng nhập với quyền user ghost
:
- su - ghost
Bây giờ ta cần khởi động Ghost:
- cd /var/www/ghost
- npm start --production
Bạn có thể truy cập blog của bạn trên cổng 80 dưới dạng http: // <your_server_ip> / hoặc http: // <your_domain_name> /.
Bước 5 - Giữ Ghost Running forever
Bước tiếp theo là giữ cho Ghost chạy ở chế độ nền. forever
là một module nút được dùng để khởi động Ghost ở chế độ nền và giám sát đảm bảo nó luôn hoạt động. Nếu Ghost bị treo, vĩnh viễn sẽ tự động bắt đầu một version Ghost khác.
Cài đặt forever
bằng lệnh sau từ trong folder Ghost của bạn, tức là /var/www/ghost
. Nhưng trước khi chạy lệnh, hãy đăng xuất khỏi user ghost
và đăng nhập vào user không phải root của bạn:
- exit
- sudo npm install -g forever
Bắt đầu Ghost với quyền user ghost
. Nó cũng phải được chạy từ folder Ghost:
- su - ghost
- cd /var/www/ghost
- forever start index.js
Đầu ra phải giống như sau :
warn: --minUptime not set. Defaulting to: 1000ms warn: --spinSleepTime not set. Your script will exit if it does not stay up for at least 1000ms info: Forever processing file: index.js
Theo mặc định, nó tải trong môi trường phát triển. Điều này có thể được thay đổi bằng cách chạy lệnh sau:
- NODE_ENV=production forever start index.js
forever
có thể được dừng lại bằng cách chạy điều này từ folder Ghost:
- forever stop index.js
Các lỗi có thể xảy ra
Đối với thông báo lỗi sau:
Error: SQLITE_READONLY: attempt to write a readonly database
Bắt đầu forever
với quyền là user root
(gõ exit
để đăng xuất user hiện tại):
- sudo forever start index.js
Nếu lệnh cuối cùng cho biết nó không thể tìm thấy 'mãi mãi', hãy sử dụng đường dẫn đầy đủ đến lệnh:
- sudo /usr/local/bin/forever start index.js
Nếu bạn thấy lỗi sau:
error: Cannot start forever error: script /home/ghost/index.js does not exist.
Bạn không ở trong folder /var/www/ghost
. Thay đổi folder này và thực hiện lại lệnh.
Kết luận
Xin chúc mừng! Bạn đã cài đặt Ghost và học cách proxy các cổng với Nginx. Bạn cũng đã học cách duy trì các việc chạy với gói nút forever
.
Còn rất nhiều điều bạn có thể làm với Ghost. Ví dụ, một blog được bảo vệ bằng password là một trong những tính năng mới nhất.
Xem các hướng dẫn DigitalOcean khác về Ghost:
- Cách sử dụng Ứng dụng Ghost DigitalOcean
- Cách cấu hình và duy trì Ghost từ dòng lệnh
- Cách thay đổi chủ đề và điều chỉnh cài đặt trong Ghost
Cũng truy cập vào phần sau để tìm hiểu thêm:
- Ghost.org - Trang web ma
- Tài liệu Ghost - Tài liệu Ghost chính thức
- Ghost Slack Page - Trang Ghost Slack để nhận trợ giúp từ những người thực của cộng đồng Ghost
Các tin liên quan
Cách tạo chứng chỉ ECC trên Nginx cho Debian 82015-06-23
Cách nâng cấp Nginx tại chỗ mà không làm rớt kết nối client
2015-06-15
Cách cấu hình Nginx để sử dụng các trang lỗi tùy chỉnh trên Ubuntu 14.04
2015-06-05
Cách cấu hình Nginx để sử dụng các trang lỗi tùy chỉnh trên CentOS 7
2015-06-05
Cách chuyển hướng www sang không có www với Nginx trên CentOS 7
2015-05-04
Cách chuyển hướng www thành không có www với Nginx trên Ubuntu 14.04
2015-05-04
Cách triển khai ứng dụng Rails với Puma và Nginx trên Ubuntu 14.04
2015-04-01
Cách triển khai ứng dụng Rails với Unicorn và Nginx trên Ubuntu 14.04
2015-03-26
Cách cung cấp ứng dụng flask với Gunicorn và Nginx trên CentOS 7
2015-03-23
Cách cung cấp các ứng dụng Flask với Gunicorn và Nginx trên Ubuntu 14.04
2015-03-20