วิธีการตั้งค่าแอปพลิเคชันโหนด 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 อย่าลังเลที่จะตรวจสอบพวกเขาที่นี่



Leave a Comment

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

ภาวะเอกฐานทางเทคโนโลยี: อนาคตอันห่างไกลของอารยธรรมมนุษย์?

ภาวะเอกฐานทางเทคโนโลยี: อนาคตอันห่างไกลของอารยธรรมมนุษย์?

ในขณะที่วิทยาศาสตร์มีวิวัฒนาการไปอย่างรวดเร็ว โดยรับช่วงต่อความพยายามของเราอย่างมาก ความเสี่ยงในการทำให้ตัวเองตกอยู่ในภาวะภาวะเอกฐานที่อธิบายไม่ได้ก็เพิ่มขึ้นเช่นกัน อ่านว่าภาวะเอกฐานอาจมีความหมายสำหรับเราอย่างไร

ข้อมูลเชิงลึกเกี่ยวกับ 26 เทคนิคการวิเคราะห์ข้อมูลขนาดใหญ่: ตอนที่ 1

ข้อมูลเชิงลึกเกี่ยวกับ 26 เทคนิคการวิเคราะห์ข้อมูลขนาดใหญ่: ตอนที่ 1

ข้อมูลเชิงลึกเกี่ยวกับ 26 เทคนิคการวิเคราะห์ข้อมูลขนาดใหญ่: ตอนที่ 1

ผลกระทบของปัญญาประดิษฐ์ในการดูแลสุขภาพ 2021

ผลกระทบของปัญญาประดิษฐ์ในการดูแลสุขภาพ 2021

AI ในการดูแลสุขภาพได้ก้าวกระโดดอย่างมากจากทศวรรษที่ผ่านมา ดังนั้นอนาคตของ AI ในการดูแลสุขภาพจึงยังคงเติบโตทุกวัน