Skip to content

项目部署

手动部署项目

  • 首先要部署环境
    • 升级系统软件包 yum -y update

安装mysql

shell

wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
rpm -ivh mysql57-community-release-el7-9.noarch.rpm
yum install -y mysql-server
# 启动mysql
systemctl start mysqld
# 测试mysql
# 获取临时密码
grep 'temporary password' /var/log/mysqld.log
# 通过临时密码登录
mysql -u root -p
# 修改mysql密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'www.IT666.com';
# 默认密码的长度最小值为 4 ,由 大/小写字母各一个 + 阿拉伯数字一个 + 特殊字符一个
- 设置允许远程链接
use mysql;
update user set host = '%' where user = 'root';
FLUSH PRIVILEGES;

# 注意: mysql8导出的数据想要导入到低版本的mysql中需要修改
# utf8mb4替换为utf8
# utf8mb4_0900_ai_ci替换为utf8_general_ci
# utf8_croatian_ci替换为utf8_general_ci
# utf8mb4_general_ci替换为utf8_general_ci

安装redis

shell

# 安装redis相关依赖
yum install -y gcc
# 安装redis
yum install -y redis
# 修改redis配置
rpm -ql redis
vi /etc/redis.conf
bind 0.0.0.0
# 启动redis
systemctl start redis
# 测试redis
redis-cli -h 118.25.146.88 -p 6379

安装nvm

shell

yum install -y git
git --version
git clone git://github.com/creationix/nvm.git ~/nvm
command -v nvm
echo "source ~/nvm/nvm.sh" >> ~/.bashrc
source ~/.bashrc

安装nodeJs

shell

nvm install v12.19.0

安装nrm

shell

npm install -g nrm
nrm ls
nrm use taobao

部署egg项目

项目部署

  • 修改config.prod.ts
js
// 增加一个
config.listen = {
    port:7001,
    hostname:'118.25.146.88'
}

  • 修改.eslintrc 解决 导入使用了require的方式
json
{
  "rules": {
    "@typescript-eslint/no-var-requires": 0
  }
}

  • 修改pageck.json"lint": "eslint --fix . --ext .ts",

  • 检查代码,并生成js文件

    • 执行 npm run lint
    • 执行 npm run tsc
  • 删除node_modules

  • 上传项目到服务器

  • 执行 npm install --production

    • 执行 npm run start
  • 测试部署

前端部署

安装nginx

shell

yum install -y nginx
# 修改nginx配置
cd /etc/nginx
vi nginx.conf
user root
# 启动nginx
service nginx start
# 配置分离路径
cd /etc/mginx
vi nginx.conf
include /etc/nginx/conf.d/*.conf;
# 新建配置文件

server {
    listen       8090;
    server_name  pro_ms_fg;

    location / {
        root /var/www/pro_ms_fg;
        index index.html index.htm;
    }
}
# 重启nginx
nginx -s reload

前端项目打包

环境变量配置

js
import {extend} from "umi-request";
// 在utils/request.ts中配置如下

let path = 'http://127.0.0.1:7002';
if(process.env.NODE_ENV !== 'development'){
    path = 'http://线上环境地址';
}

export const BASE_PATH = path;

const request = extend({
    prefix:path+'/api/v1',
    timeout:3000,
    credentials:'include'
})

export default request;

shell

npm run build

项目部署地址

  • 分析构建文件体积

如果你的构建文件很大,你可以通过 analyze 命令构建并分析依赖模块的体积分布,从而优化你的代码。

shell

npm run analyze

上面的命令会自动在浏览器打开显示体积分布数据的网页。

跨域配置

nginx
location /api {
    proxy_pass http://118.25.146.88:7001;
    proxy_set_header Host $host;
}

自动部署

jenkenis

JenKins是开源CI(持续集成)&CD(持续交付)软件领导者, 提供超过1000个插件来支持构建、部署、自动化,满足任何项目的需求

https://www.jenkins.io/zh

https://www.redhat.com/zh/topics/devops/what-is-ci-cd


本地代码 --->  git服务器   
--->  自动化下载到 ----> JenKins服务器,自动部署  
----> 自动帮我们打包好 ---> 自动将打包好的文件发送到指定的服务器
----> 直接访问

安装jenkenis环境

shell
# 安装相关依赖
yum install -y java
# 安装jenkenis
wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins.io/redhat-stable/jenkins.repo
rpm --import http://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum install -y jenkins
# 启动jenkenis
service jenkins start
# 打开jenkins
# 安装jenkins服务器ip+:8080

自动部署服务器注意点:

  • 由于自动部署服务器需要对项目进行编译打包, 并且会保存编译打包结果, 所以自动部署服务器是非常消耗性能的 所以在企业开发中, 一般情况下都是使用一台独立的服务器作为自动部署服务器
  • 如果想使用jenkins实现自动部署, 那么安装好了jenkins之后, 我们还需要安装项目下载/项目编译/项目上传相关插件
    • jenkins会自动从SVN/GIT下载代码 -- 需要SVN/GIT相关插件
      • Manager jenkins -> Manager Plugins -> 可选插件 (默认会安装git)
    • jenkins会自动编译打包下载好的项目 -- 需要安装NODEJS
      • Manager jenkins -> Manager Plugins -> 可选插件 -> Node
      • 系统管理 -> 全局工具配置 -> Node -> 新增Node -> 保存
    • jenkins会自动将编译打包好的文件发送到部署服务器对应的目录中 --需要安装SSH插件
      • Manager jenkins -> Manager Plugins -> 可选插件 -> Publish over SSH插件
      • 系统管理 -> 系统配置 -> Publish over SSH配置 -> 添加远程服务器配置 IP/用户名/密码/上传目录 常见问题:
  • 卡在启动界面不动 修改 /var/lib/jenkins目录下的hudson.model.UpdateCenter.xmlhttp://updates.jenkins-ci.org/update-center.json 改成 http://mirror.xmission.com/jenkins/updates/update-center.json

Released under the MIT License.