CentOS7.x禁用 rpcbind 111端口

 CentOS7.x新安装版本后会使用systemd进程启用rpcbind监听111端口,NFS需要用到这个服务,一般可以禁用掉,使用如下:

//停止进程
systemctl stop rpcbind.socket
systemctl stop rpcbind

//禁止随开机启动
systemctl disable rpcbind.socket 
systemctl disable rpcbind

rpcbind说明:

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

冬日阳光

魔都下了一个月的冬雨,太潮湿,人的心灵和肉体都快发霉了;

阳光终于出来了,忽然觉得能晒到太阳也是一种很奢侈的事情;

早出晚归,终日不见阳光;

阳光底下散散步挺好,让心别发霉。

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

impdp导入还原命令详解

Oracle数据库还原IMPDP命令是相对于EXPDP命令的,方向是反向的。即对于数据库备份进行还原操作。

[oracle@ehrtest108 ~]$ impdp -help

Import: Release 11.2.0.4.0 - Production on чǚ̄ 1Ղ 17 13:48:33 2019

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.


The Data Pump Import utility provides a mechanism for transferring data objects
between Oracle databases. The utility is invoked with the following command:

     Example: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp

You can control how Import runs by entering the 'impdp' command followed
by various parameters. To specify parameters, you use keywords:

     Format:  impdp KEYWORD=value or KEYWORD=(value1,value2,...,valueN)
     Example: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp

USERID must be the first parameter on the command line.

参数说明:

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

impdp或imp导入乱码解决

impdp或imp导入时,显示乱码或问号等乱码,最终导致失败,一般主要是由于编码字符集设置不同导致,导入时先确认导出的编码是什么,然后设置客户端LNS_LANG在导入,

LS_LANG 参数构成
NLS_LANG参数由以下局部构成:NLS_LANG=<Language>_<Territory>.<Clients Characterset>,NLS_LANG各局部含义如下:

LANGUAGE指定:
Oracle消息利用的语言
日期中月份和日揭示
TERRITORY指定:
货币和数字款式
地区和计算礼拜即日期的适应
CHARACTERSET:扼制客户端利用过程利用的字符集。

中文一般用SIMPLIFIED CHINESE_CHINA.ZHS16GBK编码

1、查询导入库字符集

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

impdp导入时ORA-31684报错解决

Oracle中使用impdp导入数据时,如果导入之前已经创建了用户,会提示错误:“ORA-31684:对象类型已经存在”,如:

[oracle@ehrtest108 ~]$ impdp yksoft/123456ABC@ehrtest directory=DATA_PUMP_DIR dumpfile=GQYS_ORACLE11201_20180827.DMP full=y

报错内容:

ORA-31684: 对象类型 USER:"YKSOFT" 已存在

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

PHP7使用Redis保存session

PHP默认就支持保存session到redis,不需任何额外代码,首先安装redis,参考 redis快速安装
PHP默认使用文件存储session,如果并发量大,效率非常低,如项目同时运行在多台服务器上做了分布式部署,就无法使用常规的Session记录方式来记录用户的会话了,否则用户在服务器1上完成登录,我们下次在服务器2上访问其他模块就无法获取到该用户的信息。
php-redis.png



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

修改注册表解决Windows 2008 R2 系统默认80端口被系统占用

安装好Windows2008R2企业版以后,默认80端口被占用,检查方法如下:

netstat -ano | findstr :80

80.png

任务管理器查看进 pid 为4
 映像名称   pid  描述
 system    4    NT kernel&System

4.png
修改注册表解决:

regedit
 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP'右边有一个'start'的DWORD的值将'3'改为'4'

regedit.png
最后重启即可。

opcache参数配置优化详解

我们在日常的PHP开发过程中,应该经常会听见Opcache这个词,那么啥是Opcode呢?
Install-OPcache-in-CentOS-7.png
Opcache 的前生是 Optimizer+ ,它是PHP的官方公司 Zend 开发的一款闭源但可以免费使用的 PHP 优化加速组件。 Optimizer+ 将PHP代码预编译生成的脚本文件 Opcode 缓存在共享内存中供以后反复使用,从而避免了从磁盘读取代码再次编译的时间消耗。同时,它还应用了一些代码优化模式,使得代码执行更快。从而加速PHP的执行。

Optimizer+ 于 2013年3月中旬改名为 Opcache。并且在 PHP License 下开源: https://github.com/zendtech/ZendOptimizerPlus



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

php-fpm.conf参数说明

php-fpm.conf参数说明:
1、pm = dynamic 对于专用服务器,pm可以设置为static。
如何控制子进程,选项有static和dynamic。

如果选择static,则由pm.max_children指定固定的子进程数。
如果选择dynamic,则由pm.max_children、pm.start_servers、pm.min_spare_servers、pm.max_spare_servers 参数决定:
pm.max_children:静态方式下开启的php-fpm进程数量。
pm.start_servers:动态方式下的起始php-fpm进程数量。
pm.min_spare_servers:动态方式下的最小php-fpm进程数量。
pm.max_spare_servers:动态方式下的最大php-fpm进程数量。


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

Centos7.6快速编译安装Nginx-1.14.2 及Php7.3.0

PHP7.3.png
操作系统版本:

cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core) 

安装扩展包并更新系统内核:

yum install epel-release -y
yum update -y

安装基础依赖组件

yum install wget vim pcre pcre-devel openssl openssl-devel libicu-devel gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel ncurses ncurses-devel curl curl-devel krb5-devel libidn libidn-devel openldap openldap-devel nss_ldap jemalloc-devel cmake boost-devel bison automake libevent libevent-devel gd gd-devel libtool* libmcrypt libmcrypt-devel mcrypt mhash libxslt libxslt-devel readline readline-devel gmp gmp-devel libcurl libcurl-devel openjpeg-devel openssl openssl-devel -y

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

NC(netcat)瑞士军刀使用使用方法参数

NC官网地址:https://eternallybored.org/misc/netcat/
截至目前最新版本:netcat 1.12
netcat被誉为网络安全界的'瑞士军刀',简单而有用的工具,透过使用TCP或UDP协议的网络连接去读写数据,它被设计成一个稳定的后门工具, 能够直接由其它程序和脚本轻松驱动。同时,它也是一个功能强大的网络调试和探测工具,能够建立你需要的几
乎所有类型的网络连接。
Netcat.jpg
RHEL/CentOS安装:

yum install nc -y

Windows直接下载https://eternallybored.org/misc/netcat/netcat-win32-1.12.zip解压即可使用

参数说明:

-h 查看帮助信息 
-d 后台模式 
-e prog程序重定向,一但连接就执行[危险] 
-i secs延时的间隔 
-l 监听模式,用于入站连接 
-L 监听模式,连接天闭后仍然继续监听,直到CTR+C 
-n IP地址,不能用域名 
-o film记录16进制的传输 
-p[空格]端口 本地端口号 
-r 随机本地及远程端口 
-t 使用Telnet交互方式 
-u UDP模式 
-v 详细输出,用-vv将更详细 
-w数字 timeout延时间隔 
-z 将输入,输出关掉(用于扫锚时) 





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

pipenv安装部署python虚拟环境

为解决python不同版本混用的尴尬,避免污染系统python的依赖包环境, 我们需要创建虚拟环境, 将python2和python3隔离使用,之前使用virtualenv创建,需要将虚拟环境依赖包的导出为requirements.txt, 一旦依赖包变动,就要重新导出,而pipenv会自动帮我们生成Pipfile和Pipfile.lock, Pipfile会随着项目,当我们安装时只需在Pipfile和Pipfile.lock所在的目录下运行pipenv install就可以了,非常方便。
官网地址:https://pipenv.readthedocs.io/en/latest/
pipenv.png

安装pipenv:
方法一: ubuntu用apt安装

sudo apt install software-properties-common python-software-properties
sudo add-apt-repository ppa:pypa/ppa
sudo apt update
sudo apt install pipenv

方法二: windows用pip安装

pip install pipenv



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

2018全球互联网架构大会上海站略影

周六去参加了2018全球互联网架构大会上海站,感悟良多;

云服务是趋势,关注区块链的人反而没有数据库和微服务架构的人多,
可能看到了太多的圈币跑路,目前区块链技术在互联网公司用的还是较少;

2018年热点技术还是容器Docker、微服务、框架及相关技术,也可以说是容器微服务的元年;

阿里系在容器方面走的比较远,特别是蚂蚁金服;

“容器本身没有价值,有价值的是容器编排”,


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

Nginx按天或按小时切割日志

Nginx日志访问量大的时候,日志文件增长很快,查询日志很不方便,以下为实现按天或者小时将access文件切割:
按天切割方法如下:
创建log.sh脚本:

vim /usr/local/nginx/logs/log.sh
#!/bin/bash
LOG_PATH=/usr/local/nginx/logs/
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)
mv ${LOG_PATH}access.log ${LOG_PATH}access-${YESTERDAY}.log
mv ${LOG_PATH}error.log ${LOG_PATH}error-${YESTERDAY}.log
/usr/local/nginx/sbin/nginx -s reload

给权限

chmod +x /usr/local/nginx/logs/log.sh

crontal -e 加入定时执行,每天凌晨的时候,对日志进行切割,并reload

00 00 * * * /usr/local/nginx/logs/log.sh

按小时切割:
创建log.sh脚本:

vim /usr/local/nginx/logs/log.sh
#!/bin/bash
LOG_PATH=/usr/local/nginx/logs/
YESTERDAY=$(date -d "-1hours" +%Y-%m-%d_%H)
mv ${LOG_PATH}access.log ${LOG_PATH}access-${YESTERDAY}.log
mv ${LOG_PATH}error.log ${LOG_PATH}error-${YESTERDAY}.log
/usr/local/nginx/sbin/nginx -s reload

给权限

chmod +x /usr/local/nginx/logs/log.sh

crontal -e 加入定时执行,每个整点的时候,对日志进行切割,并reload

*/60  * * * * /usr/local/nginx/logs/log.sh

Redis客户端输出缓冲区限制调整

Redis为了解决输出缓冲区消息大量堆积的隐患,设置了一些保护机制,主要采用两种限制措施:
大小限制,当某一客户端缓冲区超过设定值后直接关闭连接;
持续性限制,当某一客户端缓冲区持续一段时间占用过大空间时关闭连接。
通过CONFIG GET *查看,可以找到客户端输出缓冲区的默认配置:

client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60

对于普通客户端来说,限制为0,也就是不限制。因为普通客户端通常采用阻塞式的消息应答模式,何谓阻塞式呢?如:发送请求,等待返回,再发送请求,再等待返回。这种模式下,通常不会导致Redis服务器输出缓冲区的堆积膨胀;
对于Pub/Sub客户端(也就是发布/订阅模式),大小限制是8M,当输出缓冲区超过8M时,会关闭连接。持续性限制是,当客户端缓冲区大小持续60秒超过2M,则关闭客户端连接;
对于slave客户端来说,大小限制是256M,持续性限制是当客户端缓冲区大小持续60秒超过64M,则关闭客户端连接。






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

MySQL视图查看及权限说明

查看视图是指查看数据库中,已经存在的视图的定义 必须要有SHOW VIEW的权限
查看视图有三种方式:
DESCRIBE语句
使用DESCRIBE语句,查看视图
MySQL中,使用DESCRIBE可以查看视图的字段信息,其中,包括字段名、字段类型等信息
语法格式:

DESCRIBE 视图名; 
或者
DESC 视图名;
root@sso_db_69 17:58:  [escdb]> desc oa_org;
+-------------+--------------+------+-----+---------+-------+
| Field       | Type         | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+-------+
| id          | varchar(36)  | NO   |     | NULL    |       |
| name        | varchar(255) | NO   |     | NULL    |       |
| fullName    | varchar(255) | YES  |     | NULL    |       |
| resource_id | varchar(255) | YES  |     | NULL    |       |
+-------------+--------------+------+-----+---------+-------+
4 rows in set (0.01 sec)





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

MySQL:Incorrect integer value: '' for column 'id' at row 1警告信息

MySQL5.x在insert into插入时,如果不带id写成为空如下:

INSERT INTO `server` VALUE ('',
'SSO系统',
'sso-db',
'192.168.6.37',
'/',
'运行',
'生产',
'4',
'8',
'100',
'CentOS Linux release 7.5',
'IDC机房',
'zuul',
'8000',
'/',
'王二小',
'2018-06-30',
server_update = NOW(),
'test11111111111111111111'
);

就会警告如下:

Warning Code : 1366
Incorrect integer value: '' for column 'id' at row 1

MySQL5的都会遇到这样的问题,插入空字符要使用NULL,改成如下:

INSERT INTO `server` VALUE (NULL,
'SSO系统',
'sso-db',
'192.168.6.37',
'/',
'运行',
'生产',
'4',
'8',
'100',
'CentOS Linux release 7.5',
'IDC机房',
'zuul',
'8000',
'/',
'王二小',
'2018-06-30',
server_update = NOW(),
'test11111111111111111111'
);

即可插入成功,同时也无警告信息。

php的session过期时间

PHP从4.0中加入了对Session的支持,方便了我们开发,Session储存在服务器端,根据客户端 提供的SessionID来得到这个用户的文件,然后读取文件,取得变量的值,SessionID可以使用客户端的Cookie或者Http1.1协议的 Query_String(就是访问的URL的“?”后面的部分)来传送给服务器,然后服务器读取Session的目录。

先来看看在php.ini中session怎么设置,打开 php.ini,查找Session设置部分中以下一项,代码如下:

session.save_path = "N;/path"
session.save_path = "C:/Temp"  #此处以你自己设定的路径为准

这项设置提供给我们可以给session存放目录进行多级散列,其中“N”表示要设置的目录级数,后面的“/path”表示session文件存放的根目录路径,比如我们设置为下面的格式,代码如下:

session.save_path = "2;C:/Temp"

上面的设置表示我们把php的session文件进行两级目录存储,每一级目录分别是0-9和a-z共36个字母数字为目录名,这样存放session的目录可以达到36*36个,共1332个文件夹,相信作为单台服务器来说,这是完全够用了,如果说您的系统架构设计为多台服务器共享session数据,可以把目录级增加到3级或者更多。

session.gc_maxlifetime = 1440 #(PHP5默认24分钟)
session.gc_probability = 1
session.gc_divisor = 1000   #garbage collection 有个概率的,1/1000就是session 1000次才有一次被回收。

将session.gc_divisor = 0,这样就能明显的看到SESSION过期的效果了.

session有过期的机制:
session.gc_maxlifetime 原来session 过期是一个小概率的事件,分别使用session.gc_probability和session.gc_divisor 来确定运行session 中gc 的概率 session.gc_probability和session.gc_divisor的默认值分别为 1和100。分别为分子和分母 所以session中gc的概率运行机会为1% 。如果修改这两个值,则会降低php的效率。

概率是gc_probability/gc_divisor

session.gc_probability = 1
session.gc_divisor = 100

注意1:假设这种情况gc_maxlifetime=120,如果某个session文件最后修改时间是120秒之前,那么在下一次回收(1/100的概率)发生前,这个session仍然是有效的。

注意2:如果你的session使用session.save_path中使用别的地方保存session,session回收机制有可能不会自动处理过期session文件。这时需要定时手动(或者crontab)的删除过期的session:

cd /path/to/sessions; find -cmin +24 | xargs rm

PHP中的session永不过期

不修改程序是最好的方法了,因为如果修改程序,测试部一定非常郁闷,那么只能修改系统环境配置,其实很 简单,打开php.ini设置文件,修改三行如下:

1、session.use_cookies

把这个的值设置为1,利用cookie来传递sessionid

2、session.cookie_lifetime

这个代表SessionID在客户端Cookie储存的时间,默认是0,代表浏览器一关闭SessionID就作废……就是因为这个所以PHP的 session不能永久使用! 那么我们把它设置为一个我们认为很大的数字吧,999999999怎么样,可以的!就这样。

3、session.gc_maxlifetime

这个是Session数据在服务器端储存的时间,如果超过这个时间,那么Session数据就自动删除! 那么我们也把它设置为99999999。

就这样一切ok了,当然你不相信的话就测试一下看看——设置一个session值过个10天半个月的回来看看,如果你的电脑没有断电或者宕机,你仍然可以看见这个sessionid。

via: http://php.net/manual/zh/session.configuration.php#ini.session.gc-divisor

最新

分类

归档

评论

  • Liang: 贴下编译参数和步骤,...
  • shao3911: 您好,为什么我在编译...
  • aliang: 先看是yum安装还是...
  • aliang: 将原来的nginx安...
  • yen: 3、如果要回滚的话,...
  • yen: 刚好需要升级ngin...
  • 文雨: 一些新的method...
  • aliang: 默认不屏蔽估计开发团...
  • 山野愚人居: PHP既然允许直接使...
  • aliang: 最下面有github地址·

其它