Meteor.js เป็นเฟรมเวิร์กโอเพนซอร์ส JavaScript ที่เขียนด้วย Node.js เป็นที่นิยมเนื่องจากมุมมองของการสร้างโปรแกรมประยุกต์บนเว็บในจาวาสคริปต์บริสุทธิ์ Meteor รวมเอาการสนับสนุน JavaScript front-end ที่ทำงานในเว็บเบราว์เซอร์เช่นเดียวกับ back-end JavaScript ซึ่งจะทำงานบนเซิร์ฟเวอร์โฮสต์ มันทำงานร่วมกันได้เป็นอย่างดีกับเฟรมเวิร์ก JavaScript ส่วนหน้าเช่น React และ Angular.js รวมถึง MongoDB ซึ่งเป็นฐานข้อมูล NoSQL ที่ได้รับความนิยม เหตุผลสำคัญสองสามข้อในการเลือก Meteor.js มีดังนี้:
-
Meteor.js เป็นเฟรมเวิร์กสแต็กเต็มรูปแบบ ดังนั้นด้วยคุณจะได้รับทุกสิ่งที่คุณต้องการ: ฐานข้อมูลส่วนหน้าส่วนหลัง ดาวตกทำหน้าที่ได้อย่างยอดเยี่ยมในการรวมมันเข้าด้วยกัน
-
ความเร็ว. ระบบแพ็คเกจที่ใช้งานง่ายของ Meteor มอบเครื่องมือมากมายที่คุณอาจจำเป็นต้องใช้ในการปรับแต่งแอพ
-
มันได้รับการสนับสนุนที่ดีจากกลุ่มนักพัฒนา Meteor รวมถึงนักพัฒนาเพื่อนที่ใช้มัน คุณจะสามารถเข้าใจถึงปัญหาใด ๆ ที่คุณมีและแก้ไขได้อย่างรวดเร็ว
ในบทช่วยสอนนี้เราจะบรรลุเป้าหมายต่อไปนี้บน Ubuntu 16.04:
-
ติดตั้งNode.js
รันไทม์ Javascript ของเรา
-
Meteor.js
ติดตั้ง
-
ติดตั้งMongoDB
ฐานข้อมูลของ Meteor
-
ติดตั้งApache
พร็อกซีย้อนกลับที่เราเลือกและตั้งค่าโดเมนของเราหากมี
-
ทดสอบเว็บไซต์ของเรา
-
ติดตั้งเว็บไซต์ของเราเพื่อการผลิต
กำลังติดตั้ง Node.js
คุณจะต้องติดตั้ง Node.js ซึ่งเป็นล่าม JavaScript ของเราและแกนหลักของ Meteor มันจะช่วยให้เราสามารถเรียกใช้ Meteor และแอปพลิเคชั่นอื่น ๆ ของ Node.js ที่เราอาจมีในอนาคต ในสถานการณ์เช่นนี้เราจะทำการติดตั้ง Node.js 8. ในการเริ่มต้นการดาวน์โหลด
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
รอให้การดาวน์โหลดและติดตั้งเสร็จสมบูรณ์
การติดตั้ง MongoDB
ต่อไปเราจะทำการติดตั้งฐานข้อมูลของเรา: MongoDB MongoDB เป็นฐานข้อมูลเอกสาร NoSQL โอเพ่นซอร์สฟรีและฐานข้อมูลของ Meteor มันใช้รูปแบบเหมือน JSON สำหรับเอกสารเมื่อเทียบกับตารางที่มีโครงสร้างในฐานข้อมูล SQL แบบดั้งเดิม
นำเข้ากุญแจสาธารณะ MongoDB ที่ใช้โดยAPT
(Advanced Packaging Terminal) สิ่งนี้ทำให้ APT สามารถตรวจสอบแพ็คเกจได้ ในกรณีนี้ MongoDB
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
สร้างไฟล์รายการที่จำเป็นสำหรับ Ubuntu 16.04
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
เริ่มการติดตั้ง MongoDB และรอให้การติดตั้งเสร็จสิ้น
sudo apt update && sudo apt install mongodb-org -y
เปิดบริการ systemd เพื่อแก้ไข
sudo nano /etc/systemd/system/mongodb.service
คัดลอกและวางข้อมูลต่อไปนี้เพื่อให้บริการ systemd สมบูรณ์
[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target
[Service]
User=mongodb
ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf
[Install]
WantedBy=multi-user.target
ใช้ " Control-O
" เพื่อบันทึกและ " Control-X
" เพื่อออก
เรียกใช้บริการ MongoDB systemd โดยพิมพ์sudo systemctl start mongodb
เทอร์มินัลของคุณ
เมื่อต้องการตรวจสอบว่ามันเริ่มต้นได้สำเร็จพิมพ์ต่อไปนี้
sudo systemctl status mongodb
คุณจะเห็นว่าบริการนั้นเปิดใช้งานอยู่
การติดตั้งและตั้งค่า Apache2
ต่อไปเราจะติดตั้ง Apache Apache เป็นซอฟต์แวร์เว็บเซิร์ฟเวอร์ฟรีและโอเพนซอร์ซซึ่งทำหน้าที่เป็นพร็อกซีย้อนกลับซึ่งเป็นสิ่งที่เราจะใช้ในบทช่วยสอนนี้ port 80
พร็อกซีกลับเป็นสิ่งจำเป็นที่จะผูกแอพลิเคชันของเราที่จะ Meteor.js Node.js บล็อกแอปพลิเคชันไม่ให้ทำงานบนพอร์ตนั้นโดยไม่ต้องเข้าถึงรูท Apache ทำงานroot
โดยอัตโนมัติและเชื่อมโยงกับport 80
ดังนั้นเราจะไม่ต้องกังวลเกี่ยวกับมันเมื่อถึงเวลาต้องเปิดเว็บไซต์ของเรา
ติดตั้ง Apache
sudo apt update && sudo apt install apache2
เพื่อให้สามารถเข้าถึงเว็บพอร์ตภายนอกเช่นport 80
เราจำเป็นต้องกำหนดค่าไฟร์วอลล์ของเราสำหรับ Apache เราทำสิ่งนี้ผ่านUFW
(ไฟร์วอลล์ที่ไม่ซับซ้อน)
sudo ufw allow 'Apache Full'
นี่จะอนุญาตให้เข้าถึงApache Full
โปรไฟล์ "" สิ่งนี้ทำให้เราได้รับปริมาณข้อมูลเข้ามาport 80
ซึ่งเป็นสิ่งที่แอปพลิเคชันของเราจะทำงาน
การติดตั้ง Meteor.js และสร้างแอปพลิเคชันพื้นฐานของเรา
ตอนนี้เราจะติดตั้งเว็บเฟรมเวิร์กของเรา: Meteor.js เราจะใช้สคริปต์ทุบตีง่าย ๆ ที่ทีม Meteor ติดตั้งไว้
curl https://install.meteor.com/ | sh
รอให้การติดตั้งเสร็จสิ้น สิ่งที่สคริปต์ทำคือดาวน์โหลด Meteor จากเว็บไซต์ทางการและติดตั้งทั่วโลกดังนั้นเราจึงสามารถใช้งานได้จากทุกที่ เมื่อเสร็จแล้วเราสามารถสร้างไดเรกทอรีแอปพลิเคชันของเรา meteor create
ดาวตกมีเครื่องมือที่มีประโยชน์น้อยสำหรับเราที่จะใช้ในการทำเช่นนั้นเรียกว่า ในการสร้างไดเรกทอรีแอปพลิเคชันของคุณให้พิมพ์ดังต่อไปนี้
meteor create <projectname>
โฟลเดอร์จะถูกสร้างด้วยชื่อที่ระบุ ( <projectname>
)
การตั้งค่าพร็อกซีย้อนกลับ Apache ของเรา
ตอนนี้เราได้ตั้งค่าไดเรกทอรีแอปพลิเคชันของเราแล้วเราสามารถดำเนินการตั้งค่า reverse proxy ของเราได้ Apache ใช้โมดูลที่เรียกว่าmod_proxy
ซึ่งใช้พร็อกซีสำหรับ Apache
sudo apt-get install libapache2-mod-proxy-html libxml2-dev -y
สิ่งนี้จะติดตั้งโมดูลและทำให้ Apache พร้อมใช้งาน
ต่อไปเราจะต้องเปิดใช้งานโมดูลที่จำเป็นทั้งหมดของ Apache ที่จำเป็นในการทำงาน เราจะทำเช่นนี้กับa2enmod
เครื่องมือที่เปิดใช้งานโมดูลสำหรับ Apache โมดูลเหล่านี้จะช่วยให้เราสามารถใช้ประโยชน์จาก reverse proxy เพียงพิมพ์คำสั่งเหล่านี้ลงในเทอร์มินัลของคุณ
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_ajp
sudo a2enmod rewrite
sudo a2enmod deflate
sudo a2enmod headers
sudo a2enmod proxy_balancer
sudo a2enmod proxy_connect
sudo a2enmod proxy_html
หลังจากนั้นเราจะต้องปิดการใช้งานเว็บไซต์ Apache เริ่มต้นจากการเริ่มต้นขึ้นเพื่อให้เราสามารถเริ่มต้นขึ้นเอง มิฉะนั้นแอปพลิเคชัน Apache เริ่มต้นจะแทนที่ของเรา หากต้องการปิดการใช้งานเว็บไซต์เริ่มต้นเพียงเรียกใช้สิ่งต่อไปนี้
sudo a2dissite 000-default
ตอนนี้เราจะสร้างไฟล์โฮสต์เสมือนของเรา ในการทำเช่นนั้นเพียงแค่เปิดโปรแกรมแก้ไขข้อความ
sudo nano /etc/apache2/sites-available/<projectname>
คัดลอกและวางต่อไปนี้
<VirtualHost *:80>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ProxyPreserveHost On
# Servers to proxy the connection, or
# List of application servers Usage
ProxyPass / http://0.0.0.0:3000/
ServerName localhost
</VirtualHost>
-
VirtualHost *:80
: บอกให้ Apache เชื่อมต่อกับพอร์ต 80 ซึ่งเป็นสิ่งที่เราต้องการสำหรับเว็บแอปพลิเคชันของเรา
-
ProxyPass
: ที่อยู่ IP ของเว็บไซต์ที่คุณต้องการส่งต่อไปยังพร็อกซีย้อนกลับ นี่น่าจะเป็น IP ของ VPS ของคุณ
-
ServerName
: ชื่อเซิร์ฟเวอร์ของคุณ (โดยปกติชื่อเริ่มต้นlocalhost
)
เมื่อคุณกำหนดการตั้งค่าที่จำเป็นเสร็จแล้วให้ใช้ " Control-O
" เพื่อบันทึกและ " Control-X
" เพื่อออก
ใช้งานเว็บไซต์เป็นครั้งแรก
เมื่อต้องการทดสอบและตรวจสอบให้แน่ใจว่าเว็บไซต์กำลังทำงานอยู่ให้พิมพ์ดังต่อไปนี้ในไดเรกทอรีโครงการ
meteor
คุณจะเห็นผลลัพธ์ต่อไปนี้แสดงว่าไซต์ของคุณเริ่มต้นได้สำเร็จ
=> App running at: http://localhost:3000/
port 3000
จะทราบว่าดาวตกโดยเริ่มต้นในการฟัง
การตั้งค่าเว็บไซต์ของเราเพื่อการผลิต
เพื่อให้แน่ใจว่าแอปของเราสามารถทำงานต่อไปได้เราจะใช้บริการ systemd เช่นเดียวกับที่เราทำกับ MongoDB บริการของระบบนี้จะทำให้แน่ใจได้ว่าเว็บไซต์ของเราจะเริ่มทำงานเมื่อใดก็ตามที่ระบบของเราเริ่มต้นและยังคงทำงานต่อไป มันจะรีสตาร์ทแอปพลิเคชันของเราในกรณีที่เกิดปัญหาด้วยเหตุผลใดก็ตาม ในการตั้งค่าบริการ systemd ของเราให้พิมพ์ดังต่อไปนี้ในเครื่องเทอร์มินัลของคุณ
sudo nano /etc/systemd/system/<projectname>.service
นี่คือสิ่งที่คุณต้องการให้ไฟล์ของคุณมีลักษณะ
[Service]
WorkingDirectory=/home/<yourusername>/<projectname>
ExecStart=/usr/local/bin/meteor --production
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=<projectName>
User=<yourusername>
Environment=NODE_ENV=production
Environment=PWD=/home/<yourusername>/<projectname>
Environment=PORT=3000
Environment=HTTP_FORWARDED_COUNT=1
หมายเหตุ : อย่าลืมแทนที่projectname
ด้วยชื่อโครงการและyourusername
ด้วยชื่อผู้ใช้ของ VPS
ต่อไปนี้เป็นบรรทัดสำคัญสำหรับคุณที่ต้องคำนึงถึง
-
WorkingDirectory
: ไดเรกทอรีของแอปพลิเคชันของคุณ
-
Restart
: ไม่ว่าจะรีสตาร์ทแอปพลิเคชันหรือไม่ก็ตามไม่ว่าจะด้วยเหตุผลใดก็ตาม
-
User
: ชื่อผู้ใช้ของคุณ
-
Environment=PWD
WorkingDirectory
ที่จะเหมือนกัน
-
Environment=PORT
: พอร์ตที่แอปพลิเคชันของคุณกำลังทำงานอยู่ 3000
เริ่มต้นคือ
บันทึกและปิดไฟล์
ตอนนี้เราจะเปิดใช้งานและเริ่มบริการ
sudo systemctl enable <projectname>.service
ในกรณีที่<projectname>
เป็นชื่อของไฟล์บริการที่เราสร้าง
จากนั้นเราจะเริ่มให้บริการ
sudo systemctl start <projectname>.service
ใบสมัครของคุณจะเริ่มขึ้น หากต้องการตรวจสอบว่าเปิดตัวแล้วให้เรียกใช้สิ่งต่อไปนี้
sudo systemctl status <projectname>
คุณจะเห็นว่ามันใช้งานได้ตรวจสอบว่าบริการได้เริ่มต้นได้สำเร็จ
ต่อไปเราจะตรวจสอบเว็บไซต์ของเรา ในเว็บเบราว์เซอร์ที่คุณเลือกนำทางไปยังที่อยู่ IP ของคุณ
http://your-server-ip/
คุณจะเห็นหน้าจอตัวอย่างของ Meteor ยืนยันว่าคุณทำทุกอย่างถูกต้อง
การจัดการใบสมัครของเรา
ตอนนี้เราได้เริ่มต้นแอปพลิเคชันของเราแล้วเราจะต้องจัดการมัน
รีสตาร์ทแอปพลิเคชันของคุณ
sudo systemctl restart <projectname>
การหยุดแอปพลิเคชัน
sudo systemctl stop <projectname>
การดูสถานะของแอปพลิเคชัน
sudo systemctl status <projectname>
ดูบันทึก
journalctl -u <projectname>
ตอนนี้คุณได้กำหนดค่า MongoDB, Apache และ Meteor เรียบร้อยแล้วและสร้างเว็บเซิร์ฟเวอร์ Meteor.js เพื่อการผลิต ตอนนี้ส่วนที่เหลือขึ้นอยู่กับคุณในการออกแบบเว็บไซต์ของคุณที่ส่วนหน้าและส่วนหลัง คุณสามารถเข้าถึง MongoDB เพื่อจัดเก็บข้อมูลใด ๆ ที่คุณอาจต้องการและ Node.js ซึ่งนำเสนอโมดูลที่หลากหลายผ่าน Node Package Manager ( NPM
) เพื่อเสริมความแข็งแกร่งให้กับแบ็กเอนด์ของคุณ สำหรับเอกสารเพิ่มเติมโปรดเยี่ยมชมเว็บไซต์ Meteorซึ่งคุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับวิธีกำหนดเว็บไซต์ของคุณเองตามที่คุณต้องการ นอกจากนี้คุณอาจอ้างถึงเอกสารประกอบ MongoDBเมื่อคุณจัดการกับฐานข้อมูล