服务器小白从0到项目部署完成的总结记录,包含Nginx、Linux、Mongodb、NodeEgg等

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

目录

前言

准备工作

服务器

xshell

Linux基础指令

安装node环境

安装mongodb环境

Linux的git安装

Nginx简介

介绍

主要作用

安装Nginx

目录介绍

主要命令

Nginx使用

正向代理、反向代理

正向代理

反向代理

二者区别

部署后端项目

部署前端项目


前言

昨天我们基建团队开分享会讲的是优化我们项目部署的整体流程什么OSS、rides作为前端开发的我这听的一脸懵领导还总Q我哎不行了必须要学一学整体流程还有公司是如何部署的了

准备工作

下面带着大家一步一步操作本项目使用的nodeEgg后台下面是我的项目部署完成后的样子本身项目逻辑比较简单我们走一遍部署流程主要包含Linux指令、安装mongodb服务最烦人、安装node环境、nginx的基本使用主要部署前端项目、配置代理、Linux按装git

微信截图_20230206164427.png

服务器

链接走你 阿里云服务器可以免费领取一个月

注册阿里云免费领云服务器_云服务器ECS_阿里云

微信截图_20230131203559.png
领取完了就是这个样子可能大家跟我一样没有太多接触过服务器不过可以领取一个自己尝试尝试部署下服务

微信截图_20230131200911.png

xshell

用于远程连接服务器温馨提示虽然阿里云服务器有连接功能但是没有这款软件强大它提供一个linux环境去连接我们的服务器

下载链接走你

Xshell 下载 - NetSarang Website

微信截图_20230131201246.png
填写下邮件随后会发一个链接到你邮件然后可以下载不过只能免费使用30天哦

4d31add2ab0a44a78005e61e97fa77b1.png

a51f451cd9af47dda2d9983d0446ace6.png

点击下一步默认是C盘我们可以把他安装到D盘

186ee2d28a2c4af7bf3de0860b5bbdc3.png
这个是选择下该图片的位置可以自己选择

ba14c1eec80e4dcc95e24402091fbf48.png

2491d5cac95d47acb9dbdf5150edba17.png
点击关闭

c56ae1a7c40e412cbaedf5cd10db1045.png
随后出现

194e763e6ae84ac481675aac05823cdd.png
点击新建

cace10052f2040ddaf43f848d285b01c.png
连接服务器名称、和主机地址

温馨提示是我们上述的服务器的外网地址哟

defd20861f724aa991311534c3293ce7.png
点击用户身份验证

f01b810eb08540208d2bb16cd0ab9d66.png

3839df4bd6234572a19605e4d312b2d6.png

出现这个代表连接成功了这个一个Linux系统我先把Linux常用指令放到这里哈

微信截图_20230131202857.png

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环境

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文件夹了

微信截图_20230206172006.png

以上就是简单安装node环境的基本指令下面是我们的环境遍历不部分

为什么设置环境变量

设置环境变量是可以让我们在我们linux系统的任何位置去访问否则只能在我们可执行文件的文件夹内访问

设置环境变量步骤

1、执行
1、执行

vim /etc/profile

2、输入i代表insert新增数据

3、在文件底部添加环境变量

export NODEJS_HOME=/usr/local/node
export PATH=$NODEJS_HOME/bin:$PATH

微信截图_20230206174126.png
4、退出保存

点击Esc

输入冒号:

输入wq

回车即可

我们测试下哈

微信截图_20230206174343.png
打完收工

安装mongodb环境

mongodb环境说明

1.服务器系统alibaba服务器系统
2.数据库mongodb版本 v4.0.6
3.软件安装目录 /usr/local/mongodb
4.数据存放位置/mongodb/data
5.日志存放位置/mongodb/logs
6.配置mongodb环境变量: /etc/profile

进入 /usr/local目录:

cd /usr/local

下载mongodb二进制包:

wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.6.tgz

解压安装包

tar zxvf mongodb-linux-x86_64-4.0.6.tgz

重命名文件夹为mongodb、删除压缩

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日志

创建mongod.conf

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和他的密钥添加

一、安装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

微信截图_20230206182508.png
3、打开生成的密钥

vim /root/.ssh/id_rsa.pub

复制

20210416230325408.png
4、git clone 即可哟

Nginx简介

介绍

Nginx是一个高性能的HTTP服务器代理实现对HTTP请求的处理把HTTP请求拦截下来之后交给服务器处理

主要作用

1、负载均衡

​ 负载均衡建立在现有网络结构之上它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。

​ 负载均衡其意思就是分摊到多个操作单元上进行执行例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等从而共同完成工作任务。简单来说就是现有的请求使服务器压力太大无法承受所有我们需要搭建一个服务器集群去分担原先一个服务器所承受的压力那现在我们有ABCD等等多台服务器我们需要把请求分给这些服务器。

305504-20161112124423530-566240666.png

2、动静分离

将简单的静态资源请求交给自己这方面Nginx性能也比较优越或者其它服务器处理将动态资源请求交给其它服务处理。

安装Nginx

温馨提示我使用的Windows进行演示的如果您要部署项目、已经安装了上述的Xshell并且使用的阿里云服务器这个nginx不用安装他在服务器上已经自带了

链接走你http://nginx.org/en/download.html

微信截图_20230130200521.png
我选择的一个稳定的版本

温馨提示不能使用中文字符、空格目录

image-20230130200636695.png

目录介绍

confNginx核心配置文件所在目录其中重要的是nginx.conf文件。温馨提示最重要的
logs日志目录其中最主要的是errs.log文件如果启动之后在任务管理器没有看到程序启动可以通过分析该文件的错误输出定位问题。
temp存放临时文件的目录。
html存放静态资源的目录当然你也可以在nginx.conf配置文件种指定其它位置。

主要命令

温馨提示在nginx.exe目录下使用cmd进入命令行

start nginx代表启动Nginx

输入命令start nginx就会弹出一个窗口代表启动成功

微信截图_20230130201303.png

nginx -v 查看版本号

微信截图_20230130201425.png

nginx -t 验证是否配置成功

微信截图_20230130201535.png

nginx -s stop或者nginx -s quit关闭nginx

nginx -s stop会有序的关闭程序不会丢失代码nginx -s quit会直接关闭可能会丢失代码

微信截图_20230130201756.png
代表关闭成功

Nginx使用

配置Nginx虚拟服务器

这个是Nginx最有用也是最核心的功能。一个Nginx可以配置多个虚拟服务器。Nginx通过监听80端口接收到HTTP请求然后通过虚拟服务器的配置规则和条件将请求转发到其它服务器。 这就是实现负载均衡的主要技术原理。

我们打开conf/nginx.conf文件如下图所示就是Nginx默认配置了一个虚拟服务器

微信截图_20230130201942.png

  • 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

微信截图_20230130203053.png

微信截图_20230130203105.png
证明了虚拟机配置所代表的含义。

下面还有一段配置代表当出现500、502、404等错误时访问/50x.html而location又指明50x.html的路径也在当前html目录

20200524113203551.png

正向代理、反向代理

正向代理

正向代理类似一个跳板机代理访问外部资源。

305504-20161112124853014-1532060796.png

例子

我是一个用户我访问不了某网站但是我能访问一个代理服务器这个代理服务器呢,他能访问那个我不能访问的网站于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容代理服务器去取回来,然后返回给我。从网站的角度只在代理服务器来取内容的时候有一次记录有时候并不知道是用户的请求也隐藏了用户的资料这取决于代理告不告诉网站。

客户端必须设置正向代理服务器当然前提是要知道正向代理服务器的IP地址还有代理程序的端口。

总结

正向代理 是一个位于客户端和原始服务器之间的服务器为了从原始服务器取得内容客户端向代理发送一个请求并指定目标(原始服务器)然后代理向原始服务z器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。

正向代理的用途

1访问原来无法访问的资源如google

2 可以做缓存加速访问资源

3对客户端访问授权上网进行认证

4代理可以记录用户访问记录上网行为管理对外隐藏用户信息

反向代理

初次接触方向代理的感觉是客户端是无感知代理的存在的反向代理对外都是透明的访问者者并不知道自己访问的是一个代理。因为客户端不需要任何配置就可以访问。反向代理Reverse Proxy实际运行方式是指以代理服务器来接受internet上的连接请求然后将请求转发给内部网络上的服务器并将从服务器上得到的结果返回给internet上请求连接的客户端此时代理服务器对外就表现为一个服务器。

反向代理的作用

1保证内网的安全可以使用反向代理提供WAF功能阻止web攻击

大型网站通常将反向代理作为公网访问地址Web服务器是内网。

305504-20161112124341280-1435223816.png
2负载均衡通过反向代理服务器来优化网站的负载

二者区别

305504-20161112130135639-1005446770.png

部署后端项目

因为我们已经安装了git我们直接git clone 就好了

20210416231836489.png
我把前后端项目放到一起了我直接就搞好了如下

微信截图_20230206182508.png
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

微信截图_20230206185615.png
后端服务部署成功

部署前端项目

打包

linux通过git指令把前端的代码获取到随后把使用 npm run build

进行打包
微信截图_20230206190154.png

打包后会生成一个dist文件而这里面由打包出的index文件在上面我们们知道nginx是通过路由来匹配index文件所以我们把这个index放到我们的对应nginx路径下就好了

微信截图_20230206190137.png

部署前端nginx的操作

我们使用的阿里云服务器已经自带nginx了

搜索nginx文件

which  nginx

微信截图_20230206190805.png
我们进入文件找到

微信截图_20230206191332.png
主要配置文件在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

走你
微信截图_20230206191933.png

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6