From ef6764041e6eba630fade12683ddf302af49d0a5 Mon Sep 17 00:00:00 2001 From: LGH <1242479791@qq.com> Date: Thu, 21 May 2020 16:29:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=89=E4=BA=BA=E7=9C=8B=E5=88=B0=E5=88=B0?= =?UTF-8?q?=E4=BA=86=E8=BF=99=E4=B8=AA=E4=B8=96=E7=95=8C=E7=9A=84=E6=81=B6?= =?UTF-8?q?=EF=BC=8C=E8=80=8C=E6=88=91=E9=80=89=E6=8B=A9=E7=9C=8B=E5=88=B0?= =?UTF-8?q?=E8=BF=99=E4=B8=AA=E4=B8=96=E7=95=8C=E7=9A=84=E7=BE=8E=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nginx安装与跨域配置.md | 77 +++++++++++++++ doc/生产环境/教你如何部署.md | 96 +++++++++++++++++++ 2 files changed, 173 insertions(+) create mode 100644 doc/生产环境/nginx安装与跨域配置.md create mode 100644 doc/生产环境/教你如何部署.md diff --git a/doc/生产环境/nginx安装与跨域配置.md b/doc/生产环境/nginx安装与跨域配置.md new file mode 100644 index 0000000..35a0410 --- /dev/null +++ b/doc/生产环境/nginx安装与跨域配置.md @@ -0,0 +1,77 @@ +本文为大家介绍了*CentOS* 7 64位 安装 *nginx*与跨域配置 的详细步骤 + +Nginx官方提供了Yum源 + +## 1、安装nginx + +```shell +yum install -y nginx +``` + + + +## 2、启动Nginx并设置开机自动运行 + +```shell +systemctl start nginx.service +systemctl enable nginx.service +``` + + + +## 3、配置nginx + +``` +vi /etc/nginx/nginx.conf +``` + +使用上面的命令编辑nginx的配置文件,先把配置文件中的server注释掉,然后添加下面的语句 + +```nginx +#小程序接口的域名配置,小程序规定要https,填写对应域名,并把https证书上传至服务器 +server { + listen 443; + server_name mall4j-api.gz-yami.com; + ssl on; + ssl_certificate /usr/share/nginx/cert/xxxxxxxxxxxxxxxx.pem; + ssl_certificate_key /usr/share/nginx/cert/xxxxxxxxxxxxxxxx.key; + ssl_session_timeout 5m; + ssl_protocols TLSv1 TLSv1.1 TLSv1.2; + ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; + ssl_prefer_server_ciphers on; + location / { + proxy_pass http://127.0.0.1:8082; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + } + +#后台域名配置,后台vue页面代码上传至 /usr/share/nginx/admin +server { + listen 80; + server_name mall4j-admin.gz-yami.com; + root /usr/share/nginx/admin; + + # Load configuration files for the default server block. + include /etc/nginx/default.d/*.conf; + + location / { + } + + # 跨域配置 + location /apis { + rewrite ^/apis/(.*)$ /$1 break; + proxy_pass http://127.0.0.1:8081; + } + +} +``` + + + +## 4、重启nginx,让配置生效 + +```shell +systemctl restart nginx.service +``` diff --git a/doc/生产环境/教你如何部署.md b/doc/生产环境/教你如何部署.md new file mode 100644 index 0000000..eaccd89 --- /dev/null +++ b/doc/生产环境/教你如何部署.md @@ -0,0 +1,96 @@ +## 安装jdk + +安装JDK,如果没有java-1.8.0-openjdk-devel就没有javac命令 + +```bash +yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel +``` + + + + + +## 编译打包项目 + +项目最终需要进行编译打包上传到服务器,生产环境上的配置与测试环境不同,需要独立配置一些东西,满足自己的需要 + + + +### 1. mall4j + +1. 修改`yami-shop-admin\src\main\resources\application-prod.yml` 更改为生产环境的数据库账号密码,端口号等 + +2. 修改`yami-shop-admin\src\main\resources\log4j2_prod.xml` 修改里面的`PROJECT_PATH` 将`/opt/projects/yami-shops` 改为自己生产环境的项目路径 + +3. 修改`yami-shop-api\src\main\resources\application-prod.yml` 更改为生产环境的数据库账号密码,端口号等 + +4. 修改`yami-shop-api\src\main\resources\log4j2_prod.xml` 修改里面的`PROJECT_PATH` 将`/opt/projects/yami-shops` 改为自己生产环境的项目路径 + +5. 修改`yami-shop-api\src\main\resources\api.properties` 修改里面的`api.domainName` 为正式环境域名(api项目的域名),否则无法收到微信支付回调,从而订单变为支付成功的状态 + + 修改`yami-shop-admin\src\main\resources\admin.properties` 修改里面的`admin.domainName` 为正式环境后台接口的域名(admin项目的域名),否则无法收到微信退款回调,从而订单变为退款成功的状态 + +以上 1、2 工程目录为 `yami-shop-admin` 而 3、4、5 工程目录为 `yami-shop-api` 请注意区分 + +6. 修改完毕后打包,使用`mvn clean package -DskipTests` 命令进行打包,最终会生成很多的jar,我们需要其中两个。 + +- 商城后台接口 `yami-shop-admin\target\yami-shop-admin-0.0.1-SNAPSHOT.jar` +- 商城前端接口`yami-shop-api\target\yami-shop-api-0.0.1-SNAPSHOT.jar` + +7. 将两个jar上传到centos环境中 + +8. 在生产环境中运行时候,需要使用`-Dspring.profiles.active=prod` ,在使用admin这个工程项目于生产环境的时候要添加定时任务的配置如`-Dspring.profiles.active=prod,quartz`,运行: + +```bash +nohup java -jar -Dspring.profiles.active=prod "${jarPath}/${jarName}" > "${jarPath}/log/${moduleName}-console.log" & + +nohup java -jar -Dspring.profiles.active=prod,quartz "${jarPath}/${jarName}" > "${jarPath}/log/${moduleName}-console.log" & +``` + +- 替换`${jarPath}` 为`jar` 所在路径 +- 替换`${jarName}` 为`jar` 所在路径 +- 替换`${moduleName}` 为`admin`或`api` + +9. 查看控制台日志输出 + +```bash +# 后台日志 +tail -f ${PROJECT_PATH}/log/admin.log +# 前端接口日志 +tail -f ${PROJECT_PATH}/log/api.log +``` + +- 替换`${PROJECT_PATH}` 为`logback-prod.xml` 里面修改的`PROJECT_PATH` 路径 + +10. 使用nginx将请求指向特定的端口。 + + + +### 2.vue + +vue项目的打包构建相对比较简单,但是要注意跨域的问题,相关可以查阅《nginx安装与跨域配置》这篇文章。 + +下面来说下步骤: + +1. 修改`static\config\index-prod.js` 将`baseUrl` 改为vue的请求地址(同源策略),并携带`/apis`的路径,方便修改跨域的配置 +2. 使用 `npm run build` 命令对项目进行打包 +3. 将步骤2中生成的`dist` 文件夹中的文件,压缩,上传到服务器,解压 +4. 使用nginx指向上传解压好的目录 +5. 输入域名即可访问 + + +> 同源策略/SOP(Same origin policy)是一种约定,由Netscape公司1995年引入浏览器,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS、CSRF等攻击。所谓同源是指"协议+域名+端口"三者相同,即便两个不同的域名指向同一个ip地址,也非同源。 + + +对于上面vue的请求地址,很多人不清楚是什么意思,比如我们线上的访问 `http://mall4j-admin.gz-yami.com` 这个是我们的商城后台(这个东西有两个特点:1. 可以用浏览器打开 2.这个是前端的路径),那么根据同源策略,前端只能请求前端的路径,也就是`http://mall4j-admin.gz-yami.com`,那该怎么办呢? + +我们`static\config\index-prod.js` 的`baseUrl`写成这个样子`http://mall4j-admin.gz-yami.com/apis`,这就会出现一个问题,明显看来这个请求的是前端呀,怎么访问服务器啊?答案就是nginx反向代理,将`/apis`指向我们后台启动的端口或域名就好了。相关可以查阅《nginx安装与跨域配置》这篇文章。 + + +### 3.小程序 + +vue项目的打包构建相对比较简单,但是要注意跨域的问题,相关可以查阅《nginx安装与跨域配置》这篇文章。 + +下面来说下步骤: + +1. 修改`utils\config.js` 将`domain`改为api的请求地址,这里的域名必定要https,微信规定,即`https://`