Thứ tư, 04/09/2013 | 00:00 GMT+7

Cách lưu trữ nhiều ứng dụng Node.js trên một VPS duy nhất với nginx, forever và crontab


Yêu cầu để làm theo hướng dẫn này


Bạn cần phải cài đặt nginx và Node.js, đồng thời đã có các bài hướng dẫn bằng text về các chủ đề này trên DigitalOcean:

Cách cài đặt nginxCách cài đặt Node.js.

Ngoài ra, bạn nên sở hữu một domain , để ánh xạ một dịch vụ Node.js đang chạy tới một domain , thay vì chuyển đến http: // [your-vps-ip]: [port].

Chạy ứng dụng Node.js của bạn với Forever


Forever là một công cụ dòng lệnh đơn giản đảm bảo rằng ứng dụng Node.js chạy liên tục (tức là mãi mãi). Điều này nghĩa là nếu ứng dụng của bạn gặp lỗi và bị treo, vĩnh viễn sẽ xử lý vấn đề này và khởi động lại nó cho bạn.

Chỉ cần cài đặt vĩnh viễn trên phạm vi global và có thể sử dụng vĩnh viễn trong vài giây:

npm install forever -g

Để bắt đầu một tập lệnh với vĩnh viễn, bạn cần làm theo các bước sau:

Điều hướng đến ứng dụng Node.js của bạn:

cd /path/to/your/node/app/

và chạy file JavaScript server / chính với vĩnh viễn:

forever start --spinSleepTime 10000 main.js

Trong đó --spinSleepTime 10000 đề cập đến thời gian hoạt động tối thiểu (tính bằng mili giây) giữa các lần chạy tập lệnh gặp sự cố. Lệnh này sẽ hoạt động cho hầu hết mọi trường hợp.

Bây giờ, hãy trỏ trình duyệt của bạn tới http: // [your-vps-ip]: [port] và xem ứng dụng của bạn đang chạy.

Ánh xạ domain tới ứng dụng Node.js của bạn


Bây giờ, bạn cần thêm bản ghi DNS trong console DigitalOcean của bạn để ánh xạ domain của bạn với server (VPS) của bạn.

Các bước cần thực hiện là: <ol>
<li> Đăng nhập tại DigitalOcean.com </li>
<li> Nhấp vào phần 'DNS' ở thanh bên trái </li>
<li> Thêm domain bằng cách nhấp vào nút 'Thêm domain ', chọn VPS của bạn và nhập domain bạn đã đăng ký vào trường 'Tên' </li>
<li> Sao chép Server tên do DigitalOcean cung cấp (ví dụ: NS1.DIGITALOCEAN.COM.) và thêm từng server tên vào bản ghi DNS trong console của công ty đăng ký domain của bạn. </li> </ol>

Lưu ý: các thay đổi sẽ không diễn ra ngay lập tức, vì DNS có thể mất đến 24 giờ để phổ biến.

Ánh xạ domain tới một dịch vụ đang chạy trên VPS của bạn với nginx


Trong phần này, bạn sẽ học cách cài đặt reverse-proxy với nginx trong một vài bước đơn giản.

Trước hết, hãy tạo một file cho domain mong muốn của bạn trong /etc/nginx/conf.d/ bằng editor yêu thích của bạn (tôi sẽ sử dụng nano). Tệp phải được đặt tên theo domain , vì lý do nhất quán.

nano /etc/nginx/conf.d/example.com.conf

Lưu ý: bạn có thể gọi file bất cứ điều gì bạn muốn, phần quan trọng là phần mở rộng .conf .

Trong file này, bạn cần sao chép đoạn mã sau và paste vào file đã tạo trước đó:

server {
    listen 80;

    server_name your-domain.com;

    location / {
        proxy_pass http://localhost:{YOUR_PORT};
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

Bây giờ, chỉ cần thay your-domain.com bằng domain bạn đã đăng ký và YOUR_PORT bằng cổng mà ứng dụng Node.js của bạn đang nghe trên VPS của bạn.

Lưu ý: để có thể tham chiếu nhiều domain cho một ứng dụng Node.js (như www.example.com và example.com), bạn cần thêm mã sau vào file /etc/nginx/nginx.conf trong phần http :

server_names_hash_bucket_size 64;

Nếu các thay đổi DNS được phổ biến, bạn có thể trỏ trình duyệt web đến domain của bạn và bạn sẽ thấy ứng dụng của bạn đang chạy, có thể truy cập được từ internet.

Khởi động lại ứng dụng Node.js của bạn khi khởi động lại


Mãi mãi là tốt khi giữ cho ứng dụng của bạn chạy khi nó bị treo, v.v. nhưng điều gì sẽ xảy ra khi VPS được khởi động lại?

Đây là nơi mà một cronjob đơn giản có thể ngăn ứng dụng của bạn và user của bạn khỏi thời gian ngừng hoạt động không mong muốn.

Tạo một file có tên starter.sh trong folder chính của ứng dụng của bạn và sao chép mã sau:

#!/bin/sh

if [ $(ps -e -o uid,cmd | grep $UID | grep node | grep -v grep | wc -l | tr -s "\n") -eq 0 ]
then
        export PATH=/usr/local/bin:$PATH
        forever start --sourceDir /path/to/your/node/app main.js >> /path/to/log.txt 2>&1
fi

trong đó main.js sẽ được thay thế bằng tập lệnh chính của ứng dụng của bạn.

Đoạn mã hữu ích này đã được lấy từ đây

Để bắt đầu tập lệnh này ở mỗi lần khởi động lại, bạn cần chỉnh sửa crontab bằng lệnh sau:

crontab -e

và nối mã sau vào file này

@reboot /path/to/starter.sh

Bây giờ hãy đặt đường dẫn tuyệt đối đến file starter.sh của bạn.

Mẹo: Điều hướng nơi chứa file starter.sh của bạn và in folder hiện tại bằng pwd .

Lặp lại các bước ở trên cho từng domain / dịch vụ của bạn.

<div class = “author”> Gửi bởi: <a href=osystemhttps://twitter.com/christian_fei[> Christian Fei </a> </div>


Tags:

Các tin liên quan

Cách tối ưu hóa Nginx với PHP Pools trên VPS Ubuntu 13.04
2013-08-21
Cách cấu hình ghi log và xoay vòng log trong Nginx trên VPS Ubuntu
2013-08-20
Cách cài đặt và cấu hình Django với Postgres, Nginx và Gunicorn
2013-08-14
Cách phát trực tuyến video với Nginx và JWPlayer trên CentOS 6
2013-05-31
Cách thiết lập xác thực HTTP với Nginx trên Ubuntu 12.10
2013-04-30
Cách cài đặt (LEMP) nginx, MySQL, PHP stack trên Arch Linux
2012-11-02
Cách thiết lập cân bằng tải Nginx
2012-08-27
Cách cấu hình Nginx làm Reverse Proxy cho Apache
2012-07-20
Cách cài đặt WordPress với nginx trên CentOS 6
2012-07-02
Cách cài đặt WordPress với nginx trên CentOS 6
2012-07-02