未来往事
本分类下收藏如下文章:RedHat | CentOS | Ubuntu 等发行版Linux相关技术文章

phpmyadmin Error during session start 不指定

Rinald 本站原创 Linux 2017/02/27 17:55
错误详细描述:
phpMyAdmin - Error
Error during session start; please check your PHP and/or webserver log file and configure your PHP installation properly. Also ensure that cookies are enabled in your browser.
错误截图:
点击在新窗口中浏览此图片

系统环境:
centos7 apache

错误原因分析:
服务端无法写入session或客户端禁用cookie导致

错误解决思路:
1.查看php.ini配置文件session.save_path参数设定,需要启用,并注意设定的path目录,可以设置为:/var/lib/php/session
session.save_path="/var/lib/php/session"
2.查看session.save_path设定的目录/var/lib/php/session/是否具有写入权限(当前web服务运行用户),如果没有请更改调整权限,如:
drwxrwx---. 2 www www 4096 2月  27 12:30 session

至此,问题解决。刷新phpmyadmin重试,如有问题欢迎补充。
linux TIME-WAIT相关参数:
net.ipv4.tcp_tw_reuse = 0    表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭
net.ipv4.tcp_tw_recycle = 0  表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭
net.ipv4.tcp_syncookies = 0   表示关闭SYN Cookies。
PS:/sbin/sysctl -a可以查看Linux各项内核参数

修改TIME-WAIT相关参数配置:
#vi /etc/sysctl.conf
net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。

让配置修改即刻生效
#/sbin/sysctl -p
注意:
1. tw_reuse,tw_recycle 必须在客户端和服务端timestamps 开启时才管用(默认打开)
2. tw_reuse 只对客户端起作用,开启后客户端在1s内回收
3. tw_recycle 对客户端和服务器同时起作用,开启后在 3.5*RTO 内回收,RTO 200ms~ 120s 具体时间视网络状况。内网状况比tw_reuse 稍快,公网尤其移动网络大多要比tw_reuse 慢,优点就是能够回收服务端的TIME_WAIT数量


查看服务器的TCP连接状态:
#netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
(或#netstat -ntu|awk -F '[ :]+' '/^tcp/{arr[$8]++}END{for(key in arr){print arr[key],key}}'|sort -rn -k1)
TIME_WAIT 71
CLOSE_WAIT 1
FIN_WAIT1 3
FIN_WAIT2 12
ESTABLISHED 186
PS:处于TIME_WAIT状态的sockets从原来的600多减少到70左右。处于SYN_RECV等待处理状态的sockets为0。

合理的优化linux系统内核参数可以提高服务器的并发 负载处理能力、可用率。如本文的优化可以有效降低因TIME_WAIT连接引起的网络故障。
程序开发过程中当使用了svn软件进行版本控制后,程序每个目录下都会有一个.svn目录存在,开发完当交付产品或上线时这些目录是冗余的需要进行删除,批量删除命令如下:
find . -type d -name ".svn"|xargs rm -rf  #先(递归)找到当前路径下含有 .svn的文件目录,再经xargs逐个删除

find . -type d -iname ".svn" -exec rm -rf {} \; #先(递归)找到.当前路径下含有.svn的文件目录,再删除
PS:-iname filename #同-name ,区别 -i 忽略大小写

扩展补充:find常见用法示例
find path -option [ -print ] [ -exec -ok command ] {} \;
#-print 将查找到的文件输出到标准输出
#-exec command {} \; —–将查到的文件执行command操作,{} 和 \;之间有空格,{} 表示find到的结果,最后有反斜杠\ 和 分号 ; 表示命令结束?
#-ok 和-exec相同,只不过在操作前要询用户
#find 根据下列规则判断 path 和 expression(命令选项参数 -option),在命令列上第一个 – ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。

debian打开crontab日志 不指定

Rinald 本站原创 Linux 2015/11/20 17:32
debian开启crontab日志,该日志记录状态系统默认为关闭状态。

修改文件:
# vi /etc/rsyslog.conf
cron.*                                /var/log/cron.log


重启日志服务:
# /etc/init.d/rsyslog restart

linux查找替换目录下文件中包含的字符串-sed命令

查找文件夹下包含字符串的文件
例:查找/opt/web/blog目录下所有包含”demo.fity.cn”的文件。
grep -lr 'demo.fity.cn' /opt/web/blog/*


vim替换单个文件中所有字符串方法
例:替换当前文件中所有demo为blog
:%s/demo/blog/g
#注释:%表示替换说有行,g表示替换一行中所有匹配点


替换文件夹下包含字符串的文件
sed结合grep,例:将目录/opt/web/blog下所有文件中的demo.fity.cn都替换为fity.cn:
sed -i "s/demo.fity.cn/fity.cn/g" `grep demo.fity.cn -rl /opt/web/blog`
说明信息:
Thinkphp版本:3.2
URL_MODEL配置2

解决方法:
rewrite ^/Public/(.*)$ /Public/$1 break; //加在下面这行规则上面,假设静态资源位于根目录下Public目录下
rewrite ^(.*)$ /index.php?s=$1 last;
Debian安装LNMP报错Error:php not found
如果你在安装中遇到这类问题,建议对错误提示的组件部分进行单独安装或者你也可以将LNMP安装错误日志上传到官方论坛等待处理。本文博主未来往事在安装LNMP中遇到了Error:php not found的错误,最后通过运行LNMP组件中的php升级脚步单独安装php,最终成功安装了LNMP环境:./upgrade_php.sh

关于LNMP升级说明,参考《LNMP升级及Nginx、MySQL/MariaDB、PHP升级说明》

SSH连接端口及监听IP地址修改 不指定

Rinald 本站原创 Linux 2014/12/23 00:44
SSH端口修改 SSH侦听/接收IP地址修改

最近购置了一台VPS测试,顺道购买了几个IP地址,考虑到系统SSH默认端口为22(Debian系统),出于安全考虑,把SSH端口修改为了8999,所监听的IP地址修改为其中的一个。修改方法:
#vi /etc/ssh/sshd_config
Port 22 #修改为8999
ListenAddress 192.168.1.188 #修改SSHD服务监听/接收的IP,IP格式
#service sshd restart #保存重启
PS:当然你也可以并列多个Port或ListenAddress来侦听多个端口及IP(不建议)。

PureFTPd安装配置 权限分离 不指定

Rinald 本站原创 Linux 2014/12/17 16:33
Pure-FTPd FTP工具安装配置 权限分离
已知:服务器nginx web服务使用的账号及组为web web

1、Pure-FTPd软件安装配置(略)

2、编辑配置文件修改默认的21号端口为2199
#vi pure-ftpd.conf
Bind  0.0.0.0,2123 #监听的ip及端口,如果你的机器有多个ip,建议配置监听一个ip

3、创建ftp宿主账号和组:ftpuser
useradd ftpuser -s /usr/sbin/nologin

4、设置网站目录权限格式:
#ls -l
drwxr-xr-x 14 ftpuser web 4096 Dec 17 16:18 fity.cn
(或者ftp和web权限彻底分离,如果是ftp操作的更改ftpuser组也更改,如果web则同样的都改为web账号和组)

5、至此,配置完毕

PS:如果安装了lnmp,你可以使用lnmp自带的脚本安装Pure-FTPd,非常方便,而且ftp账号管理也是基于页面的,非常方便。
linux系统下大多数都是用ext3/ext4文件系统系统,许多流行的linux发行版默认的文件系统就是ext3/ext4,正常我们在windows下是无法识别ext3/ext4分区.导致我们想要提取一些数据的时候而有心无力.Ext2Fsd可以让你在Windows系统中挂在linux的分区。

这里推荐两款可以在windows系统下识别linux分区格式的软件
1、Ext2Read 是一个能够读取etc2/etx3/ext4文件系统的工具。他支持LVM2和Ext4.可以查看和复制文件和文件夹,递归复制整个文件夹。
2、Ext2Fsd是一个windows下的ext2文件系统驱动,支持windows2000,xp,vista。是一款自由软件,以GPL2协议发布

ext2fsd使用方法
第一步:打开ext2fsd后,先载入文件系统驱动,在菜单选中"工具与设置"->"配置文件系统驱动",点击"启动"后,更改并退出
第二步:在你所需要挂在的ext分区上右击选中"更改"装配点盘符",为你需要挂在的分区添加一个盘符就搞定了。

注意:虽然用ext2fsd可以对挂在的linux分区进行写入,但推荐最好别这样做.这样做可以会导致数据丢失.
Linux统计日志文件中的IP数   linux下用awk统计日志中各个ip访问页面的次数
日志格式:
引用
211.154.151.115 - - [25/Jun/2013:00:00:01 +0800] "GET /SeeHouse/index/childId/17051 HTTP/1.0" 200 10011 "http://fity.cn/17051.html" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; 2345Explorer)" 56.132.231.179

统计结果:
[root@iredmail 06]# awk '{a[$1]+=1;}END{for(i in a){print a[i]" " i;}}' newlog_20130624.log
29 222.73.31.71
17 221.194.30.104

zeroMQ/php-zmq消息队列安装配置 不指定

Rinald 本站原创 Linux 2013/05/30 20:23
zeroMQ消息队列介绍及zeroMQ/php-zmq安装
首先了解下ZMQ的概念,ØMQ(ZeroMQ)是啥玩意儿?
ZeroMQ是个类似于Socket的一系列接口,他跟Socket的区别是:普通的socket是端到端的(1:1的关系),而ZMQ却是可以N:M 的关系,人们对BSD套接字的了解较多的是点对点的连接,点对点连接需要显式地建立连接、销毁连接、选择协议(TCP/UDP)和处理错误等,而ZMQ屏蔽了这些细节,让你的网络编程更为简单。ZMQ用于node与node间的通信,node可以是主机或者是进程。
ZeroMQ是网络栈中新的一层,它是个可伸缩层,分散在分布式系统间。因此,它可支持任意大的应用程序。ØMQ不是简单的点对点交互,相反,它定义了分布式系统的全局拓扑。ØMQ应用程序没有锁,可并行运行。此外,它可在多个线程、内核和主机盒之间弹性伸缩。

与其他的消息队列相比,ZeroMQ有以下一些特点
1、点对点无中间节点
传统的消息队列都需要一个消息服务器来存储转发消息。而ZeroMQ则放弃了这个模式,把侧重点放在了点对点的消息传输上,并且(试图)做到极致。以为消息服务器最终还是转化为服务器对其他节点的点对点消息传输上。ZeroMQ能缓存消息,但是是在发送端缓存。ZeroMQ里有水位设置的相关接口来控制缓存量。当然,ZeroMQ也支持传统的消息队列(通过zmq_device来实现)。
2、强调消息收发模式
在点对点的消息传输上ZeroMQ将通信的模式做了归纳,比如常见的订阅模式(一个消息发多个客户),分发模式(N个消息平均分给X个客户)等等。下面是目前支持的消息模式配对,任何一方都可以做为服务端。
• PUB and SUB
• REQ and REP
• REQ and XREP
• XREQ and REP
• XREQ and XREP
• XREQ and XREQ
• XREP and XREP
• PUSH and PULL
• PAIR and PAIR
3、以统一接口支持多种底层通信方式(线程间通信,进程间通信,跨主机通信)
如果你想把本机多进程的软件放到跨主机的环境里去执行,通常要将IPC接口用套接字重写一遍。非常麻烦。而有了ZeroMQ就方便多了,只要把通信协议从"ipc:///xxx"改为"tcp://*.*.*.*:****"就可以了,其他代码通通不需要改,如果这个是从配置文件里读的话,那么程序就完全不要动了,直接复制到其他机器上就可以了。以为ZeroMQ为我们做了很多。
4、异步,强调性能
ZeroMQ设计之初就是为了高性能的消息发送而服务的,所以其设计追求简洁高效。它发送消息是异步模式,通过单独出一个IO线程来实现,所以消息发送调用之后不要立刻释放相关资源哦,会出错的(以为还没发送完),要把资源释放函数交给ZeroMQ让ZeroMQ发完消息自己释放。

zeromq的官方网站: http://www.zeromq.org/

系统环境约定:
OS:centos 6.3 X64
web目录:/htdoc/web
软件临时存放目录:/opt/
zeromq安装目录:/usr/local/webserver/zeromq


一、安装zeromq
Tip:To build on UNIX-like systems,make sure that libtool, autoconf, automake are installed.
[root@iredmail opt]# wget http://download.zeromq.org/zeromq-3.2.3.tar.gz
[root@iredmail opt]# tar -zxvf zeromq-3.2.3.tar.gz
[root@iredmail opt]# cd zeromq-3.2.3
[root@iredmail zeromq-3.2.3]# ./configure --prefix=/usr/local/webserver/zeromq --with-pgm=libpgm-5.1.118~dfsg
(libpgm-5.1.118~dfsg位于zeromq-3.2.3/foreign/openpgm/目录下)
[root@iredmail zeromq-3.2.3]# make && make install
[root@iredmail zeromq-3.2.3]# ldconfig
官方文档:http://www.zeromq.org/area:download
Tip:If you get an error:configure: "error: cannot link with -luuid, install uuid-dev".Please install e2fsprogs-devel


二、安装php扩展
[root@iredmail zeromq-3.2.3]# cd..
[root@iredmail opt]# git clone git://github.com/mkoppanen/php-zmq.git
Tip: If you get an error of git command,please install git or use other download tools
[root@iredmail opt]# cd php-zmq
[root@iredmail php-zmq]# /usr/local/webserver/php5318/bin/phpize
Tip:
①/usr/local/webserver/php5318/is my php installation path;
②If you are using php installed from your distribution's package manager the 'phpize' command is usually in php-dev or php-devel package
[root@iredmail php-zmq]# ./configure --with-php-config=/usr/local/webserver/php5318/bin/php-config --with-zmq=/usr/local/webserver/zeromq
Tip:
①/usr/local/webserver/zeromq is my zeromq installation path;
②If you get an error:"checking libzmq installation... configure: error: Unable to find libzmq installation",please use param"--with-zmq" specify the zeromq installation path.
[root@iredmail php-zmq]# make && make install
Installing shared extensions:     /usr/local/webserver/php5318/lib/php/extensions/no-debug-non-zts-20090626/
表示生成了动态链接库文件zmq.so.这个时候可以查看一下目录里有没有zmq.so 这个文件.

Add the following line to your php.ini:
extension=zmq.so
OR:
If you are using PHP 5.4.x and/or using PHP-FPM, you will need to add a zmq.ini file in /etc/php5/conf.d:
Add the following:
extension=zmq.so
Restart php-fpm

访问phpinfo页面就可以看到zeroMQ的消息了:
点击在新窗口中浏览此图片

官方文档:http://www.zeromq.org/bindings:php
If you need an Java language environment,you can get client from:https://github.com/zeromq/jzmq
If you need an Python language environment,you can get client from:https://github.com/zeromq/pyzmq


三、实例测试
+阅读全文
故障描述:
今天一台windows2003服务器IIS站点页面访问突然报“HTTP/1.1 新建会话失败”错误,经过排查发现为有效内存过少,来源为COM+,分类为激活,事件:4238

原因分析:
服务器的资源耗尽,或者是IIS,或者内存,或者流量,或者CPU.......

解决方法:
重启IIS或DefaultAppPool或重启服务器。

补充说明:如果你的服务器该故障是因上述原因引起的,那么重新启动服务/服务器后问题就会消失,但是这样并没有真正解决问题,可能过不了多长时间问题又来出来。请自行分析下机器占用资源较大的进程并进行优化。

CentOS下yum安装配置samba服务 不指定

Rinald 本站原创 Linux 2013/05/07 00:05
Samba 是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。
这些年来,Windows 和Linux 操作系统各自拥有自己的用户群和市场。然而在一般的公司或学校里,可能同时有Windows 和Linux 操作系统的主机。Windows 主机彼此间可利用“网上邻居”来访问共享的资源,NFS也能使Linux 主机之间实现资源共享。但如何能使Windows 主机和Linux主机之间实现资源共享呢?
微软的“网上邻居(就是Windows 上利用SMB通信协议实现资源共享的程序)”一经推出,便广受用户的好评,大家突然觉得原来要在网上共享资源尽是那么简单,有鉴于此,便有一些Linux 爱好者开始在Linux 主机上实现SMB通信协议,后来这个实现了SMB功能的软件既被称为 Samba ,它使得Windows 主机和Linux主机之间实现了资源共享。

注意:本文的原则是只将文件共享应用于内网服务器,并让将要被共享的目录拥有充分的读写权限属性,读者可顺着本文的思路完成基本配置流程,如需复杂读写权限功能请自行google。

系统信息约定:
引用
操作系统:CentOS 6.3 X64
共享目录:/share/fity.cn

1、使用yum命令安装samba
# yum -y install samba     //-y参数:如遇询问自动选择y,全自动下载并安装samba

2、检查samba服务包的安装情况
# rpm -qa | grep samba
samba-common-3.0.33-3.7.el5_3.1    //服务器和客户端均需要的文件
samba-3.0.33-3.7.el5_3.1                 //服务器端文件

3、用whereis命令查看samba安装位置
# whereis samba
samba: /etc/samba /usr/lib/samba /usr/share/samba /usr/share/man/man7/samba.7.gz

4、配置samba服务
# vi /etc/samba/smb.conf
(1)[global]    //找到全局设置标签,在下面进行配置
workgroup =  WORKGROUP  //说明:设定 Samba Server 所要加入的工作组或者域
server string = Samba Server Version %v  //说明:设定 Samba Server 的注释,可以是任何字符串,也可以不填。宏%v表示显示Samba的版本号。
; hosts allow = 192.168.1. 192.168.2. 127. 找到此行,去掉行首的“;”,并制定访问限制改为hosts allow = 192.168.1. 127.,指定内网IP地址及本地,只允许这两种情况的访问
security = user
说明:设置用户访问Samba Server的验证方式,一共有四种验证方式。
1. share:用户访问Samba Server不需要提供用户名和口令, 安全性能较低。
2. user:Samba Server共享目录只能被授权的用户访问,由Samba Server负责检查账号和密码的正确性。账号和密码要在本Samba Server中建立。
3. server:依靠其他Windows NT/2000或Samba Server来验证用户的账号和密码,是一种代理验证。此种安全模式下,系统管理员可以把所有的Windows用户和口令集中到一个NT系统上,使用 Windows NT进行Samba认证, 远程服务器可以自动认证全部用户和口令,如果认证失败,Samba将使用用户级安全模式作为替代的方式。
4. domain:域安全级别,使用主域控制器(PDC)来完成认证。

(2)配置最简单访问目录几个基本属性:
[share]    windows客户端查看时看到的文件夹名
path = /share/fity.cn    共享目录位置,要系统中存在的目录,也可以配置完再创建
read only = no
public   = yes

5、给配置的共享目录设置权限:
# mkdir /var/samba/share       如刚才配置的共享目录不存在则创建
# chown -R nobody. /var/samba/share       设置共享目录归属为 nobody
# chmod 777 /var/samba/share       将共享目录属性设置为 777

6、配置登录用户信息
+阅读全文
wget是linux下命令行的下载工具,功能很强大,虽然很少用,一般下在一些小东西都是直接用firefox,seamonkey这些浏览器自带的下载功能下载,没有必要用wget或者其他下载工具。但是某些时候却不是浏览器自带的下载功能和一些其他的下载软件所能做的的,这时候就得用wget了。比如如果你想下载一个网页目录下的所有文件,如何做呢?

例如:wget -c -r -np -k -L -p http://test.fity.cn/apache/  #下载http://fity.cn/apache/目录下的所有文件

wget命令的帮助文档:
# wget --help

  GNU Wget 1.9.1,非交互式的网络文件下载工具。
  用法: wget [选项]… [URL]…

  长选项必须用的参数在使用短选项时也是必须的。

启动:
  -V, –version 显示 Wget 的版本并且退出。
  -h, –help 打印此帮助。
  -b, -background 启动后进入后台操作。
  -e, -execute=COMMAND 运行‘.wgetrc’形式的命令。


日志记录及输入文件:
  -o, –output-file=文件 将日志消息写入到指定文件中。
  -a, –append-output=文件 将日志消息追加到指定文件的末端。
  -d, –debug 打印调试输出。
  -q, –quiet 安静模式(不输出信息)。
  -v, –verbose 详细输出模式(默认)。
  -nv, –non-verbose 关闭详细输出模式,但不进入安静模式。
  -i, –input-file=文件 下载从指定文件中找到的 URL。
  -F, –force-html 以 HTML 方式处理输入文件。
  -B, –base=URL 使用 -F -i 文件选项时,在相对链接前添加指定的 URL。


下载:
  -t, –tries=次数 配置重试次数(0 表示无限)。
  –retry-connrefused 即使拒绝连接也重试。
  -O –output-document=文件 将数据写入此文件中。
  -nc, –no-clobber 不更改已经存在的文件,也不使用在文件名后
  添加 .#(# 为数字)的方法写入新的文件。
  -c, –continue 继续接收已下载了一部分的文件,断点续传。
  –progress=方式 选择下载进度的表示方式。
  -N, –timestamping 除非远程文件较新,否则不再取回。
  -S, –server-response 显示服务器回应消息。
  –spider 不下载任何数据。
  -T, –timeout=秒数 配置读取数据的超时时间 (秒数)。
  -w, –wait=秒数 接收不同文件之间等待的秒数。
  –waitretry=秒数 在每次重试之间稍等一段时间 (由 1 秒至指定的 秒数不等)。
  –random-wait 接收不同文件之间稍等一段时间(由 0 秒至 2*WAIT 秒不等)。
  -Y, –proxy=on/off 打开或关闭代理服务器。
  -Q, –quota=大小 配置接收数据的限额大小。
  –bind-address=地址 使用本机的指定地址 (主机名称或 IP) 进行连接。
  –limit-rate=速率 限制下载的速率。
  –dns-cache=off 禁止查找存于高速缓存中的 DNS。
  –restrict-file-names=OS 限制文件名中的字符为指定的 OS (操作系统) 所允许的字符。


目录:
  -nd –no-directories 不创建目录。
  -x, –force-directories 强制创建目录。
  -nH, –no-host-directories 不创建含有远程主机名称的目录。
  -P, –directory-prefix=名称 保存文件前先创建指定名称的目录。
  –cut-dirs=数目 忽略远程目录中指定数目的目录层。


HTTP 选项:
  –http-user=用户 配置 http 用户名。
  –http-passwd=密码 配置 http 用户密码。
  -C, –cache=on/off (不)使用服务器中的高速缓存中的数据 (默认是使用的)。
  -E, –html-extension 将所有 MIME 类型为 text/html 的文件都加上 .html 扩展文件名。
  –ignore-length 忽略“Content-Length”文件头字段。
  –header=字符串 在文件头中添加指定字符串。
  –proxy-user=用户 配置代理服务器用户名。
  –proxy-passwd=密码 配置代理服务器用户密码。
  –referer=URL 在 HTTP 请求中包含“Referer:URL”头。
  -s, –save-headers 将 HTTP 头存入文件。
  -U, –user-agent=AGENT 标志为 AGENT 而不是 Wget/VERSION。
  –no-http-keep-alive 禁用 HTTP keep-alive(持久性连接)。
  –cookies=off 禁用 cookie。
  –load-cookies=文件 会话开始前由指定文件载入 cookie。
  –save-cookies=文件 会话结束后将 cookie 保存至指定文件。
  –post-data=字符串 使用 POST 方法,发送指定字符串。
  –post-file=文件 使用 POST 方法,发送指定文件中的内容。


HTTPS (SSL) 选项:
+阅读全文
第1页 / 共4页 第一页 1 2 3 4 下一页 » 最后页 [ 显示模式: 摘要 | 列表 ]