Ngăn xếp MEAN là một khuôn khổ dựa trên JavaScript miễn phí và mã nguồn mở được sử dụng để phát triển các ứng dụng web. MEAN được tạo thành từ bốn công nghệ chính là MongoDB, Express, Angular và Node. Ngăn xếp được thiết kế để giúp việc xây dựng các ứng dụng web bằng JavaScript và xử lý JSON trở nên cực kỳ dễ dàng. Bạn có thể sử dụng các ứng dụng MEAN theo nhiều cách. Tuy nhiên, nó đặc biệt phù hợp với các ứng dụng thời gian thực, đặc biệt là các ứng dụng chạy gốc trên đám mây và các ứng dụng web một trang (động) được xây dựng trong Angular.js.
Trong bài đăng này, chúng tôi sẽ chỉ cho bạn cách cài đặt ngăn xếp MEAN trên máy chủ Ubuntu 22.04.
Sau khi tất cả các gói được cập nhật, hãy cài đặt các phụ thuộc bắt buộc bằng cách sử dụng lệnh sau lệnh:
Sau khi cài đặt xong tất cả các phần phụ thuộc, bạn có thể tiến hành bước tiếp theo.
Đầu tiên, hãy tải xuống và thêm khóa MongoDB bằng lệnh sau:
Tiếp theo, hãy thêm kho lưu trữ MongoDB vào APT bằng lệnh sau:
Tiếp theo, hãy tải xuống và cài đặt phụ thuộc libssl bằng lệnh sau lệnh:
Tiếp theo, hãy cập nhật kho lưu trữ và cài đặt gói MongoDB bằng lệnh sau:
Sau khi cài đặt thành công, hãy khởi động và kích hoạt dịch vụ MongoDB bằng lệnh sau lệnh:
Tiếp theo, hãy kiểm tra trạng thái của dịch vụ MongoDB bằng lệnh sau:
Bạn sẽ nhận được thông báo sau đầu ra:
Sau khi hoàn tất, bạn có thể tiến hành cài đặt Node.js.
Đầu tiên, hãy thêm kho lưu trữ nguồn Node bằng lệnh sau:
Tiếp theo, hãy cài đặt gói Node.js bằng lệnh sau:
Sau khi gói Node.js được cài đặt, bạn có thể xác minh phiên bản Node.js bằng lệnh sau lệnh:
Bạn sẽ nhận được kết quả đầu ra sau:
Tiếp theo, cài đặt gói Yarn, Gulp và PM2 bằng cách sử dụng NPM:
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.
Sau khi tải xuống hoàn tất, hãy điều hướng đến thư mục đã tải xuống và cài đặt tất cả các phần phụ thuộc cần thiết bằng lệnh sau:
Sau khi cài đặt tất cả các phần phụ thuộc, bạn có thể tiến hành bước tiếp theo.
Để thực hiện, hãy tạo một ứng dụng MEAN bên trong thư mục mean bằng lệnh sau:
Thêm mã sau:
Lưu và đóng tệp, sau đó khởi động ứng dụng bằng lệnh PM2:
Bạn sẽ nhận được kết quả sau:
Tiếp theo, bật ứng dụng MEAN để khởi động sau hệ thống khởi động lại:
Bạn sẽ nhận được kết quả sau:
Theo mặc định, ứng dụng MEAN lắng nghe trên cổng 3000. Bạn có thể kiểm tra bằng lệnh sau lệnh:
Bạn sẽ nhận được kết quả sau:
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.
Sau khi Nginx được cài đặt, hãy tạo tệp cấu hình máy chủ ảo Nginx bằng lệnh sau:
Thêm nội dung sau cấu hình:
Lưu và đóng tệp, sau đó xác minh Nginx để tìm lỗi cú pháp bằng lệnh sau:
Bạn sẽ nhận được thông báo sau đầu ra:
Tiếp theo, khởi động lại dịch vụ Nginx để áp dụng các thay đổi.
Bạn cũng có thể kiểm tra trạng thái Nginx bằng cách sử dụng lệnh sau lệnh:
Bạn sẽ nhận được kết quả sau:
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.
Trong bài đăng này, chúng tôi sẽ chỉ cho bạn cách cài đặt ngăn xếp MEAN trên máy chủ Ubuntu 22.04.
Điều kiện tiên quyết
- Một máy chủ chạy Ubuntu 22.04.
- Tên miền hợp lệ được trỏ bằng IP máy chủ của bạn.
- Mật khẩu gốc được cấu hình trên máy chủ.
Bắt đầu
Trước khi bắt đầu, bạn nên cập nhật tất cả các gói hệ thống lên phiên bản mới nhất. Bạn có thể cập nhật tất cả chúng bằng lệnh sau:
Mã:
apt update -y
apt upgrade -y
Mã:
apt install python3 dirmngr gnupg apt-transport-https ca-certificates software-properties-common -y
Cài đặt MongoDB
Theo mặc định, gói MongoDB không được bao gồm trong kho lưu trữ mặc định của Ubuntu. Vì vậy, bạn sẽ cần thêm kho lưu trữ MongoDB vào máy chủ của mình.Đầu tiên, hãy tải xuống và thêm khóa MongoDB bằng lệnh sau:
Mã:
wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | apt-key add -
Mã:
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-4.4.list
Mã:
wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2_amd64.deb
dpkg -i libssl1.1_1.1.1f-1ubuntu2_amd64.deb
Mã:
apt-get update -y
apt-get install mongodb-org -y
Mã:
systemctl start mongod
systemctl enable mongod
Mã:
systemctl status mongod
Mã:
? mongod.service - MongoDB Database Server Loaded: loaded (/lib/systemd/system/mongod.service; disabled; vendor preset: enabled) Active: active (running) since Sun 2022-10-30 07:30:10 UTC; 5s ago Docs: https://docs.mongodb.org/manual Main PID: 2995 (mongod) Memory: 60.5M CPU: 1.050s CGroup: /system.slice/mongod.service ??2995 /usr/bin/mongod --config /etc/mongod.conf
Oct 30 07:30:10 ubuntu2204 systemd[1]: Started MongoDB Database Server.
Cài đặt Node.js
Theo mặc định, gói Node.js không được bao gồm trong kho lưu trữ mặc định của Ubuntu. Vì vậy, bạn sẽ cần cài đặt nó từ kho lưu trữ nguồn Node.Đầu tiên, hãy thêm kho lưu trữ nguồn Node bằng lệnh sau:
Mã:
curl -sL https://deb.nodesource.com/setup_18.x | bash -
Mã:
apt-get install nodejs -y
Mã:
node -v
Mã:
v18.12.0
Mã:
npm install -g yarn
npm install -g gulp
npm install pm2 -g
Tải xuống và cài đặt MEAN Stack
Đầu tiên, bạn sẽ cần tải xuống phiên bản mới nhất của MEAN stack từ kho lưu trữ Git. Bạn có thể tải xuống bằng lệnh sau:
Mã:
git clone https://github.com/meanjs/mean
Mã:
cd mean
yarn install
Tạo ứng dụng MEAN
Trong phần này, chúng ta sẽ tạo một ứng dụng MEAN đơn giản.Để thực hiện, hãy tạo một ứng dụng MEAN bên trong thư mục mean bằng lệnh sau:
Mã:
nano server.js
Mã:
const express = require('express');
const MongoClient = require('mongodb').MongoClient;
const app = express();
app.use('/', (req, res) => {
MongoClient.connect("mongodb://localhost:27017/test", function(err, db){
db.collection('Example', function(err, collection){
collection.insert({ pageHits: 'pageHits' });
db.collection('Example').count(function(err, count){
if(err) throw err;
res.status(200).send('Page Hits: ' + Math.floor(count/2));
});
});
});
});
app.listen(3000);
console.log('Server running at http://localhost:3000/');
module.exports = app;
Mã:
pm2 start server.js
Mã:
Runtime Edition PM2 is a Production Process Manager for Node.js applications with a built-in Load Balancer. Start and Daemonize any application: $ pm2 start app.js Load Balance 4 instances of api.js: $ pm2 start api.js -i 4 Monitor in production: $ pm2 monitor Make pm2 auto-boot at server restart: $ pm2 startup To go further checkout: http://pm2.io/ -------------
[PM2] Spawning PM2 daemon with pm2_home=/root/.pm2
[PM2] PM2 Successfully daemonized
[PM2] Starting /root/mean/server.js in fork_mode (1 instance)
[PM2] Done.
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
? id ? name ? namespace ? version ? mode ? pid ? uptime ? ? ? status ? cpu ? mem ? user ? watching ?
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
? 0 ? server ? default ? 0.6.0 ? fork ? 5644 ? 0s ? 0 ? online ? 0% ? 45.2mb ? root ? disabled ?
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
Mã:
pm2 startup
Mã:
Target path
/etc/systemd/system/pm2-root.service
Command list
[ 'systemctl enable pm2-root' ]
[PM2] Writing init configuration in /etc/systemd/system/pm2-root.service
[PM2] Making script booting at startup...
[PM2] [-] Executing: systemctl enable pm2-root...
Created symlink /etc/systemd/system/multi-user.target.wants/pm2-root.service → /etc/systemd/system/pm2-root.service.
[PM2] [v] Command successfully executed.
+---------------------------------------+
[PM2] Freeze a process list on reboot via:
$ pm2 save
[PM2] Remove init script via:
$ pm2 unstartup systemd
Mã:
ss -antpl | grep 3000
Mã:
LISTEN 0 511 *:3000 *:* users:(("node /root/mean",pid=5644,fd=20))
Cài đặt và cấu hình Nginx cho ứng dụng MEAN
Đầu tiên, hãy cài đặt Gói máy chủ web Nginx với lệnh sau:
Mã:
apt-get install nginx -y
Mã:
nano /etc/nginx/conf.d/mean.conf
Mã:
server {
listen 80;
server_name mean.example.com;
access_log /var/log/nginx/mean-access.log;
error_log /var/log/nginx/mean-error.log;
location / {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:3000/;
}
}
Mã:
nginx -t
Mã:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Mã:
systemctl restart nginx
Mã:
systemctl status nginx
Mã:
? nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2022-10-30 07:37:24 UTC; 4s ago Docs: man:nginx(8) Process: 6416 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 6417 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 6418 (nginx) Tasks: 3 (limit: 4579) Memory: 3.3M CPU: 49ms CGroup: /system.slice/nginx.service ??6418 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;" ??6419 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ??6420 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
Oct 30 07:37:24 ubuntu2204 systemd[1]: Starting A high performance web server and a reverse proxy server...
Oct 30 07:37:24 ubuntu2204 systemd[1]: Started A high performance web server and a reverse proxy server.