ubuntu下如何部署js应用
1. 准备工作:更新系统与安装基础工具
首先更新Ubuntu系统包列表,确保后续安装的软件包是最新版本:
sudo apt update &
&
sudo apt upgrade -y
安装常用工具(如git
用于代码托管库克隆、build-essential
用于编译原生模块):
sudo apt install -y git build-essential
2. 安装Node.js与npm
Node.js是JS应用的运行环境,npm用于管理项目依赖。推荐通过NodeSource PPA安装稳定版本(避免默认仓库版本过旧):
# 导入NodeSource仓库密钥并添加仓库
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
# 安装Node.js(包含npm)
sudo apt install -y nodejs
# 验证安装
node -v # 输出版本号(如v18.x.x)
npm -v # 输出版本号(如9.x.x)
若需灵活管理多版本Node.js,可使用nvm
(Node Version Manager):
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc
nvm install 18 # 安装指定版本
nvm use 18 # 切换版本
3. 上传与配置项目代码
将本地JS应用上传至服务器(以my-js-app
为例):
- 使用
scp
(命令行):scp -r /local/path/to/my-js-app user@your_server_ip:/remote/path/to/deploy
- 使用Git(推荐):
cd /remote/path/to/deploy git clone < your-repo-url> . # 克隆仓库到当前目录
进入项目目录,安装依赖(生产环境建议添加--production
参数,仅安装必需依赖):
cd /remote/path/to/deploy/my-js-app
npm install --production
若项目需要环境变量(如数据库连接字符串、API密钥),在项目根目录创建.env
文件:
PORT=3000
NODE_ENV=production
DB_HOST=mongodb://localhost:27017/myapp
并安装dotenv
包(用于加载.env
文件):
npm install dotenv --save
在应用入口文件(如app.js
)顶部添加:
require('dotenv').config();
4. 启动应用:使用PM2进行进程管理
直接使用node app.js
启动应用会在终端关闭时终止,PM2是生产环境的推荐工具(支持后台运行、自动重启、日志管理)。
安装PM2(全局模式):
sudo npm install -g pm2
启动应用(以app.js
为例,自定义名称为my-js-app
):
pm2 start app.js --name "my-js-app"
常用PM2命令:
pm2 list # 查看运行中的应用列表
pm2 status # 查看指定应用状态
pm2 logs # 查看应用日志(实时输出)
pm2 restart my-js-app # 重启应用
pm2 stop my-js-app # 停止应用
设置PM2开机自启动(避免服务器重启后应用停止):
pm2 startup
按照终端提示运行生成的命令(如sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u your-user --hp /home/your-user
)。
5. 配置Nginx反向代理(可选但推荐)
Nginx可作为反向代理,将外部HTTP/HTTPS请求转发至Node.js应用(默认运行在3000端口),同时提供静态文件服务、SSL加密等功能。
安装Nginx:
sudo apt install -y nginx
配置Nginx站点:
sudo nano /etc/nginx/sites-available/my-js-app
添加以下内容(替换your_domain.com
为你的域名或服务器IP):
server {
listen 80;
server_name your_domain.com;
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;
}
# 可选:静态文件缓存(提升性能)
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 30d;
add_header Cache-Control "public";
}
}
启用配置并重启Nginx:
sudo ln -s /etc/nginx/sites-available/my-js-app /etc/nginx/sites-enabled/
sudo nginx -t # 测试配置语法(无错误则继续)
sudo systemctl restart nginx
开放防火墙端口(若启用ufw
):
sudo ufw allow 'Nginx Full' # 允许HTTP(80)和HTTPS(443)
sudo ufw enable # 启用防火墙
```。
**6. 配置SSL证书(可选但强烈推荐)**
使用Let's Encrypt免费获取SSL证书,实现HTTPS加密(提升安全性与SEO排名)。
安装Certbot(Nginx插件):
```bash
sudo apt install -y certbot python3-certbot-nginx
获取并自动配置证书:
sudo certbot --nginx -d your_domain.com -d www.your_domain.com
按照提示完成配置(Certbot会自动修改Nginx配置,添加SSL监听端口与重定向规则)。
设置证书自动续期(Let’s Encrypt证书有效期为90天):
sudo certbot renew --dry-run # 测试自动续期
Certbot会自动添加cron
任务,无需手动干预。
7. 监控与维护
- 查看应用状态:
pm2 list
- 查看实时日志:
pm2 logs my-js-app
- 监控资源使用:
pm2 monit
(显示CPU、内存占用) - 更新依赖:定期运行
npm outdated
查看过时依赖,使用npm update
更新(生产环境需测试后再更新) - 备份项目:定期备份项目文件(如
/remote/path/to/deploy
)与数据库(如MongoDB的mongodump
命令)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: ubuntu下如何部署js应用
本文地址: https://pptw.com/jishu/731373.html