Ubuntu中JS项目(以Node.js项目为例)部署指南
Node.js是JS项目的运行环境,npm是其包管理工具。推荐使用**nvm(Node Version Manager)**安装,方便版本切换:
# 安装nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
source ~/.bashrc # 使nvm生效
# 安装最新LTS版本Node.js(如v18)
nvm install --lts
# 验证安装
node -v # 查看Node.js版本
npm -v # 查看npm版本
若无需多版本管理,也可用系统包管理器安装:
sudo apt update
sudo apt install nodejs npm
将本地JS项目传输至Ubuntu服务器,常用方法:
git clone https://github.com/your-username/your-js-project.git
cd your-js-project
scp -r ./local-project user@server-ip:/path/to/remote/dir进入项目目录,根据package.json安装依赖:
npm install # 安装所有依赖(生产环境建议加--production减少体积)
若项目有构建步骤(如Webpack、Babel),需运行对应命令:
npm run build # 执行打包、编译等操作
直接用node app.js启动会在终端关闭时终止进程,推荐用PM2(进程守护工具):
# 全局安装PM2
sudo npm install -g pm2
# 启动项目(根据package.json的scripts配置调整)
pm2 start npm --name "your-app-name" -- start # 若scripts中有"start": "node app.js"
# 或直接指定入口文件
pm2 start app.js --name "your-app-name"
# 常用命令
pm2 list # 查看运行中的应用
pm2 logs # 查看日志
pm2 save # 保存当前进程列表
pm2 startup # 设置开机自启(需执行提示的命令)
Nginx作为Web服务器,可将外部请求转发至Node.js应用(默认运行在3000等端口),提升性能与安全性:
# 安装Nginx
sudo apt install nginx
# 配置反向代理(编辑默认站点或新建配置文件)
sudo nano /etc/nginx/sites-available/your-app # 新建配置文件更规范
# 添加以下内容(修改server_name为你的域名/IP,proxy_pass为Node.js端口)
server {
listen 80;
server_name your-domain.com; # 替换为域名或IP
location / {
proxy_pass http://localhost:3000; # Node.js应用端口
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;
}
}
# 启用配置(删除sites-available中的默认文件,创建软链接至sites-enabled)
sudo rm /etc/nginx/sites-enabled/default
sudo ln -s /etc/nginx/sites-available/your-app /etc/nginx/sites-enabled/
# 测试配置并重启Nginx
sudo nginx -t # 检查语法
sudo systemctl restart nginx
允许HTTP(80)和HTTPS(443)流量通过,确保外部能访问:
sudo ufw allow 'Nginx Full' # 允许Nginx全部流量
sudo ufw enable # 启用防火墙(若未启用)
sudo ufw status # 查看防火墙状态
使用Let’s Encrypt免费获取SSL证书,提升网站安全性:
# 安装Certbot(Nginx版)
sudo apt install certbot python3-certbot-nginx
# 获取证书并自动配置Nginx
sudo certbot --nginx -d your-domain.com # 替换为你的域名
# 按提示完成验证,证书会自动安装至/etc/letsencrypt/live/your-domain.com/
证书有效期为90天,需设置自动续期:
sudo certbot renew --dry-run # 测试续期
.env文件,用dotenv库读取(不要提交至Git)。proxy_pass地址。按照上述步骤操作,即可完成Ubuntu环境下JS项目(Node.js)的稳定部署。