forked from gz-yami/mall4j
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
173 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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://` |