启用https后部分电脑不能打开应用的问题定位及解决

启用https证书后,部分财务电脑用IE访问不了内部应用,其他浏览器正常,报错如下:

无法安全地连接到此页面
这可能是因为该站点使用过期的或不安全的 TLS 安全设置。如果这种情况持续发生,请与网站的所有者联系。
TLS 安全设置未设置为默认设置,这也可能导致此错误。
尝试此操作:
•返回到前一页

---阅读剩余部分---

PHP 7.4.1因缺少 libonig.so.2文件不能启动的问题处理

yum update更新完系统以后发现php7不能运行,访问nginx直接报502,tail查看nginx error log报错如下

2021/02/25 14:46:24 [crit] 1746#0: *6 connect() to unix:/usr/local/php7/var/run/php-cgi.sock failed (2: No such file or directory) while connecting to upstream, client: 10.8.118.36, server: zc.hongsin.cn, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/usr/local/php7/var/run/php-cgi.sock:", host: "xxx.xxxx.cn"

php-fpm7.jpg
看样子是php-fpm没有运行,使用systemctl查看php-fpm服务

systemctl status php-fpm7
● php-fpm7.service - The PHP FastCGI Process Manager
   Loaded: loaded (/usr/lib/systemd/system/php-fpm7.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since 四 2021-02-25 14:48:12 CST; 4min 48s ago
  Process: 26537 ExecStart=/usr/local/php7/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php7/etc/php-fpm.conf (code=exited, status=127)
 Main PID: 26537 (code=exited, status=127)

2月 25 14:48:12 wiki-cmdb systemd[1]: Started The PHP FastCGI Process Manager.
2月 25 14:48:12 wiki-cmdb php-fpm[26537]: /usr/local/php7/sbin/php-fpm: error while loading shared libraries: libonig.so.2: cannot open shared object file: No such file or directory
2月 25 14:48:12 wiki-cmdb systemd[1]: php-fpm7.service: main process exited, code=exited, status=127/n/a
2月 25 14:48:12 wiki-cmdb systemd[1]: Unit php-fpm7.service entered failed state.
2月 25 14:48:12 wiki-cmdb systemd[1]: php-fpm7.service failed.

关键信息:

2月 25 14:48:12 wiki-cmdb php-fpm[26537]: /usr/local/php7/sbin/php-fpm: error while loading shared libraries: libonig.so.2: cannot open shared object file: No such file or directory

查看php7版本:

/usr/local/php7/bin/php -V
/usr/local/php7/bin/php: error while loading shared libraries: libonig.so.2: cannot open shared object file: No such file or directory

看来就是libonig.so.2文件找不到的原因了,解决步骤:

安装对应组件,并做软连接
yum install oniguruma libsodium -y
ln -s /usr/lib64/libonig.so /usr/lib64/libonig.so.2

查看libonig.so库
ll /usr/lib64/libonig.so*
lrwxrwxrwx 1 root root     16 1月   4 17:42 /usr/lib64/libonig.so -> libonig.so.5.0.0
lrwxrwxrwx 1 root root     21 2月  25 14:57 /usr/lib64/libonig.so.2 -> /usr/lib64/libonig.so
lrwxrwxrwx 1 root root     16 1月   4 17:41 /usr/lib64/libonig.so.5 -> libonig.so.5.0.0
-rwxr-xr-x 1 root root 539352 5月  27 2020 /usr/lib64/libonig.so.5.0.0

启动php-fpm服务,查看版本号:

systemctl start php-fpm7
/usr/local/php7/bin/php -v
PHP 7.4.1 (cli) (built: Dec 27 2019 13:39:08) ( ZTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

问题解决,应用恢复访问。

"SQLServer数据库正在使用,所以无法获得对数据库的独占访问权"的问题解决方法

SQLServer2008R2在还原数据库的时候报错,“因为数据库正在使用,所以无法获得对数据库的独占访问权。”,如下图:
1.png
出现该问题的原因已经很明确了,就是有其他用户还在连接着数据库,可以先尝试重启数据库,如果还是如此的话,可采用下面方法:
在master中创建一个存储过程,用来断开和数据库的所有链接:

USE [master]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
  --建一个存储过程,断开所有用户连接。  
  create   proc   [dbo].[killspid]   (@dbname   varchar(20))  
  as  
  begin  
  declare   @sql   nvarchar(500)  
  declare   @spid   int  
  set   @sql='declare   getspid   cursor   for    
  select   spid   from   sysprocesses   where   dbid=db_id('''+@dbname+''')'  
  exec   (@sql)  
  open   getspid  
  fetch   next   from   getspid   into   @spid  
  while   @@fetch_status<>-1  
  begin  
  exec('kill   '+@spid)  
  fetch   next   from   getspid   into   @spid  
  end  
  close   getspid  
  deallocate   getspid  
  end  
GO

断开和库的所有链接:

use   master   
exec   killspid   '出问题的数据库名'

实际场景中可以开启防火墙,只允许本机访问数据库,然后执行这个存储过程即可正常进行各种操作;
不建议使用更改数据库为单用户模式,仍然会有类似提示,如下图:
2.png

PyCharm自定义文件模板和代码模板

PyCharm支持配置自定义文件模板和代码模板,配置后每次新建文件均会自动填充模板内容,如:作者信息等。
code.png
设置路径
“PyCharm”→“File”→“Settings”→“Editor”→“File and Code Templates”→选择一个你想要设置的→输入模板配置→“确定”
2.png
所有文件都可以设置模板,附常用模板变量:

变量    含义
${PROJECT_NAME}    当前模板名称
${NAME}    文件创建时的文件名
${USER}    当前用户名
${DATE}    当前系统日期
${TIME}    当前系统时间
${YEAR}    年
${MONTH}    月
${DAY}    日
${HOUR}    小时
${MINUTE}    分钟
${PRODUCT_NAME}    创建文件IDE的名称
${MONTH_NAME_SHORT}    英文月份缩写, 如: Jan, Feb, etc
${MONTH_NAME_FULL}    英文月份全称, 如: January, February, etc

PyCharm使用autopep8格式化Python代码

PEP 8介绍:
PEP 8,Style Guide for Python Code,是Python官方推出编码约定,主要是为了保证 Python 编码的风格一致,提高代码的可读性。
官网地址:https://www.python.org/dev/peps/pep-0008/

Autopep8
Autopep8是自动将Python代码格式化为符合PEP 8风格的工具。它使用pycodestyle工具来确定代码的哪些部分需要被格式化。Autopep8能够修复大部分pycodestyle检测的格式问题。
github地址:https://github.com/hhatto/autopep8

使用pip安装Autopep8

pip install autopep8

查找autopep8的安装路径:

where autopep8
C:\Users\mahl01\.virtualenvs\python-project-APBqVzYh\Scripts\autopep8.exe

Autopep8命令行使用方式如下

autopep8 --in-place --aggressive --aggressive <filename>

Pycharm配置Autopep8方法:
1、选择菜单「File」–>「Settings」–>「Tools」–>「External Tools」–>点击加号添加工具
1.png
2、填写如下配置项,点击「OK」保存
2.png

Name:Autopep8 (可随意填写)

Tools settings:

    Programs:C:\Users\mahl01\.virtualenvs\python-project-APBqVzYh\Scripts\autopep8.exe 

    Arguments:--in-place --aggressive --ignore=E123,E133,E50 $FilePath$

    Working directory:$ProjectFileDir$

3、选择菜单「Tool」–>「Extern Tools」–>「Autopep8」即可使用autopep8自动格式化python代码了。
3.png
black的安装设置方法和Autopep8一致。

PyCharm修改格式化代码快捷键

安装Pycharm以后保存代码的时候并不会自动格式化代码,默认格式化代码的快捷键是CTRL+ALT+L比较麻烦,更改为Alt+F键,操作方法步骤如下:

1、File-Settings--keymap

2、找到需要修改的功能

3、鼠标右键选择——选择“add keyboard shortcut”

4、直接按需要设置的快捷键位,如ALT+F

5、最后应用即可,如下图:
format.png

实际go的fmt挺好用的,自动格式化。

go build 和 go install 的区别

首先,go install与go build都可生成执行文件,
go build
通过go build加上要编译的Go源文件名,可得到一个可执行文件,默认情况下这个文件的名字为源文件名字去掉,生成可执行的文件放在当前目录中。

$ go build  hellogo.go
$ ls
hellogo* hellogo.go

也可以通过-o选项来指定其他名字:

$ go build -o myfirstgo hellogo.go
$ ls
myfirstgo* hellogo.go

如果我们在go-examples目录下直接执行go build命令,后面不带文件名,我们将得到一个与目录名同名的可执行文件:

$ go build
$ ls
go-examples* hellogo.go

go install
与build命令相比,install命令在编译源码后还会将可执行文件或库文件安装到约定的目录下。
go install编译出的可执行文件以其所在目录名(DIR)命名
go install将可执行文件安装到与src同级别的bin目录下,bin目录由go install自动创建
go install 还会把导入的依赖包编译到 $GOPATH/pkg,并缓存,如果包未做更改,下次编译则直接使用缓存。
go build 命令加参数 -i 也能达到go install 的效果。
如项目很大,每次编译都要花很长时间,则建议使用 go install 来编译,充分使用它对依赖包的缓存功能。

安装Gin框架protobuf包的问题记录

运行gin框架报错如下:

package google.golang.org/protobuf/encoding/protojson: unrecognized import path "google.golang.org/protobuf/encoding/protojson"(https fetch: Get https://google.golang.org/protobuf/encoding/protojson?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)
package google.golang.org/protobuf/encoding/prototext: unrecognized import path "google.golang.org/protobuf/encoding/prototext"(https fetch: Get https://google.golang.org/protobuf/encoding/prototext?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)

缺少protobuf/encoding包引起的报错,代码已经转移到github上面了,但代码里面的包依赖还是没有修改,是google.golang.org这种,被墙后不能用go get形式安装。

---阅读剩余部分---

go get golang.org/x 包失败的解决方法

由于GFW限制问题,国内使用 go get 安装 golang 官方包可能会失败,如我自己在安装 collidermain 时,出现了以下报错:

$ go get collidermain
package golang.org/x/net/websocket: unrecognized import path "golang.org/x/net/websocket" (https fetch: Get https://golang.org/x/net/websocket?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)

其他包也有类似直接不成功的问题,不翻墙的情况下怎么解决这个问题?其实 golang 在 github 上建立了一个镜像库,如 https://github.com/golang/net 即是 https://golang.org/x/net 的镜像库
获取 golang.org/x/net 包,其实只需要以下步骤:

mkdir -p $GOPATH/src/golang.org/x
cd $GOPATH/src/golang.org/x
git clone https://github.com/golang/net.git

其它 golang.org/x 下的包获取皆可使用该方法解决。

CentOS7中文目录换成英文目录

安装中文版的CentOS7之后,root目录和home目录下会出现中文的路径名,如“桌面”、“文档”、“图片”、“公共的”、“下载”、“音乐”、“视频”等目录,转换方法如下:
修改/etc/locale.conf文件内容如下:

cat /etc/locale.conf
LANG="en_US.UTF-8"

---阅读剩余部分---

Oracle修改SGA后无法启动解决方法

Oracle修改SGA超过系统内存后,会造成启动失败,解决方法如下:

1、登录oracle 
sqlplus sys/sys@XXX(网络服务名). as sysdba 
能够登陆 
提示已经连接到空闲例程;

2、找 pfile,在 /.../admin/XXX(服务名)/pfile 下,init.ora.XXXXXXX(数字串) 

3、执行命令 
SQL> startup pfile='pfile 路径' 
通过指定的 pfile 启动数据库实例 

4、执行命令 
SQL> create spfile from pfile='pfile 路径';(一定要有分号!) 
创建成功会提示: 文件已创建。 

5、查看SGA
show parameter sga

已经SGA恢复了调整之前的配置,在此根据系统实际内存修改大小即可。

ORA-27102: out of memory 故障处理

ORA-27102: out of memory一般发生在服务器系统配置变更以后,oracle在启动的时候报错,

SQL> startup
ORA-27102: out of memory
Linux-x86_64 Error: 28: No space left on device

系统实际可用内存还剩几十个GB,这个问题在linux到64位中比较常见,当SGA的值大于共享内存就会报这个错;
解决方法:
--MetaLink上给出了关于这个问题的描述 [ID 301830.1]
--是由于kernel.shmall值设置太小引起的

kernel.shmall
  该参数用于配置系统一次能够使用的最大的共享页面数,该参数的值总是ceil(shmmax/PAGE_SIZE)
Oracle 9i,10g,11g的x86以及x86-64平台推荐以及缺省的大小通常为2097152
在大多数情况下,该参数是够用的。按照上述计算方式页面内存总大小可以达到8GB(2097152*4096 bytes (shmall*PAGE_SIZE))

  通常情况下,PAGE_SIZE 的大小为4096byte,除非使用了Big Pages 或 Huge Pages
对于超出8GB系统内存,如共享内存段(shmmax)的最大大小是16G,则所需要共享内存页数(shmall)为16GB/4KB=16777216KB/4KB=4194304(页)

  共享内存在shmall这个参数中设置,shmall单位为页,换算成内存大小还需要把两个值相乘,如shmall=8388608,那么共享内存的大小就是(8388608*4096)/(1024*1024*1024)=32G
其他依次类推;



---阅读剩余部分---

Oracle查看系统运行情况常用SQL

1、查看系统当前连接会话数

select s.value,s.sid,a.username
from 
v$sesstat S,v$statname N,v$session A
where 
n.statistic#=s.statistic# and
name='session pga memory'
and s.sid=a.sid
order by s.value;

2、等待最多的用户

SELECT s.SID, s.username, SUM (a.wait_time + a.time_waited) total_wait_time
    FROM v$active_session_history a, v$session s
   WHERE a.sample_time BETWEEN SYSDATE - 30 / 2880 AND SYSDATE
GROUP BY s.SID, s.username
ORDER BY total_wait_time DESC;

---阅读剩余部分---

MySQL 8.0.21重置root密码

MySQL 8.0.21忘记密码的时候重置密码方法基本和MySQL5.7方法一样,重置方法如下:
1、先修改my.cnf文件在[mysqld]部分增加skip-grant-tables参数。
2、重启mysql服务
3、直接使免密码登录mysql,使用下面命令修改root密码:

FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
FLUSH PRIVILEGES;

顺序不能乱喔,要么会报ERROR 1290 (HY000)错误。

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

VIA官网文档:
https://dev.mysql.com/doc/refman/8.0/en/resetting-permissions.html

ORA-00257报错处理

用户反映NC测试库不能连接,报ORA-00257错误,截图如下:
ORA-00257.png
错误原因是很常见的‘归档日志’写满‘快闪恢复区’(flash recovery area)导致的问题。解决方法如下:
一、删除过期的归档文件;
二、修改快闪恢复区(flash recovery area)的大小;





---阅读剩余部分---

MySQL8.0.21连接报错Plugin caching_sha2_password could not be loaded解决方法

MySQL8默认加密使用的是caching_sha2_password插件,

root@devops_db 17:54:  [mysql]> show variables like 'default_authentication_plugin';
+-------------------------------+-----------------------+
| Variable_name                 | Value                 |
+-------------------------------+-----------------------+
| default_authentication_plugin | caching_sha2_password |
+-------------------------------+-----------------------+
1 row in set (0.00 sec)

root@devops_db 17:55:  [mysql]>  select host,user,plugin from mysql.user;
+-----------+------------------+-----------------------+
| host      | user             | plugin                |
+-----------+------------------+-----------------------+
| %         | ice              | caching_sha2_password |
| localhost | mysql.infoschema | caching_sha2_password |
| localhost | mysql.session    | caching_sha2_password |
| localhost | mysql.sys        | caching_sha2_password |
| localhost | root             | caching_sha2_password |
+-----------+------------------+-----------------------+
5 rows in set (0.00 sec)

使用SQL客户端连接的时候就会报Plugin caching_sha2_password could not be loaded错误,常见有如下解决方法:
1、写入my.cnf文件后重启MySQL:

[mysqld]
default_authentication_plugin=mysql_native_password

2、兼容新老版本的认证方式:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'xxxxxx' PASSWORD EXPIRE NEVER; #修改加密规则 
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'xxxxxx'; #更新用户密码 
FLUSH PRIVILEGES; #刷新权限

3、创建用户时指定加密方式:

CREATE USER 'ice'@'10.10.%' IDENTIFIED WITH mysql_native_password BY 'password'; #加密方式为
GRANT ALL privileges on TESTDB.* to 'ice'@'10.10.%' with grant option;
FLUSH PRIVILEGES;

使用mysql_native_password插件加密即可链接,mysql_native_password也是5.7以下版本使用的加密方式。

CentOS7.8编译安装MySQL8.0.21

  Centos7.8安装的是minimal最小化版本,首先安装基础必需的软件包及更新下系统:

yum install gcc gcc-c++ gcc-g77 make autoconf automake ncurses ncurses-devel openssl openssl-devel bison cmake cmake3 -y

MySQL8.0需要用gcc的版本为 4.8以上,CentOS自带的版本比较低,通过yum安装的版本也低,参考下面升级GCC版本

升级GCC版本参考:https://www.unixso.com/Linux/update-gcc.html

MySQL8.0.21.png

添加mysql运行账号及数据保存目录

groupadd mysql
useradd -g mysql mysql -s /bin/false
mkdir -p /data/mysql/
mkdir -p /data/mysql_logs/binlog/
touch /data/mysql_logs/error.log
chown -R mysql:mysql /data/mysql/
chown -R mysql:mysql /data/mysql_logs/

---阅读剩余部分---

最新

分类

归档

评论

  • ice: 嗯,少了个cd进入目录·
  • peter: wget https...
  • Emerson: 写的好

其它