Nodejs项目部署阿里云完整流程

nodejs项目部署阿里云完整流程

  • 参考文档:http://blog.youkuaiyun.com/chenlinIT/article/details/73343793
  • 细节注意:1.启动nodejs服务需要开启两个阿里云主机窗口,一个是数据库mongoose服务,一个是nodejs服务器 2.如果nodejs服务器监听你的阿里云主机ip失败,可以尝试使用0.0.0.0。(因为阿里云限制了端口号的,官方说是3398端口但是笔者尝试无效,0.0.0.0的ip表示监听当前主机所有端口号)

1.1-准备工作

  • 1.运行一个nodejs程序需要哪些流程

    • (1)你的电脑安装了node
    • (2)你的电脑安装了npm
      • 默认情况下安装了node,npm也一并安装了
    • (3)你的电脑安装了数据库
      • 通常nodejs项目使用mongodb数据库
    • (4)编写你的项目源代码
    • (5)启动mongodb服务
      • cd到mongodb安装包路径使用终端命令:mongod --dbpath=[你的data文件夹路径]
    • (6)启动node运行你的程序
      • cd到node.exe所在目录使用终端命令:node [你的项目服务器入口文件app.js路径]
        • 默认情况下安装node会自动帮你配置环境变量,我们可以在任意目录下使用node命令
  • 2.服务端项目部署到阿里云的原理

    • 无非只是将上一步的所有流程都安装在阿里云的主机上
      • 可以理解为:购买了阿里云的服务器之后,阿里云给你单独准备了一台可以外网访问的电脑,然后我们要在这台电脑上来运行我们的nodejs程序

1.2-从零开始部署你的nodejs项目

  • 1.进入阿里云购买一个服务器

这里写图片描述

这里写图片描述

  • 2.购买域名
    • 没啥好说的,域名越好,价格越贵

这里写图片描述

  • 3.购买数据库【可选】
    • 我们购买服务器之后,默认服务器有一定的存储空间,如果用户量不是很大,没有必要单独买数据库
    • 数据库的配置都是一样,如果是想学习nodejs开发,可以不买,直接使用服务器主机存储,能省一点钱是一点钱

这里写图片描述

  • 4.进入控制台,开始部署项目

这里写图片描述

  • 找到你刚才购买的轻量服务器

这里写图片描述

这里写图片描述

  • 注意:服务器的终端是基于linux,与mac系统是一样的,与windows系统部分命令有一些区别

这里写图片描述

  • 5.绑定域名:点击刚才的nodejs服务器进入详情界面绑定域名

这里写图片描述

  • 6.使用XShell远程连接服务器

    • 默认情况下,我们操作远程服务器是在阿里云的页面上点击远程连接,他会在网页上弹出你的远程服务器的终端窗口,我们直接这样操作不方便,使用XShell工具可以可视化的看到你的远程服务器上的一些文件
    • SChell还有一个好处就是我们将写好的nodejs项目文件上传到远程服务器更加方便
    • 下载地址自行百度,这里笔者给出一个参考下载地址:http://rj.baidu.com/soft/detail/15201.html?ald
  • 安装之后打开XShell面板

这里写图片描述

这里写图片描述

  • 7.配置阿里云服务器电脑的node环境和npm环境

  • 使用ls命令查看服务器的文件列表

  • 使用cd命令进入对应文件夹
  • 使用node -vnpm -v检查你的node版本和npm版本
    • 默认情况下阿里云已经配置好了node和npm
  • 如果想要升级你的阿里云服务器的node版本和npm版本,按照顺序在终端输入以下命令(可选)

    • wget命令下载Node.js安装包:wget https://nodejs.org/dist/v6.9.5/node-v6.9.5-linux-x64.tar.xz
      • 该安装包是编译好的文件,解压之后,在bin文件夹中就已存在node和npm,无需重复编译。
    • 解压文件:tar xvf node-v6.9.5-linux-x64.tar.xz
  • 8.安装mongodb

    • 在终端输入命令等待安装:wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.4.5.tgz
      • 耗时比较长,请耐心等待
    • 解压安装包:tar zxvf mongodb-linux-x86_64-3.4.5.tgz
    • 重命令文件夹为mongodb:mv mongodb-linux-x86_64-3.4.5 mongodb
    • 创建存放mongodb数据的data文件夹:mkdir /root/mymongodbmkdir /root/mymongodb/data
      • 注意:这里的/root指的是你的阿里云服务器根目录的名字,默认为root
  • 9.启动mongodb

    • cd到你的mongodb的bin目录,例如我的mongodb安装路径为:cd /root/mongodb/bin
    • 运行mongodb服务:mongod --dbpath=[刚才创建的data文件夹路径],例如我这里是mongod --dbpath=/root/mymongodb/data

这里写图片描述

这里写图片描述

  • 如果出现wating for connection on port 27017表示成功

    • 是不是感觉和在自己电脑部署基本一样?别急,才刚刚一半
  • 10.mongodb服务需要单独占用一个终端窗口,所以暂时目前终端窗口不动,我们另起一个窗口来启动我们的nodejs项目

  • 11.等等?目前我们的服务器上有我们的终端项目吗?好像没有吧?

    • 所以关键的第11步,我们需要将我们的源代码部署到阿里云服务器主机上
  • 12.下载Xftp

  • 13.利用Xshell来启动Xftp

    • Xftp下载后我们放一边,无需单独启动,因为只要你安装了Xftp,就可以使用Xshell来启动
      • 如果你单独配置Xftp一定要注意端口号与我们的Xshell一致,仔细往上翻图片可以看到我的Xshell端口号是22

这里写图片描述

  • 14.上传nodejs项目文件到阿里云服务器
    • 启动xftp也需要输入你的服务器密码,别忘记了
    • 右边是你的本地项目,左边是你的阿里云主机目录,直接拖拽即可

这里写图片描述

  • 15.在阿里云服务器启动你的nodejs项目

  • 重点,重点,重点

    • 1.app.js文件监听的端口号不能写成你的服务器ip地址,建议写成0.0.0.0
      • 原因一言难尽,因为你不知道阿里云到底允许你监听什么端口(不知道什么端口是有权限监听的)
      • 0.0.0.0与127.0.0.1都是指本机ip,他们唯一的的区别是,0.0.0.0相当于监听了这台服务器的所有端口
    • 2.Xshell的那个mongodb的窗口千万别关,我们需要再开一个窗口来启动我们的nodej项目

//4.监听端口号
server.listen(3000,'0.0.0.0',function () {
    console.log('服务器启动成功');
});

这里写图片描述

  • 16.大功告成,直接在任何联网设备输入你的域名即可,这里我就用我的iphone输入我的域名咯
    • 重点,重点,重点
      • 1.如果域名未备案,会弹出该网站禁止访问,要求备案的页面,不用管,多刷新几次就OK
        • 4G网络百分百不行,wifi刷新几次就可以
      • 2.你的nodejs项目中除开导入模块之外,其他任何地方都不能出现相对路径./,原因是nodejs中的相对路径是相当于你输入node命令所在的目录而言的

这里写图片描述

  • 补充说明,我们可以在终端中使用vim来在线修改代码,关于vim操作自行百度
    • viw [文件路径]:查看文件源代码
    • 键盘i:进入编辑
    • 键盘esc退出编辑
    • 控制台:wq:保存并且退出vim
<think>好的,我需要帮助用户了解如何将Node.js应用程序部署阿里云ECS实例,并连接MySQL数据库。根据用户提供的引用内容,我需要整合这些信息,并生成一个结构清晰的教程。首先,我要确认用户的问题核心是部署Node.js和配置MySQL,所以步骤需要涵盖这两个方面。 首先,我需要回顾用户提供的引用内容。引用2提到在阿里云部署Node+MySQL,需要配置root用户的host为%,允许远程连接。引用3和4涉及使用宝塔面板安装Nginx、MySQL和PM2,以及通过Navicat连接数据库的SSH和常规设置。引用4还提到修改Node.js中的数据库连接配置,使用阿里云主机的IP和数据库密码。 接下来,我需要将这些信息整理成一个逻辑流程。可能的步骤包括:准备阿里云ECS实例、安装必要软件(Node.js、MySQL)、配置MySQL远程访问、部署Node.js应用、使用PM2管理进程、配置Nginx反向代理,以及测试连接。此外,需要注意安全组设置,开放相关端口(如22, 80, 443, 3306),以及数据库权限的修改。 需要确保每个步骤都清晰,并正确引用提供的资料。例如,在配置MySQL时,引用2中的SQL命令需要准确无误地展示,同时提醒用户安全风险。在部署Node.js应用部分,引用4提到的修改数据库连接配置的步骤要详细说明。使用宝塔面板安装软件的部分可以参考引用3,但需要简化说明,避免过于复杂。 另外,要注意用户可能遇到的常见问题,比如防火墙设置、权限错误、连接超时等,应在注意事项中提及。同时,强调安全措施,如使用强密码、限制root用户的远程访问,以及定期备份的重要性。 最后,生成相关问题,帮助用户深入理解可能遇到的扩展问题,比如性能优化、HTTPS配置、数据库备份和负载均衡等。这些问题需要与教程内容相关,并且有实际参考价值。 总结步骤: 1. 准备ECS实例:创建实例,配置安全组,登录实例。 2. 安装环境:Node.js、MySQL,使用宝塔面板或手动安装。 3. 配置MySQL:允许远程连接,创建专用用户,授权。 4. 部署Node.js应用:上传代码,安装依赖,配置数据库连接。 5. 使用PM2管理进程:安装PM2,启动应用。 6. Nginx反向代理:安装配置Nginx,设置代理规则。 7. 测试与验证:检查应用运行状态和数据库连接。 每个步骤需要详细说明,并正确引用提供的资料中的方法,确保用户能够一步步跟随操作,同时注意潜在的问题和解决方案。</think>### 如何将Node.js应用程序部署阿里云ECS并连接MySQL数据库? 以下是分步部署教程,整合了阿里云ECS实例配置、Node.js环境搭建、MySQL数据库连接及安全优化: --- #### **一、准备阿里云ECS实例** 1. **创建ECS实例** - 登录阿里云控制台,选择ECS实例,根据需求选择操作系统(如CentOS 7/8)。 - 配置安全组,开放以下端口: - SSH端口(22)、HTTP(80)、HTTPS(443)、MySQL(3306)[^4]。 2. **登录ECS实例** ```bash ssh root@<ECS公网IP> # 使用实例密码登录 ``` --- #### **二、安装Node.js与MySQL** 1. **安装Node.js** 通过NodeSource脚本安装指定版本(如Node.js 16.x): ```bash curl -fsSL https://rpm.nodesource.com/setup_16.x | bash - yum install -y nodejs node -v # 验证安装 ``` 2. **安装MySQL数据库** - 添加MySQL官方Yum仓库并安装: ```bash wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm sudo yum install mysql80-community-release-el7-3.noarch.rpm sudo yum install mysql-community-server ``` - 启动MySQL并设置开机自启: ```bash systemctl start mysqld systemctl enable mysqld ``` --- #### **三、配置MySQL远程连接** 1. **修改root用户权限** - 登录MySQL并修改`root`用户的访问权限: ```sql mysql -u root -p # 输入初始临时密码 ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; -- 修改密码 USE mysql; UPDATE user SET host='%' WHERE user='root'; -- 允许远程连接[^2] FLUSH PRIVILEGES; ``` - **注意**:建议创建专用数据库用户而非直接使用`root`[^4]。 2. **创建专用数据库用户**(可选) ```sql CREATE USER 'app_user'@'%' IDENTIFIED BY 'strong_password'; GRANT ALL PRIVILEGES ON your_database.* TO 'app_user'@'%'; FLUSH PRIVILEGES; ``` --- #### **四、部署Node.js应用程序** 1. **上传代码到ECS** - 使用`scp`或SFTP工具上传项目文件: ```bash scp -r ./node-app root@<ECS公网IP>:/opt/ ``` 2. **安装依赖并配置数据库连接** - 在项目目录中修改数据库配置文件(如`config.js`): ```javascript module.exports = { db: { host: 'ECS公网IP', // 改为ECS实例的公网IP[^4] user: 'app_user', password: 'strong_password', database: 'your_database' } }; ``` - 安装依赖并运行: ```bash cd /opt/node-app npm install node app.js # 测试运行 ``` 3. **使用PM2管理进程** - 全局安装PM2并启动应用: ```bash npm install -g pm2 pm2 start app.js --name "node-app" pm2 save pm2 startup # 设置开机自启 ``` --- #### **五、配置Nginx反向代理(可选)** 1. **安装Nginx** ```bash yum install nginx systemctl start nginx ``` 2. **配置代理规则** - 编辑`/etc/nginx/conf.d/node-app.conf`: ```nginx server { listen 80; server_name your_domain.com; location / { proxy_pass http://localhost:3000; # Node.js应用端口 proxy_set_header Host $host; } } ``` - 重启Nginx: ```bash nginx -s reload ``` --- #### **六、测试与验证** 1. **检查应用运行状态** - 访问`http://ECS公网IP:3000`(直接访问Node.js)或通过域名(Nginx代理)。 2. **验证数据库连接** - 在Node.js应用中执行数据库操作(如查询),观察是否返回预期结果。 - 使用Navicat等工具测试远程连接: - SSH连接(端口22,ECS实例密码) - 常规连接(端口3306,数据库账号密码)。 --- #### **注意事项** 1. **安全建议** - 避免直接使用`root`用户远程连接MySQL,优先创建专用用户[^2]。 - 定期备份数据库,使用SSL加密连接(如需更高安全性)。 - 配置阿里云安全组,仅允许必要端口的访问。 2. **常见问题** - **连接超时**:检查安全组规则和MySQL的`bind-address`配置。 - **权限错误**:确认数据库用户是否有远程访问权限。 --- ###
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值