新项目上线时,检查项挺多的。在这里做下笔记。
网络策略,从前端到后台服务,从后台服务到后台服务,从后台服务到数据库的网络策略要提前开通并验证通过。
网关配置增加以下路由
{
"id": "shop-merchant-router",
"order": 19,
"predicates": [
{
"args": {
"pattern": "/shop/merchant/**"
},
"name": "Path"
}
],
"filters": [
{
"args": {
"parts": "1"
},
"name": "StripPrefix"
},
{
"args": {
"name": "Access-Control-Allow-Origin",
"value": "*"
},
"name": "AddResponseHeader"
}
],
"uri": "lb://shop-merchant "
},
后台访问路径:https://aaa.bbb.com/merchant
upstream merchant {
server 10.10.150.173:18099(包括74);
server 10.10.150.174:18099(包括74);
}
443下
location /merchant{
proxy_pass http://merchant/;
}
新建并配置Nginx的merchant.conf文件
server {
listen 18099;
server_name localhost;
location / {
root /statics/merchant;
try_files $uri $uri/ @router;
index index.html index.htm;
}
location @router {
rewrite ^.*$ /index.html last;
}
}
一、 微信
步骤 1、
开发人员从微信公众号下载MP_verify_****.txt 文件,交给运维人员。
步骤 2、
运维人员在生产环境下,与settlement_certification同级创建目录,名称为app,将该MP_verify_****.txt 放置于app目录之下。
Ex cmd:
: mkdir /static/app
步骤 3、
修改nginx的配置,使得该MP_verify_****.txt文件允许通过nginx直接访问,测试环境例子如下:
location /MP_verify_N7aOq3.txt {
alias /home/app/wx/MP_verify_N7aOKjDNnk1Laoq3.txt;
autoindex on;
}
注意 MP_verify_****.txt 必须一致
二、 H5
步骤 1、
开发人员提供名为medical.zip的H5打包文件给运维人员。运维人员将打包文件解压后会获得medical目录。
步骤2、
运维人员在生产环境下,与settlement_certification同级下,将medical目录复制进去
步骤3、
修改、新增nginx配置,使得nginx能路由到H5静态文件,需要修改的nginx配置。此处可参考settlement_certification的配置进行新增、修改。
以下是测试环境例子:
A、【主nginx配置文件名】.conf(三处)
upstream medical {
#ip_hash;
server 10.0.17.114:43574;
}
…
location /medical {
proxy_pass http://medical/;
}
…
client_max_body_size 10m;
B、于settlement_certification.conf同级目录下,新增medical.conf配置如下:
server {
listen 43574 ;
server_name default_server;
access_log logs/appelectest_access.log main;
gzip on;
gzip_min_length 2k;
gzip_buffers 4 16k;
#gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/javascript application/octet-stream application/x-httpd-php image/jpeg image/gif image/png;
gzip_vary on;
gzip_disable "MSIE [1-6]\.";
client_max_body_size 10m;
location / {
root /home/app/medical;
index index.html index.htm;
add_header Access-Control-Allow-Origin *;
try_files $uri $uri/ /index.html
expires -1;
}
error_page 405 =200 $uri;
}
特别注意:client_max_body_size 10m; 必须改成10m,主nginx配置和医美的nginx配置都要改
检查线上的每个模块的配置文件。多次上线时发现配置文件书写不规范或者还是用测试环境的配置。
配置文件应满足:
配置的应用名称命名规范,建议dev的应用名称为模块名-dev,sit的应用名为模块名-sit,uat的应用名为模块名-uat。如order模块dev的应用名字写入到application-dev.yml中。内容如下。
spring:
application:
name: shop-order-dev
检查线上数据库的编码和校对集。这里主要以mysql为例。
字符集主要包括服务端字符集、客户端字符集和会话字符集。
这里主要指服务端字符集。
字符集是一套符合和编码,比如相同的二进制16 bit 的数据,在不同的字符集下,对应的字符是不一样的。校对集是在字符集内用于比较字符的一套规则。
一般不同的字符集有不同的校对规则,命名约定为:以其相关的字符集名开始,通过包括一个语言名,并且以_ci(大小写不敏感)、_cs(大小写敏感)或_bin(二元)结束。
字符集(charset):是一套符号和编码。
校对规则(collation):是在字符集内用于比较字符的一套规则,比如定义’A’<‘B’这样的关系的规则。不同collation可以实现不同的比较规则,如’A’='a’在有的规则中成立,而有的不成立;进而说,就是有的规则区分大小写,而有的无视。
两个不同的字符集不能有相同的校对规则。每个字符集有一个或多个校对规则,并且每个校对规则只能属于一个字符集。每个字符集有一个默认校对规则。例如,utf8默认校对规则是utf8_general_ci。
校对规则一般分为两类:
binary collation,二元法,直接比较字符的编码,可以认为是区分大小写的,因为字符集中’A’和’a’的编码显然不同。除此以外,还有更加复杂的比较规则,这些规则在简单的二元法之上增加一些额外的规定,比较就更加复杂了。
mysql5.1在字符集和校对规则的使用比其它大多数数据库管理系统超前许多,可以在任何级别进行使用和设置,为了有效地使用这些功能,你需要了解哪些字符集和 校对规则是可用的,怎样改变默认值,以及它们怎样影响字符操作符和字符串函数的行为。
mysql字符集和校对规则有4个级别的默认设置:服务器级、数据库级、表级和连接级。
具体来说,我们系统使用的是utf8字符集,如果使用utf8_bin校对规则执行sql查询时区分大小写,使用utf8_general_ci 不区分大小写。不要使用utf8_unicode_ci。
如create database demo CHARACTER SET utf8; 默认校对规则是utf8_general_ci 。这个地方在线上就出现2个问题,
(1)线上默认的字符集是utf8,但是其他表全部使用的是utf8_unicode_ci校对集,新增的表的字符集是utf8,但是没有指定utf8的校对集,默认为utf8_general_ci,关联表用 on a.id = b.id时,就会报错。
(2)另外一个问题是新建表有一个字段指定了utf8字符集,但是没有给他指定校对集,新建表指定的字符集为utf8,校对集使用utf8_unicode_ci,关联时同样报错。
Unicode与UTF8
Unicode只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储。
UTF8字符集是存储Unicode数据的一种可选方法。mysql同时支持另一种实现ucs2。
数据库字符集和校对
每一个数据库有一个数据库字符集和一个数据库校对规则,它不能够为空。CREATE DATABASE和ALTER DATABASE语句有一个可选的子句来指定数据库字符集和校对规则:
例如:
CREATE DATABASE db_name DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
MySQL这样选择数据库字符集和数据库校对规则:
· 如果指定了CHARACTER SET X和COLLATE Y,那么采用字符集X和校对规则Y。
· 如果指定了CHARACTER SET X而没有指定COLLATE Y,那么采用CHARACTER SET X和CHARACTER SET X的默认校对规则。
· 否则,采用服务器字符集和服务器校对规则。
在SQL语句中使用COLLATE
•使用COLLATE子句,能够为一个比较覆盖任何默认校对规则。COLLATE可以用于多种SQL语句中。
使用WHERE:
select * from pro_product where product_code=‘ABcdefg’ collate utf8_general_ci
Unicode与UTF8
UTF-8就是在互联网上使用最广的一种unicode的实现方式。其他实现方式还包括UTF-16和UTF-32,不过在互联网上基本不用。
UTF8字符集(转换Unicode表示)是存储Unicode数据的一种可选方法。它根据RFC 3629执行。UTF8字符集的思想是不同Unicode字符采用变长字节序列编码:
· 基本拉丁字母、数字和标点符号使用一个字节。
· 大多数的欧洲和中东手写字母适合两个字节序列:扩展的拉丁字母(包括发音符号、长音符号、重音符号、低音符号和其它音符)、西里尔字母、希腊语、亚美尼亚语、希伯来语、阿拉伯语、叙利亚语和其它语言。
· 韩语、中文和日本象形文字使用三个字节序列
校对集
MySQL5.5.8中共有字符集39,校对集195个
#显示所有的校对集
Show collation
#显示所有的字符集
show character set
所以一个字符集对应多个校对集,即同样的一个字符集有多重排序规则
比如一个utf8的字符集共有22中排序规则
Utf8字符集默认的校对集为utf8_general_ci
通过show collation like ‘utf8_%’
即可查看
https://files.jb51.net/file_images/article/201207/2012072221524322.png
注意:
utf8_general_ci 按照普通的字母顺序,而且不区分大小写(比如:a B c D)
utf8_bin 按照二进制排序(比如:A排在a前面,B D a c)
https://www.cnblogs.com/zzwlovegfj/archive/2012/06/25/2560649.html