服务器小白从0到项目部署完成的总结记录,包含Nginx、Linux、Mongodb、NodeEgg等
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
目录
前言
昨天我们基建团队开分享会讲的是优化我们项目部署的整体流程什么OSS、rides作为前端开发的我这听的一脸懵领导还总Q我哎不行了必须要学一学整体流程还有公司是如何部署的了
准备工作
下面带着大家一步一步操作本项目使用的nodeEgg后台下面是我的项目部署完成后的样子本身项目逻辑比较简单我们走一遍部署流程主要包含Linux指令、安装mongodb服务最烦人、安装node环境、nginx的基本使用主要部署前端项目、配置代理、Linux按装git
服务器
链接走你 阿里云服务器可以免费领取一个月
领取完了就是这个样子可能大家跟我一样没有太多接触过服务器不过可以领取一个自己尝试尝试部署下服务
xshell
用于远程连接服务器温馨提示虽然阿里云服务器有连接功能但是没有这款软件强大它提供一个linux环境去连接我们的服务器
下载链接走你
填写下邮件随后会发一个链接到你邮件然后可以下载不过只能免费使用30天哦
点击下一步默认是C盘我们可以把他安装到D盘
这个是选择下该图片的位置可以自己选择
点击关闭
随后出现
点击新建
连接服务器名称、和主机地址
温馨提示是我们上述的服务器的外网地址哟
点击用户身份验证
出现这个代表连接成功了这个一个Linux系统我先把Linux常用指令放到这里哈
Linux基础指令
#显示该文件下的所有文件
ll
#进入或退出文件
cd 文件夹名 进入
cd ./ 退出一层
cd ../ 退出两层
#显示文件中内容不可编辑注意是文件不是文件夹
cat 文件名
# 远程连接命令
ssh root@域名
#编辑文件注意不是文件夹
vim abc.html
刚进去的时候是操作不了的点一下字母i即可它代表insert增意思
放弃编辑并丢弃编辑信息 :qa Enter quit 放弃
保存文件 ESC :wq Enter write写入
# 展示当前文件夹路径
pwd
# 切换文件夹目录
cd 目录路径
# 展示当前文件夹中内容
ls
# 编辑文件
vim 文件路径
# 传输文件
scp 本地文件路径 root@域名:远程路径
#把window的文件传输到linux中
rz
rz之后可以选择某个文件这个文件会在/root根目录下可以把它移到你想要的目录下
cd /usr/local/
mv /root/node-v18.13.0-linux-x64.tar.xz ./
这样就移动到这个文件下了
#解压
tar -vxf node-v18.13.0-linux-x64.tar.xz//tar 对应的事tar后缀的unzip对应是zip文件
#进入环境变量
vim /etc/profile
更新完环境变量必须要
source /etc/profile
#把node文件放到环境变量中
ln -s /usr/local/node/node-v18.13.0-linux-x64/bin/npm /usr/local/bin/npm
ln -s /usr/local/node/node-v18.13.0-linux-x64/bin/node /usr/local/bin/node
#删除单个文件
rm
#删除文件夹
rm -rm
#重命名文件
mv 文件路径 重命名文件名字
#查看当前进程
ps -ef|grep nginx
#杀死进程
kill -QUIT 1282
#查找位置
which nginx
netstat -tlnp
安装node环境
1.服务器系统alibaba服务器系统 2.数据库mongodb版本v14.17.4 3.软件安装目录 /usr/local/node 4.配置node环境变量: /etc/profile
#进入文件夹或者也可以自己找个文件文件夹
cd usr/local/node
#下载node安装包
wget https://nodejs.org/dist/v14.17.4/node-v14.17.4-linux-x64.tar.xz
也可以官网https://nodejs.org/en/download/找自己喜欢的版本下载
#解压
tar xf node-v14.17.4-linux-x64.tar.xz //tar对应的是tar后缀的unzip对应是zip文件
#查看
ls
就会看到node-v14.17.4-linux-x64.tar.xz 和 node-v14.17.4-linux-x64两个文件
#删除我们的压缩文件也可以不删除
rm -rf node-v14.17.4-linux-x64.tar.xz
#重名题
mv node-v14.17.4-linux-x64.tar.xz node
之后就看到我们的文件夹变成node文件夹了
以上就是简单安装node环境的基本指令下面是我们的环境遍历不部分
设置环境变量是可以让我们在我们linux系统的任何位置去访问否则只能在我们可执行文件的文件夹内访问
1、执行
1、执行
vim /etc/profile
2、输入i代表insert新增数据
3、在文件底部添加环境变量
export NODEJS_HOME=/usr/local/node
export PATH=$NODEJS_HOME/bin:$PATH
4、退出保存
点击Esc
输入冒号:
输入wq
回车即可
我们测试下哈
打完收工
安装mongodb环境
1.服务器系统alibaba服务器系统
2.数据库mongodb版本 v4.0.6
3.软件安装目录 /usr/local/mongodb
4.数据存放位置/mongodb/data
5.日志存放位置/mongodb/logs
6.配置mongodb环境变量: /etc/profile
cd /usr/local
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.6.tgz
tar zxvf mongodb-linux-x86_64-4.0.6.tgz
mv mongodb-linux-x86_64-4.6.0 mongodb
rm -rf mongodb-linux-x86_64-4.0.6.tgz
cd mongodb
mkdir /data //存放mongodb数据
mkdir /logs //存放mongodb日志
cd mongodb/bin
vim mongod.conf//编辑文件
如下内容
systemLog:
destination: file
path: /mongodb/logs/log.log
logAppend: true
storage:
dbPath: /mongodb/data
net:
bindIp: 127.0.0.1
security:
authorization: enabled
1vim /etc/profile
2按i
3export PATH=$PATH:/usr/local/mongodb/bin
4点击Esc、输入冒号:、输入wq、回车即可
/usr/local/mongodb/bin/mongod --dbpath=/mongodb/data --logpath /mongodb/logs/log.log --logappend --port 27017 --fork
或者在我们的文件中bin目录下直接输入
./mongod --dbpath=/mongodb/data --logpath /mongodb/logs/log.log --logappend --port 27017 --fork
输入mongo
mongo
Linux的git安装
我们在项目做完的时候不可能一直通过压缩传会超级痛苦刚开始我为了省事直接就压缩不愿意玩git后来发现是我傻了哈哈哈太懒了我们来配置下git和他的密钥添加
centos:
yum install git
ubuntu:
apt-get install git
git --version
1、名字和邮箱
1.git config --global user.name "liubao"
2.git config --global user.email "liubao@xxx.com"
2、添加密钥
ssh-keygen -C ‘xxx@joyulf.com’ -t rsa 一路回车确认yes
3、打开生成的密钥
vim /root/.ssh/id_rsa.pub
复制
4、git clone 即可哟
Nginx简介
介绍
Nginx是一个高性能的HTTP服务器代理实现对HTTP请求的处理把HTTP请求拦截下来之后交给服务器处理
主要作用
负载均衡建立在现有网络结构之上它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
负载均衡其意思就是分摊到多个操作单元上进行执行例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等从而共同完成工作任务。简单来说就是现有的请求使服务器压力太大无法承受所有我们需要搭建一个服务器集群去分担原先一个服务器所承受的压力那现在我们有ABCD等等多台服务器我们需要把请求分给这些服务器。
将简单的静态资源请求交给自己这方面Nginx性能也比较优越或者其它服务器处理将动态资源请求交给其它服务处理。
安装Nginx
温馨提示我使用的Windows进行演示的如果您要部署项目、已经安装了上述的Xshell并且使用的阿里云服务器这个nginx不用安装他在服务器上已经自带了
链接走你http://nginx.org/en/download.html
我选择的一个稳定的版本
温馨提示不能使用中文字符、空格目录
目录介绍
confNginx核心配置文件所在目录其中重要的是nginx.conf文件。温馨提示最重要的
logs日志目录其中最主要的是errs.log文件如果启动之后在任务管理器没有看到程序启动可以通过分析该文件的错误输出定位问题。
temp存放临时文件的目录。
html存放静态资源的目录当然你也可以在nginx.conf配置文件种指定其它位置。
主要命令
温馨提示在nginx.exe目录下使用cmd进入命令行
输入命令start nginx就会弹出一个窗口代表启动成功
nginx -s stop或者nginx -s quit关闭nginx
nginx -s stop会有序的关闭程序不会丢失代码nginx -s quit会直接关闭可能会丢失代码
代表关闭成功
Nginx使用
这个是Nginx最有用也是最核心的功能。一个Nginx可以配置多个虚拟服务器。Nginx通过监听80端口接收到HTTP请求然后通过虚拟服务器的配置规则和条件将请求转发到其它服务器。 这就是实现负载均衡的主要技术原理。
我们打开conf/nginx.conf文件如下图所示就是Nginx默认配置了一个虚拟服务器
- listen 80; 监听所有80端口的访问。
- server_name localhost; 监听主机名为localhost的访问。
当以上条件满足时执行以下规则
location / { //代表只要访问根路径就执行以下内容
root html; 指定访问路径为当前html目录
index index.html index.htm; 如果不指定资源默认访index.html 或者 index.htm
}
也就是如果你访问localhost这个”域名“不指定访问哪个页面我就默认给你index.html 或者 index.htm。
我们来验证一下。
我们编辑 html/index.html
证明了虚拟机配置所代表的含义。
下面还有一段配置代表当出现500、502、404等错误时访问/50x.html而location又指明50x.html的路径也在当前html目录
正向代理、反向代理
正向代理
正向代理类似一个跳板机代理访问外部资源。
我是一个用户我访问不了某网站但是我能访问一个代理服务器这个代理服务器呢,他能访问那个我不能访问的网站于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容代理服务器去取回来,然后返回给我。从网站的角度只在代理服务器来取内容的时候有一次记录有时候并不知道是用户的请求也隐藏了用户的资料这取决于代理告不告诉网站。
客户端必须设置正向代理服务器当然前提是要知道正向代理服务器的IP地址还有代理程序的端口。
正向代理 是一个位于客户端和原始服务器之间的服务器为了从原始服务器取得内容客户端向代理发送一个请求并指定目标(原始服务器)然后代理向原始服务z器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。
1访问原来无法访问的资源如google
2 可以做缓存加速访问资源
3对客户端访问授权上网进行认证
4代理可以记录用户访问记录上网行为管理对外隐藏用户信息
反向代理
初次接触方向代理的感觉是客户端是无感知代理的存在的反向代理对外都是透明的访问者者并不知道自己访问的是一个代理。因为客户端不需要任何配置就可以访问。反向代理Reverse Proxy实际运行方式是指以代理服务器来接受internet上的连接请求然后将请求转发给内部网络上的服务器并将从服务器上得到的结果返回给internet上请求连接的客户端此时代理服务器对外就表现为一个服务器。
1保证内网的安全可以使用反向代理提供WAF功能阻止web攻击
大型网站通常将反向代理作为公网访问地址Web服务器是内网。
2负载均衡通过反向代理服务器来优化网站的负载
二者区别
部署后端项目
因为我们已经安装了git我们直接git clone 就好了
我把前后端项目放到一起了我直接就搞好了如下
dbfront_front前端项目
egg-serve后端项目
我们在启动后端项目的时候一定要启动mongodb
/usr/local/mongodb/bin/mongod --dbpath=/mongodb/data --logpath /mongodb/logs/log.log --logappend --port 27017 --fork
mongo
cd egg-serve
npm install
#由于我们的Egg项目已经内置了pm2所以我们就不用安装了、在window的时候启动项目事npm run dev
#而在我们linux为了不占服务的页面我们的egg直接内置了
npm run start
后端服务部署成功
部署前端项目
linux通过git指令把前端的代码获取到随后把使用 npm run build
进行打包
打包后会生成一个dist文件而这里面由打包出的index文件在上面我们们知道nginx是通过路由来匹配index文件所以我们把这个index放到我们的对应nginx路径下就好了
我们使用的阿里云服务器已经自带nginx了
搜索nginx文件
which nginx
我们进入文件找到
主要配置文件在nginx文件下的conf文件总体配置在nginx.conf中而这个文件只要引用的是vhost文件从而实现了我们的模块化
之后
cd vhost
vim dbfront.conf//必须是conf结尾才能识别进入vhost创建并边界dbfront.conf
输入代码并退出保存
server {
listen 3001;
location / {
root /dangbo/react-egg/dbfront_front/dist;
index index.html;
}
#看项目需不需要配置代理由于我的项目需要cookie问题所以在nginx配置了代理
location /nodeServe{
#匹配我们的nodeServe服务发送到我们刚才启动的nodeEgg服务7001
proxy_pass http://127.0.0.1:7001;
}
}
最后
输入我们服务器地址端口嘎嘎
http://116.62.175.219:3001/#/login
走你