Jenkins部分汉化处理方法

0x01

最近换了个新项目组,因为在虚拟机上安装的CentOS,在上面安装的JenKins,因为需要给开发跟测试的同事使用,所以选择汉化一下界面。

0x02

安装好两个插件Locale Plugin、Localization:Chinese(Simplified)后,在Manage JenKins > Configure System 里面设置为zh_CN后发现只有部分汉化,网上找了一圈都是把语言改成英文后重启,再改成中午,发现不管用。无奈之下只能自己找原因了。

如图把默认语言改成中文

0x03

苦找半天,最后发现是因为网络的原因汉化插件没有下载完全,删除后重新下载,也是下载不完全,只能去到/root/.jenkins/updates/default.json找到插件的下载地址,用迅雷下载好插件后把文件丢到/root/.jenkins/plugins里面,重启jenkins后终于看到了熟悉的汉化界面。

圈起来的三个文件可以删除后去/root/.jenkins/updates/default.json里面找到下载地址,用迅雷下载好后放到/root/.jenkins/plugins目录下

0x04

/root/.jenkins/是主目录,可以在Manage JenKins > Configure System第一行里面找到这个目录。

Docker上跑Mysql的配置

ox01

最近在把项目往Docker上迁,些一篇文章来记录一些值得注意的问题。

0x02

在测试环境Docker上跑Msql时,用如下命令根据镜像创建容器.

docker run --name mysql \
 -p 3306:3306 \
 -v $PWD/Docker/mysql:/var/lib/mysql \
 -e MYSQL_ROOT_PASSWORD=root \
 -d mysql:latest

用Navicat连接时,登录会提示2058。

网上找了一圈基本上是,用以下命令

docker exec -it  CONTAINER_ID  bash

进入容器里面修改一次数据库的密码

mysql -uroot -proot #登陆

use mysql; #选择数据库

ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #修改加密方式

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; #更新用户密码

FLUSH PRIVILEGES; #刷新权限

修改后问题就解决了,可以登录成功;只是这个方法不适合集群部署。也可以直接在创建镜像的时候添加以下参数来解决;

--default-authentication-plugin=mysql_native_password

0x03

因为创建数据库的时候没有选择默认字符集、排序方式,创建表后varchar类型,输入中文时会变成??????,点设计表后发现创建表的默认字符集是latin1,所以中文乱码了,想要在创建容器时添加如下参数来指定默认的字符集。

--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci

0x04

本来以为上面的设置已经万事大吉了,结果跑了一段时间后发现数据库的时间不对了,少了8个小时。检查了一下发现时用系统的默认时区,中国是东八区UTC+8。需要在创建容器的时候添加时区映射。

-e TZ="Asia/Shanghai" 

0x05

汇总后创建容器的语句如下:

docker run --name mysql \
-p 3306:3306 \
-e TZ="Asia/Shanghai" \
-v $PWD/Docker/mysql:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:latest \
--default-authentication-plugin=mysql_native_password \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci

解决Docker容器控制台乱码

0x00

今天在用Rancher安装Graylog时发现都安装好了,登录Graylog控制台查看日志时发现中文的都是??????乱码,去网上找了好多文档,发现不是很稳。

ox01

找了好多都说要添加环境变量

LANG = en_us.UTF-8

我也是按着添加了,也重启了容器,硬是不行,最终发现需要进入容器里面查看容器支持的编码,再去设置为支持的编码才行(8e7dd064fa6b为容器ID)

docker exec -it 8e7dd064fa6b bash

进去容器后执行命令可以查目前容器支持的编码

 locale -a

再选择一个支持编码去设置LANG,设置好重启容器就正常了

0x02
网上说的其实都对,就是没有把关键的说出来,LANG = 需要设置为当前容器支持的编码,每个镜像打出来的容器,支持的编码都不尽相同,如果设置为一个容器不支持的编码,那设置了等于没有设置。

Docker设置时区

最近项目的环境换成了docker,用Rancher去管理,项目管理方便了一些,其中也遇到了一些问题,特此记录一下。

项目输出的日志时间不对。查看日志发现镜像里面没设置时区,是默认的时区,在容器里面添加环境变量:
TZ="Asia/Shanghai" 
把时区设置为上海,重启容器后发现时间正确了。

网易相册停运

今天在查看个人邮箱的时候发现收到了网易相册的邮件,吸引我的注意,打开看了发现是一个停止运营的公告。印象中接触网易相册是在07 08年的时候,班级去旅游,老师就把出游的照片上传在网易相册里面的,让我们自己去下载。现在已经是19年了,10多年过去,网易相册已到了谢幕时间。特此记录一下陪伴了我十多年的相册。

网易相册从2003年开始上线,那时候开始就只是国内最大的、知名度最高的免费网络相册。

2019年5月8日,网易相册将会全面停止运营,关闭服务器。

亲爱的网易相册用户,很遗憾的通知您,网易相册将会在2019年5月8日00:00全面停止运营。请您在停运之前将需要保存的图片进行下载以防丢失。

关于cannot open shared object file: No such file or directory的解决

0x00

今天在安装Nginx的时候发现openssl、pcre、zlib都装好了,启动的时候发现如下提示

# ./nginx ./nginx: error while loading shared libraries: libpcre.so.0: cannot open shared object file: No such file or directory
# ./nginx: error while loading shared libraries: libpcre.so.0: cannot open shared object file: No such file or directory -bash: ./nginx:: No such file or directory

然后在百度找了一通发现解决的方法很多,自己记录了一下解决的方法如下:

0x01

如果共享库文件安装到了/lib/usr/lib目录下,那么需执行一下ldconfig命令

0x02

# cat /etc/ld.so.conf include ld.so.conf.d/*.conf
# echo “/usr/local/lib” >> /etc/ld.so.conf
# ldconfig

0x03

/lib/usr/lib” 目录下,但是又不想在/etc/ld.so.conf中加路径(或者是没有权限加路径). 那可以export一个全局变量LD_LIBRARY_PATH,然后运行程序的时候就会去这个目录中找共享库

可以添加用户环境变量来解决

export LD_LIBRARY_PATH=/usr/local/mysql/lib:$LD_LIBRARY_PATH

JAVA反序列化漏洞weblogic临时解决方案

今天收到乌云上面的漏洞邮件,JAVA反序列化漏洞,可以进行任意命令执行.网上查询发现传得沸沸扬扬,颇有恐慌之势。

去weblogic官网发现没有修复补丁.

http://www.oracle.com/technetwork/topics/security/alert-cve-2015-4852-2763333.html

所以去网上找了半天发现有大神给出临时处理方案.

删掉项目中commons-collections-*.jar中“org/apache/commons/collections/functors/InvokerTransformer.class” 文件(删除前备份);

同时删除weblogic安装目录中“/oracle/Middleware/modules/com.bea.core.apache.commons.collections_*.jar”中“org/apache/commons/collections/functors/InvokerTransformer.class” 文件(删除前备份);

测试,OK!而后台会抛出异常信息:

java.lang.AssertionError: Exception creating response stream.

再让程序员查找整个程序是否有用到InvokerTransformer,确认没有用到后上线。不知道是否有其他影响,特此记录。

win7添加oracle数据源(ODBC)

今天有一个VB写的小程序出现了问题,连接是提示[Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序.第一反应就是系统没有配置数据源。

20151118151807

在打开系统数据源(ODBC),添加发现并没有oracle的驱动程序。看来得先添加oracle驱动程序。去官网下载.地址:
http://www.oracle.com/technetwork/topics/winsoft-085727.html

instantclient-basiclite-nt-12.1.0.2.0.zip
instantclient-odbc-nt-12.1.0.2.0.zip

1.把下载的好的两个压缩包解压到同一目录下,如D:\instantclient_12_1
2.再创建tnsnames.ora文件
目录如下D:\instantclient_12_1\NETWORK\ADMIN\tnsnames.ora,目录NETWORK\ADMIN是不存在的目录,自己创建。

3.编辑tnsnames.ora文件,HOST 修改为自己的数据库ip,SERVICE_NAME修改为需要连接的数据库名字,格式如下:

barcode =
    (DESCRIPTION =
        (ADDRESS_LIST =
             (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.1)(PORT = 1521))
        )
        (CONNECT_DATA =
             (SERVICE_NAME = barcode)
        )
    )

4.添加系统环境变量TNS_ADMIN,值D:\instantclient_12_1\NETWORK\ADMIN,根据自己的具体情况创建.

5.双击instantclient_12_1目录下的odbc_install.exe进行安装.界面会一闪过。

6.打开控制面板\所有控制面板项\管理工具\数据源(ODBC),验证是否安装成功。

 

oracle表空间满

最近一段时间发现程序在晚上同步数据时会假死,程序没有输出异常信息,但是用浏览器访问后页面空白,重启后后正常了,一开始以为是程序晚上同步数据时有2万多个空指针,导致内存溢出,然后卡死,把异常数据清理后发现问题依旧。在同步数据时卡死,那么数据库也嫌疑犯之一。首先查看表空间的使用情况:

 SELECT tbs 表空间名,
       sum(totalM) 总共大小M,
       sum(usedM) 已使用空间M,
       sum(remainedM) 剩余空间M,
       sum(usedM) / sum(totalM) * 100 已使用百分比,
       sum(remainedM) / sum(totalM) * 100 剩余百分比
  FROM (SELECT b.file_id ID,
               b.tablespace_name tbs,
               b.file_name name,
               b.bytes / 1024 / 1024 totalM,
               (b.bytes - sum(nvl(a.bytes, 0))) / 1024 / 1024 usedM,
               sum(nvl(a.bytes, 0) / 1024 / 1024) remainedM,
               sum(nvl(a.bytes, 0) / (b.bytes) * 100),
               (100 - (sum(nvl(a.bytes, 0)) / (b.bytes) * 100))
          FROM dba_free_space a, dba_data_files b
         WHERE a.file_id = b.file_id
         GROUP BY b.tablespace_name, b.file_name, b.file_id, b.bytes
         ORDER BY b.tablespace_name)
 GROUP BY tbs

发现表空间USERS的表空间的已使用百分比是99%.再获取用户的默认表空间:

select username, DEFAULT_TABLESPACE
from dba_users
where username = 'scott';

scott用户的默认表空间刚好是USERS,找到表空间的物理路径:

select * from dba_data_files where tablespace_name ='USERS';

那就把这个表空间进行扩展:

alter database datafile 'D:\ORACLE\PRODUCT\ORADATA\TEST\USERS01.DBF' resize 5120M;

修改USERS表空间时较慢,花了4分多钟.修改完成后再次查询表空间的使用情况,再次查询看否执行成功。

Win7_x64_Oracle11G连接x32 PLSQL_Developer

前些天在CentOS里面搭了11G的环境。今天同事用在Win7_x64用PLSQL_Developer去连接时老是提示ORA-12151:无法处理服务名.解决了这个问题,连接进去一查询就提示

error01

一看就是当前连接用户没有对sys用户下的表v$session,v$sesstat,v$statname的select权限,在服务端以sysdba身份登录、授权:

grant select on v_$statname to username;
grant select on v_$sesstat to username;
grant select on v_$session to username;
grant select on v_$mystat to username;

执行了完事后,新问题:ORA-03114:未连接到ORACLE
error3
再查看本地的oracle客户端版本是81的精简客户端,感觉略老。在官网下了个11g的客户端,因为PLSQL_Developer(貌似这个软件并没有x64的)是x32的所以下了x32的版本。官网的下载地址如下:

http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html

下载完后解压到D盘根目录下: D:\instantclient_11_2 ,再目录下创建Tnsnames.ora文件:

TEST =
    (DESCRIPTION =
	(ADDRESS_LIST =
	     (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.18.111)(PORT = 1521))
	)
	(CONNECT_DATA =
	   (SERVICE_NAME = TEST)
	)
     )

创建一批处理:

@echo off
set path=D:\instantclient_11_2
set ORACLE_HOME=D:\instantclient_11_2
set TNS_ADMIN=D:\instantclient_11_2
set NLS_LANG=AMERICAN_AMERICA.AL32UTF8
start plsqldev.exe

放到PLSQL根目录下执行,启动PLSQL后直接取消进去设置:

error2

应用、确定,关闭软件,再次打开软件登陆,问题解决.查询正常.把以下变量加系统变量里,不然查询中文会显示乱码.

NLS_LANG=AMERICAN_AMERICA.AL32UTF8