Cách thiết lập môi trường phát triển Node.js trên VPS cho nhóm
Trong hướng dẫn này, ta sẽ cài đặt môi trường phát triển Node.js, cho phép bạn nhanh chóng đưa các thành viên group mới vào quá trình phát triển các ứng dụng Node.js của bạn. Phương pháp này cũng có thể được áp dụng nếu nhà phát triển muốn tạo nhiều version ứng dụng đồng thời. Phương pháp này dựa trên Node.js tương tác với Nginx qua socket Unix thay vì cổng. Giả sử rằng bạn có các version phát triển của ứng dụng tại login.dev.nodeapp.com
. Ngoài ra, ta sẽ giữ các socket cho mọi nhà phát triển trong /tmp
, như /tmp/login.dev.nodeapp.com.sock
.
Yêu cầu
Bạn cần phải cài đặt Nginx và Node.js. Ngoài ra, ta sẽ giả định bạn đã có một domain (ví dụ: nodeapp.com
) được liên kết với VPS của bạn. Lưu ý : bạn cũng nên cài đặt bản ghi CNAME ký tự đại diện cho domain của bạn . Đã có các hướng dẫn bằng text về các chủ đề này trên DigitalOcean:
- Cách cài đặt Nginx trên Ubuntu
- Cách cài đặt Node.js với NVM trên VPS .
- Cách cài đặt tên server với DigitalOcean
Cài đặt Nginx
Ta nên tạo một file cấu hình Nginx mới /etc/nginx/sites-available/dev.nodeapp.com
trong đó có:
server { listen 80; server_name ~^(?<login>[a-z]+)\.dev\.nodeapp\.com$; location / { proxy_pass http://unix:/tmp/$login.dev.nodeapp.com.sock:$uri$is_args$args; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
Liên kết cấu hình này với folder sites-enabled
và khởi động lại Nginx:
ln -nfs /etc/nginx/sites-available/dev.nodeapp.com /etc/nginx/sites-enabled/dev.nodeapp.com /etc/init.d/nginx restart
Như vậy, Nginx đã sẵn sàng chấp nhận yêu cầu của user và hướng dẫn họ đến bản sao ứng dụng của nhà phát triển, tùy thuộc vào URL. Ví dụ:
http://ivan.dev.nodeapp.com -> /tmp/ivan.dev.nodeapp.com.sock http://anna.dev.nodeapp.com -> /tmp/anna.dev.nodeapp.com.sock
Sửa đổi ứng dụng Node.js
Ta sẽ sử dụng một ví dụ web server tối thiểu từ Node.js , nhưng các sửa đổi tương tự có thể áp dụng cho bất kỳ server Node.js nào (như express).
Vấn đề là, ta cần thay đổi hành vi lắng nghe cổng mặc định thành lắng nghe cổng:
var fs = require('fs'); var http = require('http'); var mask = process.umask(0); var socket = '/tmp/' + process.env.USER + '.dev.nodeapp.com.sock'; if (fs.existsSync(socket)) { fs.unlinkSync(socket); } http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n'); }).listen(socket, function() { if (mask) { process.umask(mask); mask = null; } }); console.log('Server running at ' + socket);
Đến đây bạn có thể chạy node app.js
ứng dụng node app.js
và truy cập nó trên http://yourlogin.dev.nodeapp.com
.
Lưu ý: khi Node.js bắt đầu lắng nghe các socket , nó sẽ tạo một file được chỉ định. Nhưng nếu file socket đã tồn tại, Node.js sẽ không bắt đầu lắng nghe. Vì vậy, ta nên đảm bảo ta đã loại bỏ socket khỏi lần chạy trước.
Vấn đề còn lại là, ta nên tạo một socket có đầy đủ quyền truy cập cho tất cả mọi người, như vậy Nginx sẽ có thể sử dụng nó. Nó tốt cho sự phát triển, nhưng có thể không tốt cho việc production .
Và đó là nó, xin chúc mừng! Tất cả những gì bạn cần bây giờ là giới thiệu một nhà phát triển mới để tạo user trên VPS của bạn.
<div class = “author”> Gửi bởi: <a href=osystemhttps://github.com/artjockosystem> Artur Burtsev </a> </div>
Các tin liên quan