阿里云的连接及node部署

    技术2023-11-13  85

    阿里云的连接及node部署

    1、连接阿里云(系统版本centos7)

    1.1Xshell6_wm:使用命令行连接阿里云(不装软件的话,使用git bash也可以的)

    这里顺便记录下常用的指令
    /***********linux指令*************/ 1、pwd(print working directory):打印出当前目录路径的全名称 当前位于桌面:c:/users/用户名/desktop 2、ls(list):列举出当前目录(文件夹)下面的所有的子文件和子文件夹 ls可以列举任意目录下面的所有的子文件和文件夹 ls 指定目录路径 3、 .表示当前目录 ..表示上级目录 4、 cd(change directory) 切换当前位于的文件夹 cd 指定的文件夹路径 cd 默认情况下只能切换到当前目录下面的子目录 如果想要回到上级目录,应该使用:cd ../ ............上上级目录,应该使用:cd ../../ 5、命令名称 -选项1 -选项2 命令名称 -选项1选项2 ls -al===ls -a -l :列举当前目录下面的所有的子文件和文件夹,并且显示详细信息,同时包含了2个目录(.和..) 6、mkdir(make dirctory):创建文件夹 默认情况下,只能在当前目录下面创建文件夹 可以连续创建多个文件夹:mkdir a1 a2 a3 也可以在指定目录下面创建文件夹:mkdir 指定的文件夹路径/新文件夹名称 -->要确保指定的文件夹路径存在 mkdir 目录1/目录2/目录3 -p -->可以连续创建多级目录,哪怕目录1/目录2都不存在,如果某个目录不存在,先创建该目录,再创建子目录 7、删除文件夹:rmdir(remove directory):只能删除空文件夹 8、(慎用)rm -rf 递归删除指定的文件/文件夹 其中rm是删除文件 rm -f 如果说要删除的文件、文件夹不存在,不会显示错误信息 rm -r 递归删除(常用于删除非空文件夹) 9、创建文件:touch 含有后缀的文件名 默认是在当前目录下面创建指定的文件 连续的在当前目录下面创建多个文件 touch 文件夹/文件名:在指定文件夹下面创建指定的文件 10、cp:复制指定的文件 cp 源文件的路径(文件夹+文件名) 新文件的路径(文件夹) 11、mv(move):移动文件(剪切+粘贴) mv 源文件的路径(文件夹+文件名) 新文件的路径(文件夹) 移动并重命名: mv 源文件的路径(文件夹+文件名) 新文件的路径(文件夹)+新文件名 解压 mv node-v12.13.1-linux-x64.tar.xz /usr/local/ xz -d node-v12.13.1-linux-x64.tar.xz tar -xvf node-v12.13.1-linux-x64.tar 12、vi编辑器 12.1、vi 文件名:打开一个窗口,实现对该文件进行编辑 进入编辑模式:i或者a键 退出编辑模式:esc键 如果当前不处于编辑模式,想要实现保存的功能:":w" ......................想要实现退出的功能:":q" .....................想要实现保存并退出的功能:":wq" -->ps:如果当前位于编辑模式,应该首先退出编辑模式,然后再实现保存or退出的功能 /***********git指令*************/ 1、通过git init将当前文件夹进行初始化 -->一定要明确你要将哪个文件夹被git管理起来 2、在往git仓库中添加文件的时候,这些刚添加的文件,状态是:未追踪(Untracked) 3、git status可以查看仓库中的相关的文件状态 如果当前文件夹下面的某个文件夹是空的,不会显示在结果中 4、git add 文件名-->将指定的文件放到暂存区 把文件放到暂存区之后,状态是:待提交(changes to be committed) git add 指定目录-->将指定目录下面的文件放到暂存区 -->ps:如果当前仓库的根目录(.git文件夹位于的目录) git add .将仓库下面的没有被提交到暂存区的代码放到暂存区 git add * -->将当前仓库中的所有的没有被提交到暂存区的代码放到暂存区 -->git add命令不仅仅可以将新添加的文件放到暂存区,也可以将已修改的文件放到暂存区 5、关于用户名和邮箱的配置 -->如果从来没有过,在提交到本地主仓库之前不会有任何问题,但是git commit -m 都会提示你没有配置过,如果没有配置过,是无法正常提交代码 -->git config user.name xxx -->git config user.email xxx@qq.com -->可以通过--global选项实现在本机一次配置多次使用
    1.2xftp6:可视化连接阿里云

    2在阿里云安装必要的软件

    2.1 安装工具包
    yum install wget curl git -y
    2.2、安装nodejs
    方法一: 使用nvm安装(这个我没成功,并且我的是最便宜的服务器,下载东西网速太慢)
    //下载脚本并执行 wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash //添加至环境变量 source /root/.bashrc //安装node稳定版 nvm install stable node -v
    方法二: 使用下载安装包到阿里云手动解压安装(上面那个方法没效果,我是用这种方法装的)
    官网下载安装包

    下载好后用xftp连接阿里云,找到/usr/local路径,创建nodejs文件夹

    把下载好的node包拖到文件夹下,然后用Xshell连接并进入到文件夹下用指令进行解压
    解压tar文件 tar -xvf node-v12.13.1-linux-x64.tar 如果是.tar.xz后缀的文件,要进行两次解压,先进行xz的解压,再进行tar的解压 xz -d node-v12.13.1-linux-x64.tar.xz

    解压后效果

    手动配置环境变量(这种方法很low,但是个人觉得比较靠谱)
    1、你需要知道Linux下有两种环境变量 (1) /etc/profile 全局变量:配置后全局都能使用响应的命令,无论是不是root (2) ~/.profile 单个用户的变量,配置后只能单个用户使用 这里修改第一种环境变量,直接用xftp进入到etc文件夹,右键编辑profile文件

    export PATH=这里放软件bin路径:$PATH 编辑完成后执行 source /etc/profile 更新环境变量

    source /etc/profile

    运行node -v和npm -v指令能出现版本号就成功了

    2.3、安装cnpm
    // 修改npm源,不然装起来太慢了 npm config set registry https://registry.npm.taobao.org // 安装cnpm npm install -g cnpm --registry=https://registry.npm.taobao.org

    如果安装完成后,cnpm指令不识别,那用刚才修改环境变量的方法把cnpm也配置下 cnpm的bin路径在nodejs里面 /usr/local/nodejs/node-v12.18.1-linux-x64/lib/node_modules/cnpm/bin

    2.4、安装mongodb,我这边node服务依赖的数据库是mongodb,在启动服务之前需要装好数据库,并启动起来
    建议采用装node的方式安装,并配置环境变量 装好后创建数据文件夹和日志文件等 mkdir -p /usr/local/mongodb/mongodb-3.29/data touch /usr/local/mongodb/mongodb-3.29/mongod.log touch /usr/local/mongodb/mongodb-3.29/mongodb.conf 启动 //进入你安装的文件夹 cd /usr/local/mongodb/mongodb-3.29/bin //启动,启动后xshell窗口保留,再从开一个窗口操作 ./mongod --dbpath=/usr/local/mongodb/mongodb-3.29/data --logpath=/usr/local/mongodb/mongodb-3.29/mongod.log --logappend --port=27017 --fork
    2.5、安装pm2,启动node后端服务
    cnpm i pm2 -g

    如果安装完成后,pm2指令不识别,那用刚才修改环境变量的方法把pm2也配置下

    pm2可以用来运行node静态文件
    pm2常用指令 $ npm install pm2 -g # 命令行安装 pm2 $ pm2 start app.js -i 4 # 后台运行pm2,启动4个app.js # 也可以把'max' 参数传递给 start # 正确的进程数目依赖于Cpu的核心数目 $ pm2 start app.js --name my-api # 命名进程 $ pm2 list # 显示所有进程状态 $ pm2 monit # 监视所有进程 $ pm2 logs # 显示所有进程日志 $ pm2 stop all # 停止所有进程 $ pm2 restart all # 重启所有进程 $ pm2 reload all # 0 秒停机重载进程 (用于 NETWORKED 进程) $ pm2 stop 0 # 停止指定的进程 $ pm2 restart 0 # 重启指定的进程 $ pm2 startup # 产生 init 脚本 保持进程活着 $ pm2 web # 运行健壮的 computer API endpoint (http://localhost:9615) $ pm2 delete 0 # 杀死指定的进程 $ pm2 delete all # 杀死全部进程 $ pm2 serve 路径 端口 # 指令配置端口启动 $ pm2 serve . 9001 # 指令配置端口启动例子 $ pm2 start index.js --name "apiDemo" #根据node代码端口启动,命名进程

    3 部署后端项目,启动node服务

    3.1、克隆代码,下载到var文件下
    git clone https://gitee.com/用户名/server.git
    3.2、进入到项目文件夹的dist文件夹下,用pm2指令启动node服务
    pm2 start index.js --name "apiDemo" // 名字可以自定义

    如果出现以下页面就表明,服务启动成功了 验证接口是否成功

    curl http://localhost:9999 正常情况,我这边node做了成功校验,会出现下面这个,或者用postman去调写的接口,正常也ok了 {"success":true,"message":"hello world"} 如果包路由不存在,检查路由是否存在,存在还报的话,查看日志 pm2 logs 根据日志针对性解决

    4 部署前端项目

    4.1、进入var文件夹下,创建www文件夹,将前端打包后的dist文件夹拖进去,文件夹名可以自定义,我这里是apiDemo

    4.2 配置 nginx
    nginx 默认配置文件在 /etc/nginx/nginx.conf有两个关键配置,没有的话,需要加上 include /etc/nginx/conf.d/*.conf; //包含其它nginx配置文件 include /etc/nginx/sites-enabled/*; //添加其它站点配置 进入 sites-enabled 目录并且添加一个配置文件apiDemo cd /etc/nginx/sites-enabled cp default apiDemo

    配置文件apiDemo内容如下

    server { listen 80; #监听的端口号 server_name 47.93.7.188; #服务器的IP或者域名,如果使用域名的话需要备案 root /var/www/zhufengketang; # 静态文件根目录,去哪个目录里找静态文件 index index.html index.htm index.nginx-debian.html;# 默认文件名 location / { try_files $uri $uri/ /index.html; } location ~ \/(user|slider|lesson|uploads) { #t重定向后端接口,端口和你node的端口要一致 proxy_pass http://127.0.0.1:9999; } }

    然后重新加载 nginx 配置文件

    nginx -s reload // 如果报错的话,重启nginx service nginx restart

    然后布署就完成了,就可以在浏览器打开此应用了

    http://47.93.7.188/
    Processed: 0.011, SQL: 9