Apa cara terbaik untuk menggunakan Node.js?
Saya memiliki VPS Dreamhost (itulah yang mereka sebut VM ), dan saya telah dapat menginstal Node.js dan mengatur proxy. Ini berfungsi dengan baik selama saya menjaga koneksi SSH yang saya mulai dengan simpul terbuka.
node.js
service
deployment
daemon
hormatilah Kode
sumber
sumber
Jawaban:
Jawaban 2016 : hampir setiap distribusi Linux dilengkapi dengan systemd, yang berarti selamanya, monit, PM2, dll. Tidak lagi diperlukan - OS Anda sudah menangani tugas-tugas ini .
Buat
myapp.service
file (ganti 'myapp' dengan nama aplikasi Anda, tentu saja):Catatan jika Anda baru mengenal Unix:
/var/www/myapp/app.js
seharusnya ada#!/usr/bin/env node
di baris pertama.Salin file layanan Anda ke
/etc/systemd/system
folder.Beri tahu systemd tentang layanan baru dengan
systemctl daemon-reload
.Mulai dengan
systemctl start myapp
.Aktifkan untuk dijalankan saat boot dengan
systemctl enable myapp
.Lihat log dengan
journalctl -u myapp
Ini diambil dari Bagaimana kami menggunakan aplikasi simpul di Linux, edisi 2018 , yang juga mencakup perintah untuk menghasilkan AWS / DigitalOcean / Azure CloudConfig untuk membangun Linux / server simpul (termasuk
.service
file).sumber
Failed to issue method call: Unit name ... is not valid.
?/etc/systemd/system
Anda mungkin perlu menjalankansystemctl daemon-reload
(systemd biasanya akan memberi tahu Anda jika ini diperlukan). TBH ini sebaiknya ditanyakan sebagai pertanyaan terpisah./etc/systemd/system
, Anda bisa menggunakansystemctl enable /full/path/to/myapp.service
, yang menciptakan symlink/etc/systemd/system
untuk Anda.node
disebut dengan/var/www/myapp/app.js
sendirinya. Di Unix, jika Anda membuat file dapat dieksekusi, dan baris pertama dimulai dengan#!/some/file
file akan ditafsirkan dengan biner itu. Google 'juru bahasa Unix' untuk tahu lebih banyak.Gunakan Selamanya . Ini menjalankan program Node.js dalam proses terpisah dan me-restart mereka jika ada yang mati.
Pemakaian:
forever start example.js
untuk memulai suatu proses.forever list
untuk melihat daftar semua proses dimulai selamanyaforever stop example.js
untuk menghentikan proses, atauforever stop 0
menghentikan proses dengan indeks 0 (seperti yang ditunjukkan olehforever list
).sumber
forever stop 0
memiliki kesalahan dan hal-hal hanya agak berantakan dari sana. Saya telah mencoba melakukan ini tanpa root pada penggunanya sendiri sehingga saya dapat membersihkan dengan mudah begitu saya menemukan solusi yang tepat. Itu mungkin masalah saya. Saya akan melihat lebih dalam lagi.Saya telah menulis tentang metode penerapan saya di sini: Menyebarkan aplikasi node.js
Pendeknya:
sumber
PM2 melakukan trik.
Fitur-fiturnya adalah: Pemantauan, pemuatan ulang kode panas, penyeimbang beban bawaan, skrip startup otomatis, dan proses menghidupkan kembali / membuang.
sumber
Anda dapat menggunakan
monit
,forever
,upstart
atausystemd
untuk memulai server Anda.Anda dapat menggunakan Varnish atau HAProxy alih-alih Nginx (Nginx dikenal tidak bekerja dengan soket web).
Sebagai solusi cepat dan kotor yang dapat Anda gunakan
nohup node your_app.js &
untuk mencegah aplikasi Anda berhenti dengan server Anda, tetapiforever
,monit
dan solusi lain yang diusulkan lebih baik.sumber
Saya membuat skrip pemula yang saat ini digunakan untuk aplikasi saya:
Kustomisasi semua sebelum ##########, buat file di /etc/init/your-service.conf dan tempel di sana.
Maka kamu bisa:
sumber
Saya telah menulis panduan yang cukup komprehensif untuk menggunakan Node.js, dengan contoh file:
Tutorial: Cara Menyebarkan Aplikasi Node.js, Dengan Contoh
Ini mencakup hal-hal seperti http-proxy, SSL dan Socket.IO .
sumber
Inilah artikel yang lebih panjang tentang pemecahan masalah ini dengan systemd: http://savanne.be/articles/deploying-node-js-with-systemd/
Beberapa hal yang perlu diingat:
Semua hal ini mudah dilakukan dengan systemd.
sumber
Jika Anda memiliki akses root, Anda lebih baik mengatur daemon sehingga berjalan aman dan suara di latar belakang. Anda dapat membaca bagaimana melakukannya untuk Debian dan Ubuntu di posting blog Jalankan Node.js sebagai Layanan di Ubuntu .
sumber
Selama-lamanya akan melakukan trik.
@ Kevin: Anda harus dapat membunuh proses dengan baik. Saya akan memeriksa dokumentasi sedikit. Jika Anda dapat mereproduksi kesalahan, akan lebih baik mempostingnya sebagai masalah di GitHub.
sumber
Coba ini: http://www.technology-ebay.de/the-teams/mobile-de/blog/deploying-node-applications-with-capistrano-github-nginx-and-upstart.html
Panduan hebat dan terperinci untuk menyebarkan aplikasi Node.js dengan Capistrano, Upstart dan Nginx
sumber
Seperti yang dikatakan Box9, Forever adalah pilihan yang baik untuk kode produksi. Tetapi juga memungkinkan untuk menjaga proses tetap berjalan bahkan jika koneksi SSH ditutup dari klien.
Meskipun tidak selalu merupakan ide yang baik untuk produksi, ini sangat berguna ketika di tengah sesi debug yang panjang, atau untuk mengikuti output konsol dari proses yang panjang, atau setiap kali berguna untuk memutuskan koneksi SSH Anda, tetapi menjaga terminal tetap hidup di server untuk menyambung kembali nanti (seperti memulai aplikasi Node.js di rumah dan menghubungkan kembali ke konsol nanti di tempat kerja untuk memeriksa bagaimana keadaannya).
Dengan asumsi bahwa server Anda adalah kotak * nix, Anda dapat menggunakan perintah layar dari shell untuk tetap menjalankan proses meskipun klien SSH ditutup. Anda dapat mengunduh / menginstal layar dari web jika belum diinstal (mencari paket untuk distribusi Anda jika Linux, atau menggunakan MacPorts jika OS X).
Ini berfungsi sebagai berikut:
Anda dapat menjalankan beberapa sesi layar secara bersamaan seperti ini jika perlu, dan Anda dapat menyambungkannya ke mana saja dari klien mana pun. Baca dokumentasi online untuk semua opsi.
sumber
nohup
danforever
Forever adalah pilihan yang baik untuk menjaga aplikasi tetap berjalan (dan ini dapat diinstal sebagai modul yang bagus).
Tetapi untuk 'penyebaran' yang lebih serius - hal-hal seperti manajemen jarak jauh dari penyebaran, memulai kembali, menjalankan perintah dll - Saya akan menggunakan capistrano dengan ekstensi node.
https://github.com/loopj/capistrano-node-deploy
sumber
https://paastor.com adalah layanan yang relatif baru yang melakukan penyebaran untuk Anda, ke VPS atau server lain. Ada CLI untuk mendorong kode. Paastor memiliki tingkat gratis, setidaknya itu pada saat memposting ini.
sumber
Dalam kasus Anda, Anda dapat menggunakan daemon pemula . Untuk solusi penyebaran yang lengkap, saya dapat menyarankan capistrano . Dua panduan yang bermanfaat adalah Cara mengatur Node.js env dan Cara menggunakan via capistrano + pemula .
sumber
Coba gunakan node-deploy-server . Ini adalah toolset kompleks untuk menyebarkan aplikasi ke server pribadi Anda. Ini ditulis dalam Node.js dan menggunakan npm untuk instalasi.
sumber