วิธีการตั้งค่าแอปพลิเคชันโหนด Koa.js บน Ubuntu 16.04 LTS

ในบทช่วยสอนนี้เราจะได้เรียนรู้วิธีตั้งค่าโปรแกรมประยุกต์บนเว็บ Koa.js สำหรับการผลิตโดยใช้ Node.js เราจะทำการเชื่อมโยงโดเมนตัวอย่างกับพร็อกซีย้อนกลับการใช้ Apache และเรียนรู้วิธีจัดการกับตัวจัดการกระบวนการที่เหมาะสม โดยไม่ต้องกังวลใจต่อไปเริ่มกันเลย

คำอธิบายสั้น ๆ ของ Node.js, Koa.js และ Apache

Node.js เป็นเฟรมเวิร์ก JavaScript ที่ทำงานข้ามแพลตฟอร์มได้อย่างรวดเร็วโดยใช้เอ็นจิ้น V8 ของ Chrome มันถูกใช้ในทั้งเดสก์ท็อปและเซิร์ฟเวอร์และมีชื่อเสียงในการจัดการห่วงเหตุการณ์แบบเธรดเดี่ยว Node.js มีการลงทะเบียนแพ็คเกจที่เรียกว่า Node Package Manager (NPM) ซึ่งโฮสต์มากกว่าครึ่งล้านแพ็คเกจ แพคเกจ NPM (หรือโมดูล) เป็นแกนหลักหลักของ Node.js เนื่องจากเป็นรหัสที่ขับเคลื่อนโดยชุมชนที่สามารถเป็นประโยชน์ในแอปพลิเคชัน Node.js ของคุณ ในแอป Koa.js ของเรา Node.js เป็นส่วนหลักของฟังก์ชั่น

Koa.js เป็นเฟรมเวิร์กทางเว็บที่เรียบง่ายสร้างขึ้นบนแพลตฟอร์ม Node.js สร้างขึ้นโดยทีมเดียวกันภายใต้กรอบงาน Express.js ที่ได้รับความนิยมเป้าหมายของมันคือการลดขนาดกรอบงาน Express.js ที่เรียบง่ายให้แล้วโดยการไม่รวมมิดเดิลแวร์จากแกนกลางของมัน คุณลักษณะที่สำคัญของ Koa.js คือข้อเท็จจริงที่ว่าไม่มีการโทรกลับ Koa.js สร้างจากเครื่องกำเนิดไฟฟ้าที่ใช้ ES6 และคุณสมบัติของ ES6 เช่นสัญญา

Apache เป็นเว็บเซิร์ฟเวอร์แบบโอเพ่นซอร์สยอดนิยมใช้เป็นจุดเริ่มต้นพื้นฐานสำหรับเว็บเซิร์ฟเวอร์ ในบทช่วยสอนนี้เราจะใช้ Apache เป็น reverse proxy ซึ่งจะช่วยให้เราเชื่อมโยงแอปพลิเคชันของเรากับโดเมนตัวอย่าง หากคุณไม่มีโดเมนบทช่วยสอนนี้ยังคงใช้ได้สำหรับคุณโดยมีความแตกต่างเพียงอย่างเดียวคือเว็บไซต์จะทำงานบน VPS IP ของคุณแทนโดเมน

การตั้งค่า Node.js

เช่นเดียวกับกรอบงาน Node.js คุณจะต้องติดตั้ง Node.js บน VPS ของคุณ เพื่อประโยชน์ของบทช่วยสอนนี้ฉันจะสมมติว่าคุณได้ติดตั้ง Node.js ในระบบของคุณแล้ว ถ้าไม่ได้คุณก็สามารถทำตามคำแนะนำที่นี่

การตั้งค่าไดเรกทอรีแอปพลิเคชันของเรา

เราจะต้องสร้างโฟลเดอร์ซึ่งจะมีไฟล์หลักของแอปพลิเคชันของเรา

mkdir site

คุณสามารถแทนที่siteด้วยชื่ออื่น ๆ ที่คุณต้องการสำหรับไดเรกทอรี ต่อไปเราจะต้องเริ่มต้นไฟล์แพ็คเกจ Node.js ของเรา เปลี่ยนเป็นไดเร็กทอรีที่คุณเพิ่งสร้างและรันnpm initและทำตามพร้อมต์ ในท้ายที่สุดควรมีลักษณะดังนี้:

{
  "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"
}

กำลังติดตั้ง Koa.js

ตอนนี้เรามีการตั้งค่าไดเรกทอรีของเราแล้วเราสามารถติดตั้ง Koa.js. ได้ ในไดเรกทอรีการทำงานปัจจุบัน/siteพิมพ์ต่อไปนี้

npm install koa

สิ่งนี้จะดาวน์โหลดโมดูล Koa.js จาก NPM และติดตั้งในไดเรกทอรีโครงการของเราเพื่อใช้ในอนาคต ต่อไปเราจะสร้างไฟล์แอปพลิเคชันตัวอย่างของเราที่จะเก็บรหัสแอปของเรา หากต้องการทำเช่นนั้นให้สร้างindex.jsไฟล์

nano index.js

เมื่ออยู่ในไฟล์ให้สร้างแอปพลิเคชันตัวอย่าง

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

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

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

บันทึกและปิดไฟล์ CTRL+ X.

เราต้องการตรวจสอบให้แน่ใจว่าใบสมัครของเราทำงานอย่างถูกต้อง ในการเริ่มต้นใช้node index.jsงานและคุณจะเห็นWebsite is liveในคอนโซล

การติดตั้ง Apache

ตอนนี้เรารู้ว่าเว็บไซต์ของเราใช้งานได้เราสามารถทำการติดตั้ง Apache และอ้างอิงได้

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

ในการใช้คุณสมบัติ reverse proxy ที่พบใน Apache เราจะต้องเปิดใช้งานโมดูลที่จำเป็น

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

โมดูลเหล่านี้บางส่วนอาจถูกเปิดใช้งานแล้ว แต่ก็เป็นการดีเสมอที่จะตรวจสอบอีกครั้ง

ตอนนี้เราต้องแก้ไขไฟล์กำหนดค่าเริ่มต้นสำหรับ Apache

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

ที่นี่เราจะต้องเพิ่มบล็อกสำหรับแอปพลิเคชันของเรา

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

    ServerName localhost
</VirtualHost>

CTRLบันทึกไฟล์ X+

คุณอาจสังเกตเห็นว่าเรากำลังใช้พอร์ต3000เป็นพอร์ตสำหรับเราProxyPassและProxyPassReverseIP เนื่องจากเป็นพอร์ตเดียวกับที่เรากำลังเรียกใช้แอปพลิเคชันของ Koa.js เราจึงจำเป็นต้องใส่พอร์ตที่ถูกต้อง

เมื่อมีการเปลี่ยนแปลงเราจะต้องรีสตาร์ท Apache และเปิดใช้งานแอปพลิเคชัน Koa.js อีกครั้ง

sudo systemctl restart apache2

สิ่งนี้จะช่วยให้มั่นใจได้ว่าไฟล์การกำหนดค่าของเราใช้งานได้และพร้อมใช้งานเมื่อเราเริ่มโปรแกรม Koa.js เมื่อรีสตาร์ท Apache แล้วให้กลับไปที่ไดเรกทอรีไซต์ของคุณแล้วเริ่มแอปพลิเคชัน Koa.js อย่างที่เราทำก่อนหน้านี้ จากเว็บเบราว์เซอร์นำทางhttp://yourdomainหรือหรือจากhttp://yourip:นั้นคุณจะเห็น "Hello World"

การจัดการแอปพลิเคชันของเราด้วย systemd

ตอนนี้เราได้ครอบคลุมพื้นฐานของการสร้างแอปพลิเคชันตัวอย่าง Koa.js แล้วเราตระหนักดีว่าในสภาพแวดล้อมการใช้งานจริง ผู้จัดการกระบวนการเป็นความต้องการอย่างแน่นอน นั่นคือสิ่งที่ systemd เข้ามาเล่น กล่าวง่ายๆว่า systemd ประกอบด้วยซอฟต์แวร์ที่จัดเตรียมโครงสร้างพื้นฐานสำหรับระบบ Linux เช่นเดียวกับ "init" มันมีระบบในการจัดการกระบวนการผู้ใช้หลังจากการเริ่มต้นระบบ ในกรณีของแอปพลิเคชันของเรา systemd ช่วยให้เราสามารถเริ่มเว็บไซต์ของเราโดยอัตโนมัติหลังจากระบบรีบูตในกรณีที่มีเหตุการณ์ที่ขัดขวางการทำงานของระบบ นอกจากนี้ยังมีชุดเครื่องมือที่มีประโยชน์เมื่อจัดการแอปพลิเคชันของเรา ส่วนที่ดีที่สุดคือความจริงที่ว่ามันสร้างขึ้นใน Ubuntu 16.04 LTS ดังนั้นเราไม่จำเป็นต้องติดตั้งซอฟต์แวร์เพิ่มเติม

สร้างบริการ systemd

serviceทุกสิ่งที่เราจะต้องเริ่มต้นโปรแกรมของเราจะได้รับการบรรจุอยู่ในไฟล์ที่เรียกว่า มันเก็บรายละเอียดเกี่ยวกับแอพของเราเช่นชื่อไดเรกทอรีสภาพแวดล้อมและอื่น ๆ ในการสร้างไฟล์ระบบของเราให้เปิดโปรแกรมแก้ไขข้อความ

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

แก้ไขและบันทึกไฟล์เช่นนี้

[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

แทนที่youruserด้วยชื่อผู้ใช้ของเซิร์ฟเวอร์ของคุณ นี่คือบทสรุปอย่างรวดเร็วของฟิลด์สำคัญ:

  • After - สิ่งนี้แจ้งให้ systemd รอจนกระทั่งอินเตอร์เฟสเครือข่ายพร้อมก่อนเริ่มต้นแอปพลิเคชันของเรา
  • Environment- ที่นี่เราสามารถระบุตัวแปรสภาพแวดล้อมสำหรับแอปพลิเคชันของเรา พอร์ต Node.js ของเราเป็นหนึ่งในนั้น
  • Type - สิ่งนี้แจ้งให้ systemd ทราบว่าแอปของเราสามารถเริ่มต้นใช้งานได้โดยไม่ต้องรอสิทธิ์ของผู้ใช้และอื่น ๆ
  • User- สิ่งนี้บอก systemd ว่าเราต้องการเรียกใช้แอปพลิเคชันภายใต้บัญชีผู้ใช้ของเราซึ่งแนะนำ การรันแอ็พพลิเคชันในฐานะผู้ใช้รูทสามารถนำไปสู่ความปลอดภัยลดลงมากมาย
  • ExecStart - โดยพื้นฐานแล้วคำสั่งที่ systemd จะทำงานเพื่อเริ่มแอปพลิเคชันของเราคล้ายกับวิธีที่เราเริ่มต้นด้วยตนเองก่อน
  • Restart- บอก systemd ภายใต้เงื่อนไขที่จะรีสตาร์ทแอปพลิเคชันของเรา ในกรณีนี้เราต้องการให้เว็บไซต์ของเราเริ่มต้นใหม่ในกรณีที่มีข้อผิดพลาด

เริ่มบริการ systemd

ตอนนี้เราพร้อมที่จะเริ่มบริการ systemd ของเราแล้ว

sudo systemctl daemon-reload

นี่เป็นสิ่งจำเป็นเมื่อใดก็ตามที่ไฟล์เซอร์วิส systemd เปลี่ยนแปลงเพื่อให้ systemd ลงทะเบียนการเปลี่ยนแปลงใหม่ที่ทำ

จากนั้นเริ่มแอปพลิเคชันของคุณ

sudo systemctl start site

นำทางไปยังไซต์ในเบราว์เซอร์ของคุณอีกครั้งเพื่อตรวจสอบว่าทุกอย่างใช้งานได้

คีย์ systemd การจัดการฟังก์ชั่น

  • stop - หยุดแอปพลิเคชันอย่างสมบูรณ์
  • restart - หยุดแอปพลิเคชันและเริ่มต้นอีกครั้งภายใต้กระบวนการใหม่
  • enable - บอกให้ systemd เริ่มต้นแอปพลิเคชันเมื่อใดก็ตามที่คุณเปิดเครื่องคอมพิวเตอร์
  • status - แสดงข้อมูลเกี่ยวกับแอปพลิเคชั่นที่กำลังทำงานเช่นสถานะการออนไลน์สถานะแอพพลิเคชั่นและอื่น ๆ

หากต้องการใช้ฟังก์ชันใด ๆ เหล่านี้ให้เรียกใช้สิ่งต่อไปนี้

systemctl <function> site

ข้อสรุป

เราได้ตั้งค่าแอปพลิเคชัน Koa.js สำเร็จแล้วและเรียนรู้วิธีย้อนกลับพรอกซีรวมทั้งจัดการกับ systemd ตอนนี้คุณพร้อมที่จะขยายแอปพลิเคชันและสร้างตามตัวอย่าง หากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ Koa.js และสิ่งอื่น ๆ ที่คุณสามารถทำได้โปรดเยี่ยมชมเว็บไซต์ของพวกเขาเพื่อรับข้อมูลที่เป็นประโยชน์เพิ่มเติม นอกจากนั้นถ้าคุณต้องการที่จะเรียนรู้เพิ่มเติมเกี่ยวกับกระบวนการผู้จัดการ systemd ของอ่านเอกสารสำหรับมันนี่ สุดท้ายหากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ reverse proxy ของ Apache อย่าลังเลที่จะตรวจสอบพวกเขาที่นี่

ฝากความเห็น

วิธีการติดตั้ง Directus 6.4 CMS บน CentOS 7 LAMP VPS

วิธีการติดตั้ง Directus 6.4 CMS บน CentOS 7 LAMP VPS

เรียนรู้วิธีการติดตั้ง Directus 6.4 CMS บน CentOS 7; ระบบการจัดการเนื้อหา Headless ที่มีความยืดหยุ่นสูงและปลอดภัย

ตั้งค่า Nginx บน Ubuntu เพื่อสตรีมวิดีโอสด HLS

ตั้งค่า Nginx บน Ubuntu เพื่อสตรีมวิดีโอสด HLS

เรียนรู้วิธีการตั้งค่า Nginx บน Ubuntu สำหรับการสตรีมวิดีโอสด HLS ด้วยคำแนะนำที่ชัดเจนและเป็นประโยชน์

การสำรองข้อมูลยอดนิยมด้วย Percona XtraBackup บนแอพ WordPress แบบคลิกเดียว

การสำรองข้อมูลยอดนิยมด้วย Percona XtraBackup บนแอพ WordPress แบบคลิกเดียว

เรียนรู้การใช้ Percona XtraBackup สำหรับการสำรองข้อมูลด้วยวิธีที่เป็นระบบและง่ายดายบน WordPress ออนไลน์ของคุณ

ReactOS: นี่คืออนาคตของ Windows หรือไม่?

ReactOS: นี่คืออนาคตของ Windows หรือไม่?

ReactOS ซึ่งเป็นโอเพ่นซอร์สและระบบปฏิบัติการฟรีพร้อมเวอร์ชันล่าสุดแล้ว สามารถตอบสนองความต้องการของผู้ใช้ Windows ยุคใหม่และล้ม Microsoft ได้หรือไม่? มาหาข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบเก่านี้ แต่เป็นประสบการณ์ OS ที่ใหม่กว่ากัน

AI สามารถต่อสู้กับการโจมตีของแรนซัมแวร์ที่เพิ่มขึ้นได้หรือไม่

AI สามารถต่อสู้กับการโจมตีของแรนซัมแวร์ที่เพิ่มขึ้นได้หรือไม่

การโจมตีของ Ransomware กำลังเพิ่มขึ้น แต่ AI สามารถช่วยจัดการกับไวรัสคอมพิวเตอร์ตัวล่าสุดได้หรือไม่? AI คือคำตอบ? อ่านที่นี่รู้ว่า AI boone หรือ bane

เชื่อมต่อผ่าน WhatsApp Desktop App 24*7

เชื่อมต่อผ่าน WhatsApp Desktop App 24*7

ในที่สุด Whatsapp ก็เปิดตัวแอพเดสก์ท็อปสำหรับผู้ใช้ Mac และ Windows ตอนนี้คุณสามารถเข้าถึง Whatsapp จาก Windows หรือ Mac ได้อย่างง่ายดาย ใช้ได้กับ Windows 8+ และ Mac OS 10.9+

AI จะนำกระบวนการอัตโนมัติไปสู่อีกระดับได้อย่างไร

AI จะนำกระบวนการอัตโนมัติไปสู่อีกระดับได้อย่างไร

อ่านข้อมูลนี้เพื่อทราบว่าปัญญาประดิษฐ์กำลังได้รับความนิยมในหมู่บริษัทขนาดเล็กอย่างไร และเพิ่มโอกาสในการทำให้พวกเขาเติบโตและทำให้คู่แข่งได้เปรียบ

การอัปเดตเสริม macOS Catalina 10.15.4 ทำให้เกิดปัญหามากกว่าการแก้ปัญหา

การอัปเดตเสริม macOS Catalina 10.15.4 ทำให้เกิดปัญหามากกว่าการแก้ปัญหา

เมื่อเร็ว ๆ นี้ Apple เปิดตัว macOS Catalina 10.15.4 การอัปเดตเสริมเพื่อแก้ไขปัญหา แต่ดูเหมือนว่าการอัปเดตทำให้เกิดปัญหามากขึ้นที่นำไปสู่การสร้างเครื่อง Mac อ่านบทความนี้เพื่อเรียนรู้เพิ่มเติม

13 เครื่องมือดึงข้อมูลเชิงพาณิชย์ของ Big Data

13 เครื่องมือดึงข้อมูลเชิงพาณิชย์ของ Big Data

13 เครื่องมือดึงข้อมูลเชิงพาณิชย์ของ Big Data

ระบบไฟล์บันทึกคืออะไรและทำงานอย่างไร

ระบบไฟล์บันทึกคืออะไรและทำงานอย่างไร

คอมพิวเตอร์ของเราจัดเก็บข้อมูลทั้งหมดในลักษณะที่เรียกว่าระบบไฟล์บันทึก เป็นวิธีการที่มีประสิทธิภาพที่ช่วยให้คอมพิวเตอร์สามารถค้นหาและแสดงไฟล์ได้ทันทีที่คุณกดค้นหาhttps://wethegeek.com/?p=94116&preview=true