阿里云的连接及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
进入 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
service nginx restart
然后布署就完成了,就可以在浏览器打开此应用了
http
://47.93.7.188/