一篇文章告诉你怎么进行服务端部署(简略版)

156 阅读5分钟

作为一名前端开发,之前我也是一直对上线部署不太了解 然后我找了相关的资料,做了以下的一些总结笔记,希望对大家有用,如果有所作用的话 也希望大家能给个支持,谢谢大家

简短介绍

浏览器 通过 域名 找到对应 服务器 的流程

浏览器将 域名 传到 DNS服务器中找对域名对应的 网络地址 返回给浏览器,然后通告网络地址 找到web服务器

服务器 就是电脑主机 (web服务器、文件服务器、图片服务器、FTP服务器)安装的软件不同

本地hosts文件讲解(先于DNS服务器)

域名解析 在DNS服务器中进行

hosts文件 可以起到域名解析作用

  • 路径

windows: C:\windows\system32\drivers\etc\hosts

mac: /etc/hosts

静态网页的请求流程

Nginx 提供网页服务

Nginx 等待接收访问请求 =》然后找到网站根目录=》找到对应的index.html 转发到浏览器端

多个域名可以指向同一个服务器的说明

多个域名可以同时指向同一个地址(网站根目录可以有多个)

跨域情况下接口请求的处理

nodejs(java/php/nodejs/) 、mysql

  • 数据请求的过程

浏览器通过ajax 向对应服务器发送请求=》后端 nodejs 监听对应的接口=》然后从mysql 数据库中获取数据 =》 然后返回给前端

1 返回cors

2 JSONP

3 反向代理

使用反向代理后的接口请求流程

浏览器给Nginx 发送获取数据的请求 =》Nginx 将请求转发给本台服务器上的 后端服务 =》后端服务=》找mysql拿数据返回给后端服务=》后端服务将数据交给Nginx 转发给浏览器

Nginx 做一个配置区分 是获取数据接口 还是获取网页

前后端不分离的页面请求过程

浏览器发送请求=》后端服务=》后端服务在mysql拿数据=》然后后端服务将数据放到网站根目录中的模板里=》后端服务将渲染好数据的模板发送到浏览器

网站上线部署流程

1、服务器购买

国内服务器:阿里云 ECS,腾讯云 CVM

国外服务器:日本 Vultr ,美国 Linode ,谷歌云, 微软 Azure 亚马逊 AWS

创建好服务器实例,分配好外网IP地址。

2、域名购买

国内:万网(阿里)、腾讯

国外:Godaddy

3、域名解析

注册号域名之后需要将域名映射到自己服务器对应的IP地址,这样别人才能通过域名访问到我们的服务器。

这个步骤叫做域名解析,通过域名服务商提供的后台就可以操作,一般域名解析都会有延迟,不是即时生效的

4、服务器环境搭建

配置服务器

mac 系统直接用终端

windows 需要用到git bash 别的工具(Putty)

需要用到Linux系统操作命令

# 远程连接命令
ssh root@域名

# 展示当前文件夹路径
pwd

ls 显示当前目录下的文件结构
cd  切换路径 cd /  切换到根目录

4.1 安装CentOS开发人员相关包

yum groupinstall 'Development tools'

4.2安装Nginx

# 添加Nginx 源
sudo yum install epel-release
# 安装 Nginx
sudo yum install nginx
# 启动 Nginx
sudo systemctl start nginx
# 配置防火墙
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

4.3安装Node.js

# yum 自带源中没有Node.js 所以首先要获取Node.js资源
curl --silent --location https://rpm.nodesource.com/setup_14.x | bash -

# 安装 Node.js 
yum install -y nodejs

# 安装完成之后使用如下指令测试安装是否成功
node -v

# vim 文件名  # 编辑XX文件

# npm i pm2 -g  #安装进程管理工具

pm2 start XXX脚本  #运行xxx脚本 
pm2 stop  XXX脚本  #停止xxx脚本 可用文件名或者是id
  
# 从pm2管理列表中删除
pm2 delete 文件名或者id

4.4 安装MySQL

# 下载并安装 MySQL 源 
wget https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
sudo yum localinstall mysql80-community-release-el7-2.noarch.rpm

# 安装MySQL
sudo yum install mysql-community-server -y

# 如果上一步报错  执行下面的语句
sudo yum module disable  mysql

# 启动MySQL
sudo systemctl start mysqld

# 找到默认密码
# MySQL安装完毕之后会自动设置一个默认密码,我们需要找到默认密码
grep 'temporary password' /var/log/mysqld.log

# 链接到MySQL数据库,修改密码
mysql -uroot -p

ALTER USER 'root'@'localhost'  IDENTIFIED BY '密码'

# quit 退出

4.5免密登录

# 在自己电脑上生成本地 秘钥对
ssh-keygen -t rsa

# 生成位置
#  mac  在 ~/.ssh
#  windows  在 C:\uers\你的用户名.ssh

#  mkdir 文件夹名
#  touch 文件名 
#  echo '文件内容' >> 文件名

5、部署项目

5.1 打包vue项目并上传到服务器

npm i 安装modules

然后 yarn build 或者是npm run build 得到dist文件夹 压缩

# windows 打开git bash 将dist压缩包上传到服务器
scp ./dist.zip  root@域名 :~/

链接好远程服务器

# 将dist压缩包放到nginx目录中
mkdir /home/nginx //创建/home/nginx 文件夹

mv dist.zip /home/nginx/  //将dist压缩包放到/home/nginx文件夹下

unzip dist.zip  //解压dist.zip 压缩包

rm dist.zip  //删除dist.zip 压缩包

mv dist xxx //将dist文件名改为xxx

5.2 配置Nginx

//首先跳转到Nginx/conf.d文件中
cd /etc/nginx/conf.d/

//创建配置文件
  touch 域名.conf
  vim 域名.conf
// 按i键进入插入模式
//复制下面的内容粘贴进去
//保存退出
:wq

域名.conf

server{
  listen  80;
  server_name  域名.com;
  location / {
    root  /home/nginx/域名;
    index index.html  index.htm;
  }
}

systemctl stop nginx // 停止nginx

nginx //重启nginx

5.3 上传和部署接口项目

接口项目是整个项目压缩放到服务器上,

并且 在压缩之前 需要修改config中 database中的password 需要和服务器中的数据库password 是一致的

上传步骤和前端上传压缩包一致

1.cd 到接口项目中

2.安装依赖项 npm i

3.修改MySQL数据库 密码规则

use mysql;
ALTER USER 'root'@'localhost' IDENTIFIED BY '密码' PASSWORD EXPIRE NEVER;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码';

# 查看是否已经修改成功
select user,host,plugin from user where user='root'

4.创建新的数据库

create database (数据库名)vuesql

5.在之前nginx配置文件中添加反向代理的配置

按o键

location ^~/api/ {
  rewrite ^/api/(.*)$  /$1 break;
  proxy_pass http://127.0.0.1:3000;
}

nginx -s reload //重启nginx

5.4后端管理系统的配置

cp 文件1 文件2 //复制文件1 生成文件2

对应的文件

server{
  listen  80;
  server_name  admin.域名.com;
  location / {
    proxy_pass http://127.0.0.1:3000;
  }
}