升东运维是一家专业从事Linux/Freebsd Unix/Windows平台网站维护业务的公司,专业提供Linux(CentOS Redhat Ubuntu等),Unix(Freebsd),Nginx,Apache等系统及网站维护,七年从业经验

Archive for the ‘CentOS&Redhat’ Category

虚拟机中安装虚拟机开启提示incompatible hypervisor解决办法

星期四, 八月 23rd, 2012

在虚拟机(云主机)中安装虚拟机,开机时提示incompatible hypervisor,解决办法如下:

在虚拟机的vmx(如 Red Hat Enterprise Linux 6.vmx)文件中最下面添加一行下面的代码即可

vmx.allowNested = TRUE

centos下webalizer使用

星期一, 三月 19th, 2012

首先安装

yum install webalizer gd gd-devel

生成分析结果

 #日志名字自己查询下,可以分析nginx,apache,varnishncsa

webalizer -c /etc/webalizer.conf -o /www/html/webalizer /var/log/nginx/access.log

 

分析配置文件(部分)/etc/webalizer.conf

默认分析log的位置LogFile

/var/log/httpd/access_log

默认输出结果的目录

OutputDir      /var/www/usage

视为页面的文件后缀

PageType htm*
PageType cgi
PageType php
PageType shtml

CentOS yum只更新安全补丁

星期二, 十二月 20th, 2011

安装yum插件即可:

yum install yum-security

使用:

检查安全更新

yum –security check-update

只安装安全更新

yum update –security

检查特定软件有无安全更新

yum list-security software_name

列出更新的详细信息

yum info-security software_name

Centos6 yum搭建Linux+Nginx+PHP+MYSQL(LNMP)

星期五, 十一月 18th, 2011

最近接手维护一Linux服务器,Centos6版本,客户想要从Apache转换为Nginx.同时升级PHP到最新版本

如下操作配置Nginx1.0.10+PHP5.3.8(fastcgi)+Mysql5.5.17+eAccelerator(相关版本号是源软件包的最新版本)

使用Nginx官方源,Epel扩展库和remi源,remi源基于epel,必须先安装epel源,remi包含php-fpm,mysql-server5.5,如果只需要php-fpm可以单独安装php-fpm后禁用此源.
安装Nginx源:

rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm

安装EPEL源:

(64位系统) rpm -ivh http://download.fedora.redhat.com/pub/epel/6/x86_64/epel-release-6-5.noarch.rpm
(32位系统) rpm -ivh http://download.fedora.redhat.com/pub/epel/6/i386/epel-release-6-5.noarch.rpm

安装REMI源:

rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

开启REMI,编辑 /etc/yum.repos.d/remi.repo

vi /etc/yum.repos.d/remi.repo
修改 enable=1
esc
:wq
yum -y install nginx mysql-server  php-fpm php-cli php-pdo php-mysql php-mcrypt php-mbstring php-gd php-tidy php-xml php-xmlrpc php-pear php-pecl-memcache php-eaccelerator

1.根据需求配置 nginx配置文件 (本博文不提供具体配置)
2.修改/etc/php-fpm.conf 用户组为nginx
3.修改/var/lib/php/session(使php能保存session),web用户组为nginx

chown -R nginx:nginx /var/lib/php/session(不存在则需要创建)
chown -R nginx:nginx /var/www/(web目录)
chmod -R 775 /var/www/ (同组可修改权限,方便配置ftp,ftp应该加入到nginx组,如果需要更高的安全设置,则不应当将只读的目录赋予nginx,php组可写权限)
service nginx start(start|stop|restart|reload)
service php-fpm start(start|stop|restart)
service mysqld start(start|stop|restart|reload)
设置自启动
chkconfig nginx on
chkconfig php-fpm on
chkconfig mysqld on

selinux 导致zendoptimizer无法启动解决

星期六, 十月 29th, 2011
启动 php-fpm:Failed loading /usr/lib/php/modules/ZendOptimizer.so:  /usr/lib/php/modules/ZendOptimizer.so: cannot restore segment prot after reloc: Permission denied

网上很多教程都是让关闭selinux,有点得不偿失,修改下就行了

setenforce 0

chcon -t texrel_shlib_t /usr/lib/php/modules/ZendOptimizer.so

setenforce 1

 

几个mysql备份shell

星期四, 十月 13th, 2011

###################################################################
#######mysqldump###################################################
#!/bin/sh
# mysql_backup.sh: backup mysql databases and keep newest 5 days backup.
# —————————–
db_user=”root”
db_passwd=”linuxtone”
db_host=”localhost”

# the directory for story your backup file.
backup_dir=”/backup”

# date format for backup file (dd-mm-yyyy)
time=”$(date +”%Y-%m-%d-%H:%M:%S”)”

# mysql, mysqldump and some other bin’s path
MYSQL=”$(which mysql)”
MYSQLDUMP=”$(which mysqldump)”
MKDIR=”$(which mkdir)”
RM=”$(which rm)”
MV=”$(which mv)”
GZIP=”$(which gzip)”

#针对不同系统,如果环境变量都有。可以去掉

# check the directory for store backup is writeable
test ! -w $backup_dir && echo “Error: $backup_dir is un-writeable.” && exit 0

# the directory for story the newest backup
test ! -d “$backup_dir” && $MKDIR “$backup_dir”

# get all databases 此处设置需要备份的数据库名cdn, cdn_view

for db in cdn cdn_view
do
$MYSQLDUMP -u $db_user -h $db_host -p$db_passwd $db | $GZIP -9 > “$backup_dir/$time.$db.gz”
done

#delete the oldest backup 30 days ago
find $backup_dir -name “*.gz” -mtime +30 |xargs rm -rf

exit 0;

###################################################################
##########带邮件通知的mysqldump#####################################
#!/bin/sh
# Name:mysqlFullBackup.sh
# PS:MySQL DataBase Full Backup.
# Write by:i.Stone
# Last Modify:2008-9-17
#
# Use mysqldump –help get more detail.
#
scriptsDir=`pwd`
mysqlDir=/usr/local/mysql ?
user=root
userPWD=111111
dataBackupDir=/tmp/mysqlbackup
eMailFile=$dataBackupDir/email.txt
[email protected]
logFile=$dataBackupDir/mysqlbackup.log
DATE=`date -I`

echo “” > $eMailFile
echo $(date +”%y-%m-%d %H:%M:%S”) >> $eMailFile
cd $dataBackupDir
dumpFile=mysql_$DATE.sql
GZDumpFile=mysql_$DATE.sql.tar.gz

$mysqlDir/bin/mysqldump -u$user -p$userPWD \
–opt –default-character-set=utf8 –extended-insert=false \
–triggers -R –hex-blob –all-databases \
–flush-logs –delete-master-logs \
–delete-master-logs \
-x > $dumpFile

if [[ $? == 0 ]]; then
tar czf $GZDumpFile $dumpFile >> $eMailFile 2>&1
echo “BackupFileName:$GZDumpFile” >> $eMailFile
echo “DataBase Backup Success!” >> $eMailFile
rm -f $dumpFile

# Delete daily backup files.
cd $dataBackupDir/daily
rm -f *

# Delete old backup files(mtime>2).
$scriptsDir/rmBackup.sh

# Move Backup Files To Backup Server.
$scriptsDir/rsyncBackup.sh
if (( !$? )); then
echo “Move Backup Files To Backup Server Success!” >> $eMailFile
else
echo “Move Backup Files To Backup Server Fail!” >> $eMailFile
fi

else
echo “DataBase Backup Fail!” >> $emailFile
fi

echo “——————————————————–” >> $logFile
cat $eMailFile >> $logFile
cat $eMailFile | mail -s “MySQL Backup” $eMail

###################################################################
############### tar ###############################################
#!/bin/bash
#15 3 * * * /usr/local/sbin/backup.sh
#backup directory
BAK_DIR=/data/db_backup

TAR=”/bin/tar”
TAR_FLAG=”czvf”
#BAKup
if [ ! -d $BAK_DIR ];then
mkdir -p $BAK_DIR
fi

COMM=”$TAR $TAR_FLAG $BAK_DIR/linuxtone-`date +%Y%m%d`.tar.gz linuxtone/”
cd /data/mysql/data
eval $COMM

find $BAK_DIR -name “linuxtone-*.tar.gz” -mtime +30 |xargs rm -rf

###################################################################
###################mysqlhotcopy####################################
#!/bin/sh
DBS=`du /var/lib/mysql/linuxtone/ | awk ‘{ printf $1 }’`
DFS=`df /myhotco | grep myhotco | awk ‘{ printf $3}’`
let “DBS = $DBS / 1024”
let “DFS = $DFS / 1024”
# more than 100M free space up
if [ `expr $DBS + 100` -lt $DFS ] ; then
echo “run mysqlhotcopy ( `expr $DFS – $DBS` ) …”
/usr/bin/mysqlhotcopy linuxtone –allowold –flushlog /myhotco
fi

centos终端下配置vpn客户端连接(转)

星期四, 十月 13th, 2011

转自 http://bbs.chinaunix.net/thread-1597299-1-3.html,已经验证可用,下载时需要注意不要下载带src的安装包

 

1.确认内核是否在2.6.15之后,如果早于该版本,需要安装MPPE

2.确认是否安装ppp

#rpm -qa | grep ppp

如果没有,需要安装ppp的rpm,CentOS光盘中有

#rpm -ivh ppp-2.4.4-2.el5.i386.rpm

3.安装客户端pptd(http://pptpclient.sourceforge.net)

#rpm -ivh ./pptp-1.7.2-3.rhel5.i386.rpm

4.配置

# pptpsetup –create VPN名 –server xxx.xxx.xxx.xxx–username 用户名 –password 密码

5. 连接

# pppd call VPN名

6. 断开

# killall pppd

注意事项:

在处理路由的时候采用client to lan方式,需要增加对方lan的路由或者目标网络的路由.

# route add -net 192.168.39.0 netmask 255.255.255.0 dev ppp0

ppp0是pptp连接的名字, 如果不确定 可以使用ifconfig命令查看

centos vpn无法连接 提示619错误解决办法

星期四, 十月 13th, 2011

安装配置完毕后需要开启防火墙的1723端口 和GRE协议访问,可以用webmin配置

 

iptables -A INPUT -p tcp -m tcp –dport 1723 -j ACCEPT

iptables -A INPUT -p gre -j ACCEPT

解决centos无法启动xserver

星期三, 十月 12th, 2011

centos安装了Nvidia的显卡驱动,一次运行startx命令突然无法启动桌面.

提示 no screen found.

解决办法:

1.重装Nvidia的显卡驱动(ATI同理)

2.将/etc/X11/xorg.conf里面驱动改为 vesa

Section "Device"
    Identifier     "Videocard0"
    Driver         "vesa"
EndSection

centos 搭建vpn 并且解决连接后访问外网慢的问题

星期六, 九月 17th, 2011

基于ceentos5.6 x64,测试正常

1、检查服务器是否有必要的支持。如果检查结果没有这些支持的话,是不能安装pptp的。执行指令:

#modprobe ppp-compress-18 && echo ok

这条执行执行后,显示“ok”则表明通过。

输入指令:

#cat /dev/net/tun

如果这条指令显示结果为下面的文本,则表明通过:

cat: /dev/net/tun: File descriptor in bad state 或者显示 错误

通过后可以安装

2、安装ppp和iptables。默认情况下,完整的CentOS是带有这两个组件的,但是精简版的系统可能没有。我们输入下面的命令来确认,如果没有则进行安装,有的话系统不会做任何动作:

#yum install -y ppp iptables

3、安装pptp。这个软件在yum源里是没有的,我们需要手动下载。我们先切换到tmp目录:

#cd /tmp

然后执行下面的命令来下载pptp安装包:

#wget http://acelnmp.googlecode.com/files/pptpd-1.3.4-1.rhel5.1.i386.rpm (32位系统使用)

#wget http://acelnmp.googlecode.com/files/pptpd-1.3.4-1.rhel5.1.x86_64.rpm (64位系统使用)

如果你的CentOS是32位的,则执行32位的那条指令;如果是64位的CentOS,则执行64位的那条指令。注意不要搞错了。

接下来安装pptp,同样分32位和64位系统:

#rpm -ivh pptpd-1.3.4-1.rhel5.1.i386.rpm (32位系统使用)

#rpm -ivh pptpd-1.3.4-1.rhel5.1.x86_64.rpm (64位系统使用)

4、配置pptp。首先我们要编辑/etc/pptpd.conf文件:

 #vim /etc/pptpd.conf

找到“locapip”和“remoteip”这两个配置项,将前面的“;”注释符去掉,更改为你期望的IP段值。localip表示服务器的IP,remoteip表示分配给客户端的IP地址,可以设置为区间。这里我们使用pptp默认的配置:

localip 192.168.0.1
remoteip 192.168.0.234-238,192.168.0.245

注意,这里的IP段设置,将直接影响后面的iptables规则添加命令。请注意匹配的正确性,如果你嫌麻烦,建议就用本文的配置,就可以一直复制命令和文本使用了。

接下来我们再编辑/etc/ppp/options.pptpd文件,为VPN添加Google DNS:

#vim /etc/ppp/options.pptpd

在末尾添加下面两行:

ms-dns 8.8.8.8
ms-dns 8.8.4.4

5、设置pptp VPN账号密码。我们需要编辑/etc/ppp/chap-secrets这个文件:

#vim /etc/ppp/chap-secrets

在这个文件里面,按照“用户名 pptpd 密码 *”的形式编写,一行一个账号和密码。比如添加用户名为test,密码为1234的用户,则编辑如下内容:

test pptpd 1234 *

6、修改内核设置,使其支持转发。编辑/etc/sysctl.conf文件:

#vim /etc/sysctl.conf

将“net.ipv4.ip_forward”改为1,变成下面的形式:

net.ipv4.ip_forward=1

保存退出,并执行下面的命令来生效它:

#sysctl -p

7、添加iptables转发规则。经过前面的6个步骤,我们的VPN已经可以拨号了,但是还不能访问任何网页。最后一步就是添加iptables转发规则了,输入下面的指令:

#iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE

需要注意的是,这个指令中的“192.168.0.0/24”是根据之前的配置文件中的“localip”网段来改变的,比如你设置的“10.0.0.1”网段,则应该改为“10.0.0.0/24”。此外还有一点需要注意的是eth0,如果你的外网网卡不是eth0,而是eth1(比如SoftLayer的服务器就是这样的情况),那么请记得将eth0也更改为对应的网卡编号,不然是上不了网的!

然后我们输入下面的指令让iptables保存我们刚才的转发规则,以便重启系统后不需要再次添加:

#/etc/init.d/iptables save

然后我们重启iptables:

#/etc/init.d/iptables restart

8、重启pptp服务。输入下面的指令重启pptp:

#/etc/init.d/pptpd restart

现在你已经可以连接自己的VPN并浏览网页了。不过我们还需要做最后的一步。

9、设置开机自动运行服务。我们最后一步是将pptp和iptables设置为开机自动运行,这样就不需要每次重启服务器后手动启动服务了。当然你不需要自动启动服务的话可以忽略这一步。输入指令:

#chkconfig pptpd on
#chkconfig iptables on

10.开启防火墙端口

安装配置完毕后需要开启防火墙的1723端口 和GRE协议访问,可以用webmin配置

#iptables -A INPUT -p tcp -m tcp –dport 1723 -j ACCEPT

#iptables -A INPUT -p gre -j ACCEPT

如果配置完成拨入后,访问外网速度很慢,可以运行如下指令(根据实际情况考虑,如下指令可能让windows连接变快而linux连接变慢)

#iptables -I FORWARD -p tcp –syn -i ppp+ -j TCPMSS –set-mss 1356

改变TCP最大分段值

下面的这个链接对此原因做了详尽表述 http://blogold.chinaunix.net/u/16464/showart_1923564.html