新项目上线注意事项

新项目上线时,检查项挺多的。在这里做下笔记。

网络

网络策略,从前端到后台服务,从后台服务到后台服务,从后台服务到数据库的网络策略要提前开通并验证通过。

  1. 检查网络配置,主要包括NG反向代理,正向代理等。如果有用到gateway,则需要增加网关配置。
网关配置增加以下路由

  {
    "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 "
  },

  1. 用到前端vue框架,编译压缩时,注意base_url的上下文,需要与NG对应。
后台访问路径: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. 微信公众号H5部署。
一、	微信
步骤 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配置都要改

  1. 端口号建议提前规划,建议同一个模块采用相同的端口。如admin的dev,sit,uat采用端口8080,而order模块的dev,sit,uat采用端口8081。这样在上线时就不会出现访问端口不对的现象。

配置文件

检查线上的每个模块的配置文件。多次上线时发现配置文件书写不规范或者还是用测试环境的配置。
配置文件应满足:

  1. 不同环境下相同的配置写入到一个文件。如applicaiton.yml.
  2. 不同环境不同配置文件写入到一个文件。如application-sit.yml.
  3. 变动频繁的配置,建议写入到库。如短信模板可以写入到库。
    以上的配置方式,在上线时,可直接将application-pro.yml的配置文件直接拷贝到nacos或者阿波罗(disconf)或者自研的配置中心。

配置的应用名称命名规范,建议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

你可能感兴趣的:(MySQL)