You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过SFTP运行含Node.js、Express、MySQL的网站?

部署Node.js/Express/MySQL站点的后续操作

首先明确:SFTP仅用于文件传输,没法直接执行命令,你得通过SSH连接(不是SFTP)来运行node index.js这类指令。等管理员帮你搞定npm install的权限问题后,按下面的步骤操作:

1. 确认服务器环境依赖

  • 检查服务器Node.js版本:执行node -v和npm -v,确保版本和你开发环境兼容,避免版本差异出问题。
  • 确认MySQL服务状态:执行systemctl status mysql(Debian/Ubuntu)或systemctl status mysqld(CentOS/RHEL),没运行的话就启动:sudo systemctl start mysql,再设置开机自启:sudo systemctl enable mysql。

2. 配置数据库连接

  • 修改项目里的数据库配置文件(比如config.js),把开发环境的参数换成服务器的MySQL信息:
    • 主机填localhost(如果MySQL和Node服务在同一服务器)
    • 用服务器上专门创建的MySQL账户(别用root账户跑生产环境)
    • 提前在服务器MySQL里建好对应数据库:登录MySQL后执行CREATE DATABASE your_db_name;
  • 测试连接:可以写个简单的测试脚本跑一下,或者启动服务后看日志确认连接正常。

3. 持久化启动Node.js服务

直接用node index.js启动的话,SSH会话一关服务就停了,得用进程管理工具让服务一直跑:

  • 用pm2(最常用方案):
    1. 全局安装pm2:npm install -g pm2(还是有权限问题就找管理员帮忙)
    2. 启动服务:pm2 start index.js --name "你的应用名"
    3. 设置开机自启:pm2 startup,跟着提示执行生成的命令
    4. 查看状态:pm2 status,看日志:pm2 logs 你的应用名
  • 用systemd(规范生产环境方案):
    创建/etc/systemd/system/你的应用名.service文件,内容示例:
    [Unit]
    Description=你的Express应用
    After=network.target
    
    [Service]
    User=你的服务器用户名
    WorkingDirectory=/你的项目路径
    ExecStart=/usr/bin/node index.js
    Restart=always
    Environment=NODE_ENV=production
    
    [Install]
    WantedBy=multi-user.target
    
    然后执行:
    sudo systemctl daemon-reload
    sudo systemctl start 你的应用名
    sudo systemctl enable 你的应用名
    

4. 配置端口与访问规则

  • 开放端口:Express默认跑3000端口,服务器防火墙要开这个端口:sudo ufw allow 3000(Debian/Ubuntu)或sudo firewall-cmd --add-port=3000/tcp --permanent && sudo firewall-cmd --reload(CentOS/RHEL)。
  • 反向代理(用域名访问的话):如果要通过80/443端口(HTTP/HTTPS)访问,得配Nginx或Apache做反向代理。以Nginx为例:
    创建配置文件/etc/nginx/sites-available/你的域名.conf:
    server {
        listen 80;
        server_name 你的域名.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/你的域名.conf /etc/nginx/sites-enabled/,测试配置:sudo nginx -t,重启Nginx:sudo systemctl restart nginx。

5. 生产环境优化

  • 设置生产环境变量:启动服务前加NODE_ENV=production,比如NODE_ENV=production pm2 start index.js,或者在systemd配置里加(上面示例已包含),这会让Express进入生产模式,优化性能并减少冗余日志。
  • 清理冗余文件:别把node_modules、.git、开发环境配置文件传到服务器,用.gitignore或者WinSCP手动排除,省空间还避免泄露敏感信息。
  • 定期备份数据库:用cron设置定时任务,定期备份MySQL数据库,防止数据丢失。

内容的提问来源于stack exchange,提问作者Kevin Foendoe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 22:33:14