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 CentOS 7
2015-06-05
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 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 uWSGI và Nginx trên CentOS 7
2015-03-20
 

