准备
后端项目文件:huafengServer(koa+ts)
前端项目文件:
huafengWeb(vue3+ts)
huafengWebAdmin(vue3+ts+elementPlus)
数据库文件:huafengMySql
云服务器:腾讯云Ubunto24
其他:nginx、node、pm2、docter、k8s
本地运行项目 安装依赖 安装软件包管理器Homebrew
1 /bin/zsh -c "$(curl -fsSL <https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh>) "
使用homebrew安装node、mysql(这里node自带npm)
更换npm镜像源(淘宝)
1 npm config set registry <https://registry.npmmirror.com>
启动并设置mysql 1 2 3 4 5 6 7 8 9 10 11 mysql.server start mysql_secure_installation mysql.server stop mysql.server restart mysql.server status
数据库配置
1 2 3 4 5 6 7 8 9 10 CREATE USER 'huafeng' @'localhost' IDENTIFIED BY 'HFhf991((!' ;CREATE DATABASE huafengSQL;GRANT ALL PRIVILEGES ON huafengSQL.* TO 'huafeng' @'localhost' ;FLUSH PRIVILEGES; exit
后端项目 1 2 3 4 5 6 -- 启动项目 npm start -- 生成typeorm数据库结构迁移文件 npm run migration:generate -- 编译TS(按照配置文件tsconfig.json编译) tsc
PS: 这里在tsconfig.json中修改了输出路径为./huafengserver/src, 再复制一份package.json,因为后面需要运行数据结构迁移文件,而原package.json里面路径还是ts文件,所以要修改package.json这几行的后缀ts为js 最后把修改后的package.json放入huafengserver文件夹
1 2 3 4 5 6 7 "scripts" : { "migration:run" : "typeorm-ts-node-commonjs migration:run -d src/data-source.ts" , "migration:revert" : "typeorm-ts-node-commonjs migration:revert -d src/data-source.ts" } ,
最后打包后的项目结构:
1 2 3 4 5 6 7 8 9 10 huafengserver -src - controllers - migrations - models - routes - utils - app.js - data-source.js -packsge.json
前端项目 1 2 3 4 5 -- 启动项目 npm run dev -- 打包 npm build -- 分别将打包后的dist文件夹重命名为huafeng和huafengadmin
最后打包好的项目结构:
1 2 3 4 5 huafeng/huafengadmin - assets - favicon.ico - index.html - 其他图片资源
初始云服务器(Ubuntu)
设置防火墙端口白名单
远程ssh连接(mac终端) 连接命令:
Ps可能要用到的命令: 连接显示密钥匹配失败?
1 2 -- 重置密钥 ssh-keygen -R (IP地址)
如何进入root模式?
安装软件包(apt) 使用前先更新apt:
使用命令下载安装nginx、node、npm 、mysql-server、pm2
更换npm镜像源(淘宝)
1 npm config set registry <https://registry.npmmirror.com>
上传项目文件 上传项目文件夹到服务器并改名
1 scp -r 本地文件 ubuntu@140.143.143.80:/tmp
服务器web项目文件夹路径:var/www/huafengWeb
1 2 3 4 5 6 -- 移动刚刚上传到tmp里面的huafeng、huafengadmin、huafengserver到目的文件夹 mv huafeng huafengadmin huafengserver /var/www/huafengWeb -- 不能覆盖,必须先删除目标文件 cd /var/www/huafengWeb rm -r huafeng huafengamdin
启动项目 nginx 1 2 3 4 5 6 7 8 9 10 11 12 -- 启动nginx systemctl start nginx -- 查看nginx状态 systemctl status nginx -- 修改nginx配置文件 nano /etc/nginx/sites-available/default (配置文件内容查看下面的其他) -- 重启nginx systemctl restart nginx -- 设置开机自启 systemctl enable nginx
此时应该已经能访问到网页资源
mysql 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 步骤参考上面本地部署,命令有所区别 --启动命令 systemctl start mysql -- 查看状态 systemctl status mysql -- 登录控制台 mysql -u root -p 设置密码 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码'; -- 初始化安全配置 mysql_secure_installation ... -- 设置开机自启 systemctl enable mysql
运行数据结构迁移文件
pm2 1 2 3 4 5 6 -- 使用pm2启动后端项目入口文件 pm2 start app.js --name huafnegserver -- 查看进程列表 pm2 list -- 删除进程 pm2 delete 进程名
后端项目已启动,测试接口是否正常
部署完成 其他 nginx配置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 server { listen 80; server_name huafeng.website www.huafeng.website; return 301 https://$server_name$request_uri ; } server { listen 443 ssl; server_name huafeng.website www.huafeng.website; ssl_certificate /etc/nginx/ssl/huafeng.website_bundle.crt; ssl_certificate_key /etc/nginx/ssl/huafeng.website.key; ssl_session_timeout 5m; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; location /huafeng { alias /var/www/huafengWeb/huafeng/; try_files $uri $uri / /huafeng/index.html; } location /huafengadmin { alias /var/www/huafengWeb/huafengadmin/; try_files $uri $uri / /huafengadmin/index.html; } location /api/ { proxy_pass <http://localhost:3000/api/>; proxy_http_version 1.1; proxy_set_header X-Forwarded-Proto $scheme ; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ; proxy_set_header Upgrade $http_upgrade ; proxy_set_header Connection 'upgrade' ; proxy_set_header Host $host ; proxy_cache_bypass $http_upgrade ; } location /huafeng/assets/ { alias /var/www/huafengWeb/huafeng/assets/; } location /huafengadmin/assets/ { alias /var/www/huafengWeb/huafengadmin/assets/; } }
日志查看 nginx 日志文件路径 /var/log/nginx/
1 2 3 4 5 6 -- 错误日志 cat /var/log/nginx/error.log -- 访问日志 cat /var/log/nginx/access.log -- 实时查看日志 tail -f /var/log/nginx/access.log
pm2 1 2 3 4 -- 查看最后200行日志 pm2 logs --lines 200 -- 查看错误日志 pm2 logs --err
技术升级-宝塔面板部署