智富金融教育培训服务平台系统

智富金融教育培训服务平台系统,此系统涉及技术很多:C++、ASP.NET、PHP等,天南负责第一版本PHP端的开发。

智富金融教育培训服务平台系统
智富金融教育培训服务平台系统 — 首页
智富金融教育培训服务平台系统
智富金融教育培训服务平台系统 — 文字直播页
智富金融教育培训服务平台系统
智富金融教育培训服务平台系统 — 资讯列表页
智富金融教育培训服务平台系统
智富金融教育培训服务平台系统 — 视频点播页
智富金融教育培训服务平台系统
智富金融教育培训服务平台系统 — 资讯页

 

 

 

 

bash漏洞修复

这两天Bash漏洞波及很广,不过发现很多IDC公司官网及论坛上都没有人提到此漏洞,也没有人提示我们修复漏洞。

天南的 CentOS 6.4 很不幸也存在此漏洞,SSH登陆后,执行下面命令:
# env x='() { :;}; echo vulnerable’  bash -c “echo this is a test”
可以看到输出了下面的信息:
vulnerable
this is a test

这就说明当前的Bash存在漏洞,我们升级一下Bash即可:
# yum update -y bash

升级Bash后,我们再次执行:# env x='() { :;}; echo vulnerable’  bash -c “echo this is a test”
可以看到漏洞已修复,如下图示:
bash漏洞修复

Can’t connect to local MySQL server through socket

今个在为一站点做数据库备份任务时,执行 #mysql -u root -p  报错:
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysqld.sock’ (2)

而通过以下方式连接时,由于不是使用sock方式连接数据库的,所以可以正常登陆:

mysql -h 127.0.0.1 -u root -p
# mysql -h 192.168.1.5 -u root -p

网上也有很多人遇到过这种问题的,方案有:更改mysql安装目录权限、my.cnf配置定义socket文件、建立软链接等等,都试了,没有解决问题。

天南的 my.cnf 配置项如下:

[mysqld]
performance_schema_max_table_instances=600
table_definition_cache=400
table_open_cache=256
port = 3306
socket = /tmp/mysql.sock
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

然后在 /tmp/ 目录下也看到了 mysql.sock 文件,按道理不会出现问题啊,搜尽网上各种方法无果,最后,将 my.cnf 里的 mysql.sock 改成 mysqld.sock 后执行:
# service mysql restart
重启服务后测试:
# mysql -u root -p
输入密码,一切正常,问题解决。。。。

好神奇 ~~

crontab怪异

情况是这样的:天南要为一台服务器上的Nginx切分日志,用logrotate和crontab配合实现,但是并不是想像中的那么顺利。

为实现效果,天南是这样做的:
1、在 /etc/logrotate.d/ 下建立一个名为 nginx_ahyooan_com 的文件,内容如下:

/data/www/ahyooan.com/logs/access.log{
notifempty
daily
dateext
copytruncate
nocompress
rotate 30
sharedscripts
postrotate
/bin/kill -HUP `/bin/cat /usr/local/nginx/logs/nginx.pid`
endscript
}

2、执行logrotate:

# /usr/sbin/logrotate -vf /etc/logrotate.conf

没有报错,/data/www/ahyooan.com/logs/ 下也生成了转储文件,且nginx正常访问,一切正常。
由于Logrotate是基于CRON运行的,所以这个时间是由CRON控制的,默认情况下不能精确控制时间,所以想直接通过 crontab 来制定计划任务。

3、加入计划任务,每天0点时执行任务:

# vi /etc/crontab

添加以下内容:

0  0  *  *  * root      run-parts /etc/cron.daily   #执行所有日计划 
#0  0  *  *  * root      /usr/sbin/logrotate -f /etc/logrotate.d/nginx_ahyooan_com    #只执行切分任务
# 0 0  * * * root /usr/sbin/logrotate -f /etc/logrotate.conf
#以上三种任务定义方法,都试过了,从crontab日志来看,任务都是正常执行了,但是天南发现并没有达到预期效果(nginx日志没有切分)

4、重启crontab服务:

# service crond restart

结果不管天南怎么试,到达时间后,通过 #cat /var/log/cron 发现定义的任务是执行了的,如下图示:
crontab日志
可是Nginx并没有切分日志;而当我们将命令单独拿出来执行,如:

# /usr/sbin/logrotate -f /etc/logrotate.conf

执行之后发现Nginx日志成功切分了。好神奇~~,天南纳闷,这任务到底有没有成功执行呢?

后来同群里交流,都说我的crontab写错了,上面的写法是执行了一个名为root的程序,其实这种说法也是不对的。因为:/etc/crontab 中是需要定义此任务由哪个用户去执行的。

后来,换一种常规写法:

# crontab -e

## 然后INSERT添加下面一行定义(下面一行只供测试,每时每分执行)
* *  * * *  /usr/sbin/logrotate -f /etc/logrotate.conf
## 如果要每天零点执行,则定义为(每天零点执行):
0 0  * * *  /usr/sbin/logrotate -f /etc/logrotate.conf

## 保存之后测试发现Nginx日志成功切分

最后,通过:

#crontab -l

能看到当前用户(root)的计划任务,而之前通过直接编辑 /etc/crontab 文件的方式后执行此命令,没有输出。。。

为何?从crontab日志文件 /var/log/cron 来看,任务的确是执行了,而实际上并没有达到预期效果。以前直接编辑 /etc/crontab 文件执行PHP定时任务,是正常的啊,纠结。。