项目部署
1 环境搭建
1:使用工具自动搭建
需要mysql,Njinx,Tomacat,jdk8,
2: 数据库
登录:mysql -uroot -p密码
Mysql远程连接:登录进入msql命令模式
**mysql8:**
CREATE USER 'root'@'%' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
**mysql5:**
grant all privileges on *.* to root@'%' identified by '123456';
刷新权限
flush privileges;
设置字符编码
查看编码方式:`show variables like 'character_set%';`
编辑文件 vim /etc/my.cnf(没有就自己创建一个,vi会自动创建)
注意:如果my.cnf存在,那么就在[mysqld]处将下面的配置拷贝进去,并删除原来的[mysqld],因为配置中存在一个,不能有两个;
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8
2 启动项目
1 后端启动
1:将后端jar包上传到lindux服务器,一般放在/usr/local/src/下
2:测试启动(这个启动后当你关闭命令窗口或Ctrl+c 服务就关闭)
java -jar 你的jar包
3:关闭测试启动,用无后台启动方式启动(将日志文件全部存在 ./logs/pms.log 文件中)
nohup java -jar ronghua-permission-system-1.0-SNAPSHOT.jar >> ./logs/pms.log 2>&1 &
4:端口占用
查看端口的运行进程: lsof -i:8080
关闭端口服务: kill -9 进程号
2 前端启动
1:Tomcat 启动前端或前后不分离项目
1:导包
将项目target里面的以项目名命名的包里面的WEB-INF和static包上传到服务器的Tomacat的webapps目录下
这个WEB-INF里面必须要包含 classes和lib和views包
2:启动项目(默认8080端口)
切换到Tomcat的bin目录下
注意:有些版本有server.xml 和 server.xml.bk 两个文件,将他们换一下名字就行了
启动 ./startup.sh
停止 ./shutdown.sh
2:Tomcat 启动前后端分离项目
1:导包
vue前端打包后将static包和index.html文件上传到Tomcat的webapps目录下
2:启动
3:改端口
在Tomcat的conf/server.xml 文件里面修改
3: Njinx启动前后端分离项目
1:将打包文件放在njinx的html包下
2:启动
启动 systemctl start nginx
重启 systemctl restart nginx
停止 systemctl stop nginx
状态 systemctl status nginx
3:启动多个前端项目
1:在html包下分出多个包 web1,web2分别放两个项目的文件
2:修改nginx.conf文件
找到里面的server,添加下面代码
server {
listen 80;
server_name www.wanghaihai1.org; #这个域名需要注册,否则只能用ip
location / {
root html/web1;
index index.html;
}
}
server {
listen 80;
server_name www.wanghaihai2.org;
location / {
root html/web2;
index index.html;
}
}
解决跨域(将前端的8088端口请求转接到后端8080端口)
server {
listen 8088;
server_name localhost;
location / {
add_header 'Access-Control-Allow-Origin' $http_origin;
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'PATCH,GET,POST,DELETE,PUT,OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,web-token,app-token,Authorization,Accept,Origin,Keep-Alive,User-Agent,X-Mx-ReqToken,X-Data-Type,token,X-Auth-Token,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' $http_origin;
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'PATCH,GET,POST,DELETE,PUT,OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,web-token,app-token,Authorization,Accept,Origin,Keep-Alive,User-Agent,X-Mx-ReqToken,X-Data-Type,token,X-Auth-Token,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type' 'text/plain; charset=utf-8';
add_header 'Content-Length' 0;
return 204;
}
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_connect_timeout 5;
}
}