Ответ
Да, Linux — основная ОС для продакшн-серверов в моих Node.js проектах. Работаю с Ubuntu/Debian, настраиваю окружение для деплоя и мониторинга.
Типичная настройка Node.js приложения на Ubuntu:
# Установка Node.js через nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
nvm install 18
nvm use 18
# Настройка процесса через PM2
npm install -g pm2
pm2 start ecosystem.config.js --env production
pm2 save
pm2 startup systemd
# Настройка Nginx как reverse proxy
sudo nano /etc/nginx/sites-available/myapp
Конфигурация Nginx для Node.js приложения:
server {
listen 80;
server_name api.example.com;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
}
# Статика
location /public/ {
root /var/www/myapp;
expires 1y;
add_header Cache-Control "public, immutable";
}
}
Автоматизация через bash-скрипты:
#!/bin/bash
# deploy.sh
set -e
echo "Pulling latest changes..."
git pull origin main
echo "Installing dependencies..."
npm ci --only=production
echo "Running migrations..."
npx sequelize db:migrate
echo "Restarting application..."
pm2 reload ecosystem.config.js --env production
echo "Cleaning old deployments..."
npm cache clean --force
echo "Deployment completed successfully!"
Из моего опыта:
- Настройка firewall (ufw) и fail2ban
- Мониторинг через htop, nmon, и логирование в journald
- Ротация логов приложения с logrotate
- Настройка cron jobs для периодических задач (бэкапы, очистка)
- Использование Docker и docker-compose для контейнеризации
- Настройка SSL через Let's Encrypt и certbot