干冬

过年回老家过年,听说一冬天没下雪,干了一冬,空气干燥,流感肆掠;

农村经济萧条,年轻人80%都外出务工看,剩下的只有老弱病残和留守儿童,国内贫穷落后的农村大部分如此相似;

在要离开的前一天晚上终于下了一场雪,万物一片白;

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

Linux下快速PHP编译安装fileinfo扩展

1、进入对应php版本扩展目录:

cd /opt/php-7.2.12/ext/fileinfo

2、编译及安装

/usr/local/php/bin/phpize
./configure -with-php-config=/usr/local/php/bin/php-config
make
make install

3、修改php.ini

extension = fileinfo.so

4、重启php-fpm生效

systemctl restart php-fpm

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,则关闭客户端连接。






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

最新

分类

归档

评论

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

其它