Bagaimana Menyediakan Aplikasi Node Koa.js pada Ubuntu 16.04 LTS

Dalam tutorial ini, kita akan belajar bagaimana menyiapkan aplikasi web Koa.js untuk pengeluaran, menggunakan Node.js. Kami juga akan menghubungkan domain sampel, dengan proksi terbalik, menggunakan Apache, dan belajar bagaimana menguruskannya dengan pengurus proses yang tepat. Tanpa basa-basi lagi, mari kita mulakan.

Penerangan Ringkas Node.js, Koa.js dan Apache

Node.js adalah rangka kerja JavaScript yang pantas dan lintas platform berdasarkan pada enjin V8 Chrome. Ia digunakan dalam kedua-dua aplikasi desktop dan pelayan dan terkenal dengan pengendalian gelung acara tunggal. Node.js menampilkan pendaftaran pakej yang disebut Node Package Manager (NPM), yang menghoskan lebih dari setengah juta pakej. Pakej NPM (atau modul) adalah tulang belakang utama Node.js, kerana ia adalah kod berasaskan komuniti yang boleh berguna dalam aplikasi Node.js anda. Dalam aplikasi Koa.js kami, Node.js adalah bahagian teras fungsinya.

Koa.js adalah rangka kerja web minimalis, dibina di atas platform Node.js. Dibuat oleh pasukan yang sama di belakang kerangka Express.js yang popular, tujuannya adalah untuk meminimumkan lagi kerangka Express.js yang sudah minimalis dengan mengecualikan alat tengah dari terasnya. Ciri utama Koa.js adalah kenyataan bahawa tidak ada panggilan balik. Koa.js dibina di atas penjana berasaskan ES6 dan ciri ES6, seperti Janji.

Apache adalah pelayan web sumber terbuka yang popular, digunakan sebagai titik permulaan yang sangat asas untuk pelayan web. Dalam tutorial ini, kami akan menggunakan Apache sebagai proksi terbalik, yang akan membolehkan kami memautkan permohonan kami ke domain sampel. Sekiranya anda tidak mempunyai domain, tutorial ini akan tetap berfungsi untuk anda, dengan satu-satunya perbezaan ialah laman web akan berjalan di IP VPS anda, dan bukannya domain.

Menyiapkan Node.js

Seperti mana-mana rangka kerja Node.js, anda perlu memasang Node.js pada VPS anda. Demi tutorial ini, saya akan menganggap bahawa anda sudah memasang Node.js pada sistem anda. Sekiranya tidak, anda boleh mengikuti arahan di sini .

Menyiapkan direktori aplikasi kami

Kita perlu membuat folder, yang akan mengandungi fail teras aplikasi kita.

mkdir site

Jangan ganti sitedengan nama lain yang anda mahukan untuk direktori. Seterusnya, kita perlu menginisialisasi fail pakej Node.js kita. Tukar ke direktori yang baru anda buat, dan jalankan npm init, dan lengkapkan arahannya. Akhirnya, ia sepatutnya kelihatan seperti ini:

{
  "name": "site",
  "version": "1.0.0",
  "description": "Koa.js Site",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "yourname",
  "license": "ISC"
}

Memasang Koa.js

Sekarang bahawa kami telah menyediakan direktori kami, kami dapat meneruskan pemasangan Koa.js. Dalam direktori kerja semasa /site, ketik berikut.

npm install koa

Ini akan memuat turun modul Koa.js dari NPM dan memasangnya di direktori projek kami untuk kegunaan masa depan. Seterusnya, kami akan membuat fail permohonan sampel kami yang akan memegang kod apl kami. Untuk melakukannya, buat index.jsfail.

nano index.js

Setelah masuk ke dalam fail, buat contoh aplikasi.

const Koa = require('koa');
const app = new Koa();

app.use(async ctx => {
     ctx.body = 'Hello World';
 });

app.listen(3000);
console.log('Website is live!')

Simpan dan tutup fail. CTRL+ X.

Kami ingin memastikan bahawa aplikasi kami berjalan dengan baik. Untuk memulakannya, jalankan node index.js, dan anda akan melihat Website is livedi konsol.

Memasang Apache

Setelah mengetahui laman web kami berfungsi, kami boleh terus memasang Apache dan pergantungannya.

sudo apt install -y libapache2-mod-proxy-html libxml2-dev

Untuk menggunakan ciri proksi terbalik yang terdapat di Apache, kita perlu mengaktifkan modul yang diperlukan.

a2enmod proxy
a2enmod proxy_http
a2enmod proxy_ajp
a2enmod rewrite
a2enmod deflate
a2enmod headers
a2enmod proxy_balancer
a2enmod proxy_connect
a2enmod proxy_html

Beberapa modul ini mungkin telah diaktifkan, tetapi sentiasa baik untuk menyemak semula mereka.

Sekarang kita perlu mengedit fail konfigurasi lalai untuk Apache.

sudo nano /etc/apache2/sites-enabled/000-default.conf

Di sini, kita perlu menambahkan blok untuk aplikasi kita.

<VirtualHost *:*>
    ProxyPreserveHost On
    ProxyPass / http://0.0.0.0:3000/
    ProxyPassReverse / http://0.0.0.0:3000

    ServerName localhost
</VirtualHost>

Simpan fail, CTRL+ X.

Anda mungkin menyedari bahawa kami menggunakan port 3000sebagai port untuk ProxyPassdan ProxyPassReverseIP kami. Memandangkan ia adalah pelabuhan yang sama yang kami menjalankan aplikasi Koa.js kami, adalah penting bahawa kami memasukkan pelabuhan yang betul.

Setelah perubahan berlaku, kami perlu memulakan semula Apache dan melancarkan semula aplikasi Koa.js kami.

sudo systemctl restart apache2

Ini akan memastikan bahawa fail konfigurasi kami aktif dan siap berfungsi semasa kami memulakan aplikasi Koa.js kami. Sebaik sahaja Apache dimulakan semula, navigasi semula ke direktori tapak anda, dan mulakan aplikasi Koa.js seperti yang kami lakukan sebelum ini. Dari penyemak imbas web anda, arahkan ke http://yourdomain, atau http://yourip:, dan anda akan melihat "Hello World".

Menguruskan permohonan kami dengan sistem

Sekarang bahawa kami telah membahas asas-asas untuk membuat aplikasi Koa.js sampel, kami menyedari bahawa dalam persekitaran pengeluaran, memulakan aplikasi seperti sekarang ini tidak praktikal. Seorang pengurus proses pastinya satu keperluan. Itulah di mana systemd dimainkan. Secara ringkas, systemd terdiri daripada perisian yang menyediakan blok bangunan untuk sistem Linux. Sama seperti "init", ia menyediakan sistem untuk menguruskan proses pengguna selepas permulaan sistem. Dalam kes aplikasi kami, sistem membolehkan kami untuk memulakan laman web kami secara automatik selepas sistem telah disambung semula, sekiranya terdapat peristiwa yang mengganggu sistem waktu uptime. Ia juga menyediakan satu set alat yang berguna untuk mengurus permohonan kami. Bahagian yang terbaik adalah fakta bahawa ia dibina dalam Ubuntu 16.04 LTS, jadi kami tidak perlu memasang sebarang perisian tambahan.

Buat perkhidmatan systemd

Semua yang kita perlukan untuk memulakan aplikasi kita akan terkandung dalam fail yang dipanggil service. Ia mengandungi maklumat mengenai aplikasi kami, seperti namanya, direktori, persekitaran dan banyak lagi. Untuk membuat fail sistem kami, buka editor teks.

sudo nano /lib/systemd/system/site.service

Edit dan simpan fail seperti ini.

[Unit]
Description=desc here
Documentation=https://example.com
After=network.target

[Service]
Environment=NODE_PORT=3000
Type=simple
User=youruser
ExecStart=/usr/bin/node /home/[youruser]/site/index.js
Restart=on-failure

[Install]
WantedBy=multi-user.target

Ganti youruserdengan nama pengguna pelayan anda. Berikut adalah petikan ringkas mengenai medan penting:

  • After - Ini memberitahu sistem untuk menunggu sehingga antara muka rangkaian siap sebelum memulakan aplikasi kami.
  • Environment- Di sini kita dapat menentukan pemboleh ubah persekitaran untuk aplikasi kita. Pelabuhan Node.js kami adalah salah satu daripada mereka.
  • Type - Ini memberitahu systemd bahawa aplikasi kita baru boleh dimulakan, tanpa memalsukan hak pengguna dan seumpamanya.
  • User- Ini memberitahu systemd bahawa kami ingin menjalankan aplikasi di bawah akaun pengguna kami, yang disyorkan. Aplikasi berjalan sebagai pengguna root boleh menyebabkan banyak kompromi keselamatan.
  • ExecStart - Pada dasarnya perintah yang sistem akan berjalan untuk memulakan aplikasi kami, sama seperti cara kami memulakannya secara manual sebelum ini.
  • Restart- Beritahu systemd di mana syarat untuk memulakan semula aplikasi kami. Dalam kes ini, kami ingin laman web kami dimulakan semula dalam kes kesilapan.

Mulakan perkhidmatan sistem

Kami kini bersedia untuk memulakan perkhidmatan sistem kami.

sudo systemctl daemon-reload

Ini perlu apabila setiap fail sistem sistem diubah agar sistem dapat mendaftarkan sebarang perubahan baru.

Kemudian, mulakan aplikasi anda.

sudo systemctl start site

Navigasi ke tapak dalam penyemak imbas anda sekali lagi, untuk mengesahkan bahawa semuanya berjalan.

Fungsi menguruskan sistem utama

  • stop - Menghentikan permohonan sepenuhnya.
  • restart - Menghentikan aplikasi, dan memulakannya semula dalam proses baru.
  • enable - Memberitahu systemd untuk memulakan aplikasi setiap kali anda menghidupkan komputer.
  • status - Menunjukkan maklumat tentang aplikasi yang sedang berjalan, seperti uptime, state aplikasi dan banyak lagi.

Untuk menggunakan salah satu fungsi ini, jalankan yang berikut.

systemctl <function> site

Kesimpulannya

Kami berjaya menyiapkan aplikasi Koa.js dan belajar bagaimana membalikkan proksi, serta menguruskannya dengan systemd. Anda kini bersedia untuk mengembangkan aplikasi anda dan membina contoh ini. Sekiranya anda ingin mengetahui lebih lanjut mengenai Koa.js, dan banyak lagi perkara yang boleh anda lakukan, lawati laman web mereka , untuk mendapatkan maklumat yang lebih bermanfaat. Selain itu, jika anda ingin mengetahui lebih lanjut mengenai pengurus proses systemd, baca dokumentasinya di sini . Akhir sekali, jika anda ingin mengetahui lebih lanjut mengenai proksi terbalik Apache, sila bebas untuk menyemaknya di sini .



Leave a Comment

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

6 Perkara Yang Sangat Menggila Tentang Nintendo Switch

6 Perkara Yang Sangat Menggila Tentang Nintendo Switch

Ramai daripada anda tahu Switch akan keluar pada Mac 2017 dan ciri baharunya. Bagi yang tidak tahu, kami telah menyediakan senarai ciri yang menjadikan 'Tukar' sebagai 'gajet yang mesti ada'.

Janji Teknologi Yang Masih Tidak Ditepati

Janji Teknologi Yang Masih Tidak Ditepati

Adakah anda menunggu gergasi teknologi memenuhi janji mereka? semak apa yang masih belum dihantar.

Fungsi Lapisan Seni Bina Rujukan Data Besar

Fungsi Lapisan Seni Bina Rujukan Data Besar

Baca blog untuk mengetahui lapisan berbeza dalam Seni Bina Data Besar dan fungsinya dengan cara yang paling mudah.

Bagaimana AI Boleh Mengambil Automasi Proses ke Tahap Seterusnya?

Bagaimana AI Boleh Mengambil Automasi Proses ke Tahap Seterusnya?

Baca ini untuk mengetahui cara Kecerdasan Buatan semakin popular di kalangan syarikat berskala kecil dan cara ia meningkatkan kebarangkalian untuk menjadikan mereka berkembang dan memberikan pesaing mereka kelebihan.

CAPTCHA: Berapa Lama Ia Boleh Kekal Sebagai Teknik Berdaya maju Untuk Perbezaan Manusia-AI?

CAPTCHA: Berapa Lama Ia Boleh Kekal Sebagai Teknik Berdaya maju Untuk Perbezaan Manusia-AI?

CAPTCHA telah menjadi agak sukar untuk diselesaikan oleh pengguna dalam beberapa tahun kebelakangan ini. Adakah ia dapat kekal berkesan dalam pengesanan spam dan bot pada masa hadapan?

Keunikan Teknologi: Masa Depan Tamadun Manusia yang Jauh?

Keunikan Teknologi: Masa Depan Tamadun Manusia yang Jauh?

Apabila Sains Berkembang pada kadar yang pantas, mengambil alih banyak usaha kita, risiko untuk menundukkan diri kita kepada Ketunggalan yang tidak dapat dijelaskan juga meningkat. Baca, apakah makna ketunggalan bagi kita.

Teleperubatan Dan Penjagaan Kesihatan Jauh: Masa Depan Ada Di Sini

Teleperubatan Dan Penjagaan Kesihatan Jauh: Masa Depan Ada Di Sini

Apakah teleperubatan, penjagaan kesihatan jauh dan impaknya kepada generasi akan datang? Adakah ia tempat yang baik atau tidak dalam situasi pandemik? Baca blog untuk mencari paparan!

Pernahkah Anda Terfikir Bagaimana Penggodam Mendapatkan Wang?

Pernahkah Anda Terfikir Bagaimana Penggodam Mendapatkan Wang?

Anda mungkin pernah mendengar bahawa penggodam memperoleh banyak wang, tetapi pernahkah anda terfikir bagaimana mereka memperoleh wang seperti itu? Mari berbincang.

Kemas Kini Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Isu Daripada Penyelesaian

Kemas Kini Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Isu Daripada Penyelesaian

Baru-baru ini Apple mengeluarkan macOS Catalina 10.15.4 kemas kini tambahan untuk menyelesaikan masalah tetapi nampaknya kemas kini itu menyebabkan lebih banyak masalah yang membawa kepada pemusnahan mesin mac. Baca artikel ini untuk mengetahui lebih lanjut