Ubuntu服务器JS(Node.js)部署技巧
sudo apt install nodejs npm安装,默认版本可能较旧(如Ubuntu 22.04默认安装Node.js 16.x)。curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -添加仓库,再用sudo apt install nodejs安装,可灵活选择版本。curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash安装NVM,再用nvm install 18安装指定版本,用nvm use 18切换,支持版本动态调整。scp(scp -r local_project user@server_ip:/path/to/remote)或SFTP将本地项目上传至服务器。npm install根据package.json安装所有依赖(包括生产依赖,避免安装devDependencies可减少资源占用)。.env文件(不要提交至Git),或通过export DB_HOST=your_db_host临时设置,确保应用访问安全。sudo npm install -g pm2,启动应用pm2 start app.js --name "my-js-app"(app.js为入口文件),常用命令:pm2 list(查看进程)、pm2 logs(查看日志)、pm2 save(保存当前进程列表)、pm2 startup(设置开机自启)。sudo apt install nginx,用于处理HTTP请求转发、负载均衡及SSL终止。/etc/nginx/sites-available/your_project(如default),添加以下内容(将your_domain.com替换为域名或IP,3000替换为Node.js应用端口):server {
listen 80;
server_name your_domain.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_cache_bypass $http_upgrade;
}
}
启用配置:sudo ln -s /etc/nginx/sites-available/your_project /etc/nginx/sites-enabled/,测试配置sudo nginx -t,重启Nginxsudo systemctl restart nginx。ufw允许HTTP(80)和HTTPS(443)流量:sudo ufw allow 'Nginx Full',启用防火墙sudo ufw enable,检查状态sudo ufw status。sudo apt install certbot python3-certbot-nginx,运行sudo certbot --nginx -d your_domain.com,自动配置Nginx HTTPS重定向(默认监听443端口)。npm outdated查看过时依赖,用npm update更新到最新版本,修复安全漏洞。dotenv库加载.env文件中的环境变量,避免硬编码敏感信息(如require('dotenv').config())。dist目录静态文件交由Nginx直接托管(避免Node.js处理静态请求的性能损耗),Nginx配置中添加:location /static/ {
alias /path/to/your_project/dist/;
}
pm2 logs查看实时日志,或配置Nginx日志轮转(/etc/logrotate.d/nginx),避免日志文件过大占用磁盘空间。