Sediakan Pelayan Keystone.js Menggunakan Nginx Reverse Proxy pada Ubuntu 16.04

Dalam tutorial ini, kita akan menyediakan pelayan web dengan proksi terbalik. CMS yang akan kami gunakan adalah Keystone.js, kerangka aplikasi web terkenal berdasarkan Express.js. Proksi terbalik yang akan kita gunakan adalah Nginx, yang merupakan proksi terbalik sumber bebas dan terbuka, serta pelayan HTTP. Pangkalan data yang akan kami gunakan adalah MongoDB, pangkalan data dokumen NoSQL. Ini memerlukan anda mempunyai domain dengan catatan disiapkan. Sekiranya anda tidak mempunyai set itu, teruskan dan selesaikannya, dan kembali ke tutorial ini.

Memasang Nod

Pertama, kami akan memasang Node.js, yang merupakan jurubahasa Javascript berdasarkan enjin Javascript Chrome V8.

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo apt-get install -y build-essential

Memasang Nginx

Seterusnya, kami akan memasang Nginx, proksi terbalik kami.

sudo apt update
sudo apt install nginx

Ini akan mengemas kini senarai pakej, dan memasang Nginx. Setelah pemasangan selesai, kami akan menyiapkan projek simpul kami.

Memulakan projek Keystone kami

Buat projek simpul kami. Untuk melakukannya, cukup buat folder baru.

mkdir website

Kemudian, kami akan membuat package.jsonfail kami . Untuk melakukannya, jalankan npm initdi terminal anda, isikan medan, dan balas " yes" untuk mengesahkan. Setelah anda membuat package.jsonfail, maka kami akan memasang modul simpul berikut.

sudo npm install -g generator-keystone
sudo npm install -g yo

Setelah selesai memuat turun, jalankan yang berikut.

yo keystone

Isi bidang yang diperlukan. Ia akan meminta anda untuk project name, yang template engine, emailuntuk panel kawalan, dan sebagainya. Sekiranya anda tidak tahu apa yang harus dipilih, maka lalai akan baik-baik saja. Setelah anda mengatur konfigurasi keystone anda, kami dapat menguji untuk melihat apakah pelayan kami berjalan dengan menaip node keystoneuntuk memulakan aplikasi anda. Secara lalai, aplikasi anda akan berjalan di localhost, di port 3000. Perhatikan bahawa jika anda tidak memasang MongoDB, pangkalan data tidak akan tersedia untuk anda dengan segera. Anda boleh belajar memasangnya kemudian dalam tutorial.

Berikut adalah susun atur direktori asas untuk Keystone.js:

  • /lib - Di sinilah anda akan menyimpan perpustakaan tersuai anda, dan kod lain.

  • /models- Di sinilah anda akan menyimpan model pangkalan data aplikasi anda. KeystoneJS menggunakan MongoDB sebagai penyedia pangkalan data.

  • /public - Di sinilah fail statik anda (CSS, JS, gambar dan sebagainya) akan disimpan.

  • /routes/api - Di sinilah pengawal API aplikasi anda akan disimpan.

  • /routes.views - Pengawal paparan aplikasi akan disimpan di sini.

  • /templates - Di sinilah semua fail templat aplikasi anda akan disimpan.

  • /updates - Di sinilah skrip migrasi anda akan disimpan.

  • package.json - Ini adalah fail konfigurasi npm anda yang dihasilkan penjana untuk kami.

  • keystone.js - Fail permulaan utama kami, kami menjalankannya semasa memulakan laman web.

Memulakan pangkalan data kami

Seperti yang telah disebutkan sebelumnya, pangkalan data kami yang akan kami gunakan adalah MongoDB, yang merupakan pangkalan data berorientasikan dokumen NoSQL yang boleh dipercayai. Sekiranya anda telah memasang MongoDB, anda boleh melangkau bahagian ini. Sekiranya tidak, inilah cara memasangnya di Ubuntu 16.04.

Import kunci awam yang digunakan untuk pakej mongoDB.

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6

Buat fail senarai yang digunakan untuk memasang pakej.

echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list

Kemas kini senarai pakej anda menggunakan apt.

sudo apt update

Akhirnya, pasang MongoDB.

sudo apt install mongodb-org -y

Apabila pemasangan ini selesai, mulakan MongoDB.

sudo service mongod start

Ini akan memulakan proses MongoDB di pelabuhan 27017.

MongoDB akan digunakan di seluruh aplikasi, dan akan digunakan untuk menyimpan maklumat yang kami gunakan untuk model kami, misalnya Usermodel. Keystone menggunakannya sebagai pangkalan data pilihan, dan pada masa ini anda tidak dapat menggunakan vendor pangkalan data lain.

Memasang PM2

Kini tiba masanya untuk memasang PM2 (Process Manager 2.) PM2 adalah pengurus proses untuk aplikasi Node.js, dalam bentuk modul npm. Ini menyediakan cara mudah bagi anda untuk menguruskan aplikasi dan menjalankannya di latar belakang. Kerana ada di NPM, yang perlu kita lakukan untuk memasangnya adalah seperti berikut.

sudo npm install pm2 -g

Ini memberitahu npm untuk memasangnya secara global, jadi kami dapat menggunakannya di mana saja di sistem kami.

Menjalankan / Menguruskan aplikasi pada PM2

Sebelumnya, kami menjalankan aplikasi web kami dengan node keystone. Dengan PM2, ia sedikit berbeza. Kami kini menjalankan aplikasi nod kami dengan yang berikut.

pm2 start keystone.js

Ini akan menambahkan aplikasi PM2 kami ke senarai proses kami, dan kotak kecil akan dipaparkan sehingga anda dapat melihat bahawa aplikasi itu memang dalam talian. Perhatikan kotak berlabel iduntuk proses anda. Jauhkan ini, kerana kita akan membuat banyak rujukan mengenai perkara ini di kemudian hari.

Untuk melihat log aplikasi anda.

pm2 logs [id]

Contohnya, pm2 logs 0jika ini adalah aplikasi PM2 pertama anda.

Untuk menghentikan aplikasi web anda pada bila-bila masa.

pm2 stop [id]

Untuk memadam sepenuhnya aplikasi anda.

pm2 delete [id]

PM2 bahkan mempunyai dashboard pemantauan jika anda ingin melihat beberapa statistik asas untuk aplikasi anda, dan anda boleh mengaksesnya dengan ini.

pm2 monit

Ini akan menunjukkan beberapa maklumat asas seperti penggunaan RAM, penggunaan CPU, dan waktu operasi.

Ciri hebat yang ditawarkan oleh PM2 adalah watching. Pada dasarnya, menonton adalah ketika PM2 mengesan secara automatik perubahan pada mana-mana fail dalam direktori yang sama dengan fail permulaan anda, dan secara automatik akan memulakan semula aplikasi anda. Untuk mengaktifkannya, mulakan semula aplikasi anda, tetapi berikan bendera jam tangan.

pm2 restart [id] --watch

Untuk mematikan menonton setelah diaktifkan, jalankan perintah yang sama sekali lagi, dan menonton akan dilumpuhkan.

Dalam tutorial ini, kita akan berhenti menonton.

Menyiapkan proksi terbalik anda

Pastikan Nginx dipasang. Sekiranya atas sebab tertentu tidak, rujuk langkah-langkah di atas.

Laraskan tetapan firewall anda. Di Ubuntu, ufwadalah firewall rasmi. Secara lalai, sambungan disekat di port 80. Kita perlu menambah pengecualian untuk Nginx di port 80, yang mana aplikasi web kita akan berjalan.

sudo ufw allow 'Nginx HTTP'

Sahkan bahawa pelayan Nginx anda sedang berjalan.

systemctl status nginx

Di bawah Activebahagian, jika anda lihat active (running), maka anda sudah siap. Sekiranya tidak, anda boleh cuba memulakan semula perkhidmatan.

systemctl restart nginx

Padamkan fail konfigurasi Nginx lalai.

sudo rm /etc/nginx/sites-available/default

Buat yang baru, dan sebut saja node.

sudo nano /etc/nginx/sites-available/node

Tampalkan yang berikut ke dalam fail, dan ganti example.comdengan domain laman web anda.

listen 80;

server_name example.com;

    location / {

        proxy_set_header   X-Forwarded-For $remote_addr;

        proxy_set_header   Host $http_host;

        proxy_pass         "http://127.0.0.1:3000";
    }
}

Perhatikan bahawa proxy_passmenandakan IP aplikasi Keystone kami dijalankan secara tempatan, yang berada localhostdi port 3000. listen 80adalah port yang kita mahukan aplikasi diarahkan, yang dalam kes ini adalah port 80.

Kemudian, kita perlu membuat pautan symlink, atau simbolik ke folder yang dipanggil sites-enabled. Perbezaan antara sites-enableddan sites-availableyang sites-enabledsebenarnya dimuat oleh Nginx.

sudo ln -s /etc/nginx/sites-available/node /etc/nginx/sites-enabled/node

Sekarang fail konfigurasi anda sites-availableakan siap digunakan, dan fail akan dimuat dari sites-enabled. Untuk menggunakan konfigurasi sehingga berkesan, mulakan semula Nginx.

sudo systemctl restart nginx

Akhirnya, mulakan semula aplikasi PM2 anda

pm2 restart [id]

Sekarang anda boleh menavigasi ke domain anda dalam penyemak imbas, dan anda akan melihat Welcome to Keystoneskrin, dengan panel untuk anda log masuk.

Sekiranya anda melihatnya, anda telah berjaya menyediakan pelayan web pengeluaran Node.js. Sekiranya tidak, anda mungkin telah melakukan langkah yang tidak betul, dan anda mungkin mahu kembali dan mengikuti setiap langkah dengan teliti.

Anda boleh mengetahui lebih lanjut mengenai Nginx dengan melayari laman web mereka .

Saya harap anda menikmati tutorial ini, dan saya harap ini dapat membantu anda menyediakan pelayan web anda sendiri untuk pengeluaran di Vultr VPS anda.



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