Поиск по сайту:

Как установить стек MEAN в Ubuntu 22.04


На этой странице

  1. Предпосылки
  2. Начало работы
  3. Установите MongoDB
  4. Установите Node.js
  5. Загрузить и установить стек MEAN
  6. Создать приложение MEAN
  7. Установка и настройка Nginx для приложения MEAN
  8. Доступ к приложению MEAN
  9. Заключение

Стек MEAN — это бесплатная платформа на основе JavaScript с открытым исходным кодом, используемая для разработки веб-приложений. MEAN состоит из четырех ключевых технологий MongoDB, Express, Angular и Node. Стек предназначен для того, чтобы невероятно упростить создание веб-приложений на JavaScript и работу с JSON. Вы можете использовать приложения MEAN разными способами. Однако он особенно подходит для приложений реального времени, особенно для тех, которые изначально работают в облаке, и для одностраничных (динамических) веб-приложений, созданных на Angular.js.

В этом посте мы покажем вам, как установить стек MEAN на сервер Ubuntu 22.04.

Предпосылки

  • Сервер под управлением Ubuntu 22.04.
  • Действительное доменное имя, указанное с IP-адресом вашего сервера.
  • На сервере настроен пароль root.

Начиная

Перед запуском рекомендуется обновить все системные пакеты до последней версии. Вы можете обновить их все с помощью следующей команды:

apt update -y
apt upgrade -y

После обновления всех пакетов установите необходимые зависимости с помощью следующей команды:

apt install python3 dirmngr gnupg apt-transport-https ca-certificates software-properties-common -y

После установки всех зависимостей можно переходить к следующему шагу.

Установить MongoDB

По умолчанию пакет MongoDB не включен в стандартный репозиторий Ubuntu. Поэтому вам нужно будет добавить репозиторий MongoDB на свой сервер.

Сначала загрузите и добавьте ключ MongoDB с помощью следующей команды:

wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | apt-key add -

Затем добавьте репозиторий MongoDB в APT с помощью следующей команды:

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

Затем загрузите и установите зависимость libssl с помощью следующей команды:

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

Затем обновите репозиторий и установите пакет MongoDB с помощью следующей команды:

apt-get update -y
apt-get install mongodb-org -y

После успешной установки запустите и включите службу MongoDB с помощью следующей команды:

systemctl start mongod
systemctl enable mongod

Затем проверьте состояние службы MongoDB с помощью следующей команды:

systemctl status mongod

Вы получите следующий вывод:

? 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.

Когда вы закончите, вы можете приступить к установке Node.js.

Установите Node.js

По умолчанию пакет Node.js не включен в стандартный репозиторий Ubuntu. Поэтому вам нужно будет установить его из исходного репозитория Node.

Сначала добавьте исходный репозиторий Node с помощью следующей команды:

curl -sL https://deb.nodesource.com/setup_18.x | bash -

Затем установите пакет Node.js с помощью следующей команды:

apt-get install nodejs -y

После установки пакета Node.js вы можете проверить версию Node.js с помощью следующей команды:

node -v

Вы получите следующий вывод:

v18.12.0

Затем установите пакет Yarn, Gulp и PM2 с помощью NPM:

npm install -g yarn
npm install -g gulp
npm install pm2 -g

Как только вы закончите, вы можете перейти к следующему шагу.

Загрузите и установите стек MEAN

Во-первых, вам нужно будет загрузить последнюю версию стека MEAN из репозитория Git. Вы можете скачать его с помощью следующей команды:

git clone https://github.com/meanjs/mean

После завершения загрузки перейдите в загруженный каталог и установите все необходимые зависимости, используя следующую команду:

cd mean
yarn install

После установки всех зависимостей можно переходить к следующему шагу.

Создать приложение MEAN

В этом разделе мы создадим простое приложение MEAN.

Для этого создайте приложение MEAN внутри среднего каталога с помощью следующей команды:

nano server.js

Добавьте следующий код:

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;

Сохраните и закройте файл, затем запустите приложение с помощью PM2:

pm2 start server.js

Вы получите следующий вывод:

                          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 ?
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

Далее включите приложение MEAN, чтобы запустить его после перезагрузки системы:

pm2 startup

Вы получите следующий вывод:

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

По умолчанию приложение MEAN прослушивает порт 3000. Вы можете проверить это с помощью следующей команды:

ss -antpl | grep 3000

Вы получите следующий вывод:

LISTEN 0      511                *:3000             *:*    users:(("node /root/mean",pid=5644,fd=20))

Как только вы закончите, вы можете перейти к следующему шагу.

Установите и настройте Nginx для приложения MEAN

Сначала установите пакет веб-сервера Nginx с помощью следующей команды:

apt-get install nginx -y

После установки Nginx создайте файл конфигурации виртуального хоста Nginx, используя следующую команду:

nano /etc/nginx/conf.d/mean.conf

Добавьте следующие конфигурации:

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/;
}
}

Сохраните и закройте файл, затем проверьте Nginx на наличие синтаксических ошибок с помощью следующей команды:

nginx -t

Вы должны получить следующий результат:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Затем перезапустите службу Nginx, чтобы изменения вступили в силу.

systemctl restart nginx

Вы также можете проверить статус Nginx с помощью следующей команды:

systemctl status nginx

Вы должны получить следующий результат:

? 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.

Как только вы закончите, вы можете перейти к следующему шагу.

Доступ к приложению MEAN

На этом этапе Nginx установлен и настроен как обратный прокси-сервер для приложения MEAN. Теперь вы можете получить доступ к приложению MEAN, используя URL-адрес http://mean.example.com. Вы должны увидеть веб-интерфейс MEAN на следующем экране:

Заключение

Поздравляем! вы успешно установили и настроили стек MEAN в Ubuntu 22.04. Теперь вы можете приступить к разработке приложений с использованием стека MEAN и разместить его на производственном сервере. Не стесняйтесь спрашивать меня, если у вас есть какие-либо вопросы.