Appearance
项目部署
手动部署项目
- 首先要部署环境
- 升级系统软件包
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.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/用户名/密码/上传目录 常见问题:
- jenkins会自动从SVN/GIT下载代码 -- 需要SVN/GIT相关插件
- 卡在启动界面不动 修改
/var/lib/jenkins目录下的hudson.model.UpdateCenter.xml将http://updates.jenkins-ci.org/update-center.json改成http://mirror.xmission.com/jenkins/updates/update-center.json