Aplikasi Node.js popular kerana keupayaan mereka untuk skala. Menjalankan beberapa proses serentak pada beberapa pelayan menghasilkan latensi yang lebih rendah dan masa operasi yang lebih besar. Semasa menguruskan berbilang pelayan, ia adalah yang paling mudah untuk memulakan aplikasi Node.js secara automatik jika mereka crash. Tutorial ini akan menunjukkan kepada anda cara mengatur ketekunan aplikasi dengan cepat dari contoh Ubuntu 16.04 yang kosong.
Prasyarat
- Buat contoh Vultr mana-mana saiz dengan Ubuntu 16.04 LTS x64.
- Sekiranya anda bukan pengguna root, jalankan
sudo -s
dan taip kata laluan anda. Akses root diperlukan untuk mengubah suai fail permulaan supaya pengurus proses bermula boot.
- Pastikan Node.js dipasang pada instance, dan versi Node.js 8.9.3 LTS atau lebih baru, yang diperlukan agar pengurus kegigihan dapat berjalan dengan lancar. Gunakan
node -v
untuk memeriksa versi yang dipasang. Sekiranya Node.js tidak menggunakan versi yang betul, arahan berikut akan memasangnya.
Pasang Node.js.
$ sudo apt-get update
$ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
$ sudo apt-get install -y nodejs
Buat partition swap
Langkah ini adalah pilihan, tetapi disyorkan untuk pemasangan. Sekatan swap adalah bahagian cakera keras yang didedikasikan untuk membantu menambah RAM. Pada contoh Vultr yang lebih kecil, seperti contoh RAM 512MB, mewujudkan partition swap akan memberi manfaat kepada prestasi. Untuk tutorial swap versi automatik, gunakan arahan di bawah.
$ git clone https://github.com/teamtofu/server-tools.git tools
$ bash ./tools/swap.sh
Secara umumnya, menggunakan swap tidak diperlukan untuk kes-kes dengan 4 GB RAM atau lebih apabila menyediakan aplikasi yang berterusan, walaupun ia mungkin meningkatkan prestasi aplikasi. RAM lebih responsif berbanding swap, jadi contohnya dengan lebih banyak RAM akan menghasilkan hasil yang lebih baik tanpa mengira swap.
Pasang Benang
Benang adalah pengurus pakej yang mudah digunakan dari Facebook untuk pakej Node.js. Ini lebih cepat daripada NPM dan juga deterministik, yang sangat berguna ketika menggunakan beberapa pelayan.
$ curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
$ echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
$ sudo apt-get update && sudo apt-get install yarn
Walau bagaimanapun, NPM boleh digunakan bukannya Benang, dan ia mempunyai arahan setanding kepada semua orang dalam tutorial ini.
Pasang aplikasi Node.js anda
Sekiranya aplikasi anda dihoskan di git repositori, klon dan gunakan yarn install
. Permohonan anda harus mempunyai fail kemasukan pelayan, biasanya server.js
atau index.js
, yang akan digunakan dalam langkah seterusnya.
Pasang Pengurus Proses 2
Process Manager 2 adalah pakej yang akan memulakan semula aplikasi secara automatik. Proses Manager 2 sangat popular, dan ia digunakan oleh Microsoft, PayPal, dan Intuit, jadi selamat dan boleh dipercayai.
$ yarn global add pm2
Tambahkan aplikasi anda sebagai proses
Aplikasi akan di-daemonized (dijalankan di latar belakang) dan dimulakan semula secara automatik dengan perintah start.
$ pm2 start [path to your entry.js] -i max
Sekiranya anda ingin melancarkan jumlah maksimum proses secara automatik, sampaikan -i max
argumennya. Sekiranya penggunaan tunggal instance Vultr ini adalah untuk melayani aplikasi, maka ini adalah disyorkan. Untuk contoh Vultr dengan lebih dari satu CPU, beberapa proses akan dilancarkan, dan Pengurus Proses 2 akan bertindak sebagai penyeimbang beban untuk semua proses individu ini.
Mulakan aplikasi anda secara automatik semasa boot
Setelah memulakan aplikasi, simpan konfigurasi aplikasi. Kemudian, jalankan arahan permulaan untuk menjalankan Pengurus Proses 2 secara automatik di latar belakang ketika Ubuntu melakukan boot. Untuk Ubuntu 16.04, Process Manager 2 akan mengikat systemd
.
$ pm2 save
$ pm2 startup
Sekarang jika aplikasi Node.js anda crash kerana ralat ia akan dimulakan semula, dan jika Ubuntu crash kerana alasan apa pun, proses itu akan dimulakan secara automatik dengan Ubuntu. Proses boleh dimulakan semula pm2 gracefulReload all
dan Pengurus Proses 2 boleh dimulakan semula dengan pm2 update
. Untuk menghentikan Proses Manager 2 dari mula boot, jalankan pm2 unstartup
.
Ujian
Cuba ketik reboot
dan periksa untuk melihat apakah aplikasi anda diserahkan setelah Ubuntu naik. Sekiranya aplikasi itu digunakan untuk web dan berkhidmat melalui port 80
, maka curl http://localhost/
akan menunjukkan HTML untuk halaman permulaan. Sekiranya ia tidak berfungsi, arahan pm2 status
akan menunjukkan proses yang berjalan, dan perintah permulaan boleh diterbitkan semula.
Menyebarkan versi baru aplikasi
Jika aplikasi dikemas kini, seperti dengan menarik repositori git, maka arahan mesti dikeluarkan untuk mengemas kini proses permohonan yang berjalan.
$ pm2 update
Penggunaan contoh
Server Parse , platform sumber terbuka popular sebagai perkhidmatan, berfungsi sebagai backend untuk aplikasi. Backend mungkin terhempas disebabkan oleh ralat dalam kod atau jumlah permintaan, tetapi aplikasi itu tidak akan mengalami downtime kerana server lain (dan / atau proses) terus dijalankan, dan proses Server Parse dengan cepat dimulakan semula.