#!/usr/bin/python
# -*- coding:utf8 -*-
import pymysql
#取得数据库连接对象
conn = pymysql.connect(host=‘127.0.0.1‘,port=3306,user=‘root‘,passwd=‘1234‘,db=‘python‘)
#取得游标对象
cur = conn.cursor()
#插入数据
cur.execute("INSERT INTO student(name,sex,age) VALUES(‘3‘, ‘0‘, ‘45‘)")
conn.commit()
#修改数据
cur.execute("UPDATE student SET age = 90 WHERE id = 2" )
conn.commit()
#删除数据
cur.execute("DELETE FROM student WHERE name = ‘3‘")
conn.commit()
###########################################
# 数据发生改变时一定要conn.commit() #
###########################################
#查询数据
cur.execute(‘SELECT *FROM student‘)
for r in cur.fetchall():
print(r)
cur.close()
conn.close()
pip类似RedHat里面的yum,安装Python包非常方便。本节详细介绍pip的安装、以及使用方法。
1、pip下载安装
1.1 pip下载
# wget "https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz#md5=834b2904f92d46aaa333267fb1c922bb" --no-check-certificate
1.2 pip安装
# tar -xzvf pip-1.5.4.tar.gz
# cd pip-1.5.4
# python setup.py install
2. pip使用详解
2.1 pip安装包
# pip install SomePackage
[...]
Successfully installed SomePackage
2.2 pip查看已安装的包
# pip show --files SomePackage
Name: SomePackage
Version: 1.0
Location: /my/env/lib/pythonx.x/site-packages
Files:
../somepackage/__init__.py
[...]
2.3 pip检查哪些包需要更新
# pip list --outdated
SomePackage (Current: 1.0 Latest: 2.0)
2.4 pip升级包
# pip install --upgrade SomePackage
[...]
Found existing installation: SomePackage 1.0
Uninstalling SomePackage:
Successfully uninstalled SomePackage
Running setup.py install for SomePackage
Successfully installed SomePackage
2.5 pip卸载包
$ pip uninstall SomePackage
Uninstalling SomePackage:
/my/env/lib/pythonx.x/site-packages/somepackage
Proceed (y/n)? y
Successfully uninstalled SomePackage
3. pip使用实例
3.1 安装redis
# pip install redis
3.2 卸载redis
# pip uninstall redis
Uninstalling redis:
/usr/lib/python2.6/site-packages/redis-2.9.1-py2.6.egg-info
.....省略一些内容....
Proceed (y/n)? y
Successfully uninstalled redis
3.3 查看待更新包
pip list --outdate
pygpgme (Current: 0.1 Latest: 0.3)
pycurl (Current: 7.19.0 Latest: 7.19.3.1)
iniparse (Current: 0.3.1 Latest: 0.4)
4. 常见错误
4.1 ImportError No module named setuptools
请参考《ImportError No module named setuptools解决》
5. pip参数解释
# pip --help
Usage:
pip <command> [options]
Commands:
install 安装包.
uninstall 卸载包.
freeze 按着一定格式输出已安装包列表
list 列出已安装包.
show 显示包详细信息.
search 搜索包,类似yum里的search.
wheel Build wheels from your requirements.
zip 不推荐. Zip individual packages.
unzip 不推荐. Unzip individual packages.
bundle 不推荐. Create pybundles.
help 当前帮助.
General Options:
-h, --help 显示帮助.
-v, --verbose 更多的输出,最多可以使用3次
-V, --version 现实版本信息然后退出.
-q, --quiet 最少的输出.
--log-file <path> 覆盖的方式记录verbose错误日志,默认文件:/root/.pip/pip.log
--log <path> 不覆盖记录verbose输出的日志.
--proxy <proxy> Specify a proxy in the form [user:passwd@]proxy.server:port.
--timeout <sec> 连接超时时间 (默认15秒).
--exists-action <action> Default action when a path already exists: (s)witch, (i)gnore, (w)ipe, (b)ackup.
--cert <path> 证书.
6. 结束
安装使用一目了然,太简单了。
1、pip下载安装
1.1 pip下载
# wget "https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz#md5=834b2904f92d46aaa333267fb1c922bb" --no-check-certificate
1.2 pip安装
# tar -xzvf pip-1.5.4.tar.gz
# cd pip-1.5.4
# python setup.py install
2. pip使用详解
2.1 pip安装包
# pip install SomePackage
[...]
Successfully installed SomePackage
2.2 pip查看已安装的包
# pip show --files SomePackage
Name: SomePackage
Version: 1.0
Location: /my/env/lib/pythonx.x/site-packages
Files:
../somepackage/__init__.py
[...]
2.3 pip检查哪些包需要更新
# pip list --outdated
SomePackage (Current: 1.0 Latest: 2.0)
2.4 pip升级包
# pip install --upgrade SomePackage
[...]
Found existing installation: SomePackage 1.0
Uninstalling SomePackage:
Successfully uninstalled SomePackage
Running setup.py install for SomePackage
Successfully installed SomePackage
2.5 pip卸载包
$ pip uninstall SomePackage
Uninstalling SomePackage:
/my/env/lib/pythonx.x/site-packages/somepackage
Proceed (y/n)? y
Successfully uninstalled SomePackage
3. pip使用实例
3.1 安装redis
# pip install redis
3.2 卸载redis
# pip uninstall redis
Uninstalling redis:
/usr/lib/python2.6/site-packages/redis-2.9.1-py2.6.egg-info
.....省略一些内容....
Proceed (y/n)? y
Successfully uninstalled redis
3.3 查看待更新包
pip list --outdate
pygpgme (Current: 0.1 Latest: 0.3)
pycurl (Current: 7.19.0 Latest: 7.19.3.1)
iniparse (Current: 0.3.1 Latest: 0.4)
4. 常见错误
4.1 ImportError No module named setuptools
请参考《ImportError No module named setuptools解决》
5. pip参数解释
# pip --help
Usage:
pip <command> [options]
Commands:
install 安装包.
uninstall 卸载包.
freeze 按着一定格式输出已安装包列表
list 列出已安装包.
show 显示包详细信息.
search 搜索包,类似yum里的search.
wheel Build wheels from your requirements.
zip 不推荐. Zip individual packages.
unzip 不推荐. Unzip individual packages.
bundle 不推荐. Create pybundles.
help 当前帮助.
General Options:
-h, --help 显示帮助.
-v, --verbose 更多的输出,最多可以使用3次
-V, --version 现实版本信息然后退出.
-q, --quiet 最少的输出.
--log-file <path> 覆盖的方式记录verbose错误日志,默认文件:/root/.pip/pip.log
--log <path> 不覆盖记录verbose输出的日志.
--proxy <proxy> Specify a proxy in the form [user:passwd@]proxy.server:port.
--timeout <sec> 连接超时时间 (默认15秒).
--exists-action <action> Default action when a path already exists: (s)witch, (i)gnore, (w)ipe, (b)ackup.
--cert <path> 证书.
6. 结束
安装使用一目了然,太简单了。
Nginx 配置文件详解
user nginx ;
#用户
worker_processes 8;
#工作进程,根据硬件调整,大于等于cpu核数
error_log logs/nginx_error.log crit;
user nginx ;
#用户
worker_processes 8;
#工作进程,根据硬件调整,大于等于cpu核数
error_log logs/nginx_error.log crit;
从php5.3以后php自带了php-fpm不是和php5.2一样以插件的方式存在了。这给我们带来一个好处502没有那么容易出现了
坛子里用linux的绝大多数应该还是在用小军的lnmp的那个包,但是配置优化却是不尽人意。
php-fpm的配置文件位置:
/usr/local/php/etc/php-fpm.conf
pid = run/php-fpm.pid
pid设置,默认在安装目录中的var/run/php-fpm.pid,建议开启
坛子里用linux的绝大多数应该还是在用小军的lnmp的那个包,但是配置优化却是不尽人意。
php-fpm的配置文件位置:
/usr/local/php/etc/php-fpm.conf
pid = run/php-fpm.pid
pid设置,默认在安装目录中的var/run/php-fpm.pid,建议开启
sudo du -s * | sort -nr | head 显示前10个占用空间最大的文件或目录
sudo du --max-depth=1 linux查找占空间最大的文件与目录
sudo find / -size +204800 这样可以查找出大于100M的文件,按需求删除就可
sudo find ./ -size +2048c 查找大于2K的文件,+ 表示大于
sudo find ./ -size +2048c -type f 查找小于2K的文件,- 表示小于
比如说/home目录太大,就可以使用下面命令看看到底是谁
du -s /home/* | sort -nr
也可以用find,查找大于200M的文件并显示详细信息
find . -size +100000000c -exec ls -lh {} ;
sudo du --max-depth=1 linux查找占空间最大的文件与目录
sudo find / -size +204800 这样可以查找出大于100M的文件,按需求删除就可
sudo find ./ -size +2048c 查找大于2K的文件,+ 表示大于
sudo find ./ -size +2048c -type f 查找小于2K的文件,- 表示小于
比如说/home目录太大,就可以使用下面命令看看到底是谁
du -s /home/* | sort -nr
也可以用find,查找大于200M的文件并显示详细信息
find . -size +100000000c -exec ls -lh {} ;
0x01 查看访问日志
看是否有文件上传操作(POST方法),
IPREMOVED - - [01/Mar/2013:06:16:48 -0600] "POST/uploads/monthly_10_2012/view.php HTTP/1.1" 200 36 "-" "Mozilla/5.0"
IPREMOVED - - [01/Mar/2013:06:12:58 -0600] "POST/public/style_images/master/profile/blog.php HTTP/1.1" 200 36 "-" "Mozilla/5.0"
nginx默认记录的日志格式为:
看是否有文件上传操作(POST方法),
IPREMOVED - - [01/Mar/2013:06:16:48 -0600] "POST/uploads/monthly_10_2012/view.php HTTP/1.1" 200 36 "-" "Mozilla/5.0"
IPREMOVED - - [01/Mar/2013:06:12:58 -0600] "POST/public/style_images/master/profile/blog.php HTTP/1.1" 200 36 "-" "Mozilla/5.0"
nginx默认记录的日志格式为:
1.隐藏php版本号
隐藏方法:vim php.ini添加如下代码
expose_php = Off
2.隐藏nginx版本号
隐藏方法:vim nginx.conf 在http里加入
server_tokens off;
3.隐藏apache版本号
隐藏方法:vim httpd.ini 添加如下代码
ServerTokens = ProductOnly
ServerSignature = Off
修改每个配置文件都要重启服务才可以生效。
伪装apache
编辑ap_release.h文件,修改
“#define AP_SERVER_BASEPRODUCT \"Apache\"”
为
“#define AP_SERVER_BASEPRODUCT \"Microsoft-IIS/5.0\"”
。
编辑os/unix/os.h文件,修改
“#define PLATFORM \"Unix\"”为“#define PLATFORM \"Win32\"”
修改完毕后,重新编译、安装Apache。
伪装nginx
cd /usr/local/src/nginx-1.0.6/src/core/
[root@server core]# cat nginx.h
/*
* Copyright (C) Igor Sysoev
*/
#ifndef _NGINX_H_INCLUDED_
#define _NGINX_H_INCLUDED_
#define NGINX_VERSION "1.0"
#define NGINX_VER "ZWS/" NGINX_VERSION
#define NGINX_VAR "ZWS"
#define NGX_OLDPID_EXT ".oldbin"
#endif /* _NGINX_H_INCLUDED_ */
隐藏方法:vim php.ini添加如下代码
expose_php = Off
2.隐藏nginx版本号
隐藏方法:vim nginx.conf 在http里加入
server_tokens off;
3.隐藏apache版本号
隐藏方法:vim httpd.ini 添加如下代码
ServerTokens = ProductOnly
ServerSignature = Off
修改每个配置文件都要重启服务才可以生效。
伪装apache
编辑ap_release.h文件,修改
“#define AP_SERVER_BASEPRODUCT \"Apache\"”
为
“#define AP_SERVER_BASEPRODUCT \"Microsoft-IIS/5.0\"”
编辑os/unix/os.h文件,修改
“#define PLATFORM \"Unix\"”为“#define PLATFORM \"Win32\"”
修改完毕后,重新编译、安装Apache。
伪装nginx
cd /usr/local/src/nginx-1.0.6/src/core/
[root@server core]# cat nginx.h
/*
* Copyright (C) Igor Sysoev
*/
#ifndef _NGINX_H_INCLUDED_
#define _NGINX_H_INCLUDED_
#define NGINX_VERSION "1.0"
#define NGINX_VER "ZWS/" NGINX_VERSION
#define NGINX_VAR "ZWS"
#define NGX_OLDPID_EXT ".oldbin"
#endif /* _NGINX_H_INCLUDED_ */
1. Sendmail配置
配置发送邮件的邮箱认证信息
vi /etc/mail.rc
--- 增加如下内容 ---
set from=yourname@your-domain.com
set smtp=mail.your-domain.com
set smtp-auth-user=yourname
set smtp-auth-password=yourpasswd
set smtp-auth=login
2. 测试发送邮件功能
echo "hello word" | mail -s "mail title" yourname@your-domain.com
配置发送邮件的邮箱认证信息
vi /etc/mail.rc
--- 增加如下内容 ---
set from=yourname@your-domain.com
set smtp=mail.your-domain.com
set smtp-auth-user=yourname
set smtp-auth-password=yourpasswd
set smtp-auth=login
2. 测试发送邮件功能
echo "hello word" | mail -s "mail title" yourname@your-domain.com
php 5.3.3 源码中已经内嵌了 php-fpm,不用象以前的php版本一样专门打补丁了,只需要在configure的时候添加编译参数即可。
关于php-fpm的编译参数有 –enable-fpm –with-fpm-user=www –with-fpm-group=www –with-libevent-dir=libevent位置。
但是,php 5.3.3 下的php-fpm 不再支持 php-fpm 以前具有的 /usr/local/php/sbin/php-fpm (start|stop|reload)等命令,需要使用信号控制:
master 进程可以理解以下信号:
INT, TERM:立刻终止
QUIT :平滑终止
USR1:重新打开日志文件
USR2:平滑重载所有worker进程并重新载入配置和二进制模块
示例:
1)php-fpm 关闭:
# kill -INT `cat /usr/local/php/var/run/php-fpm.pid`
2)php-fpm 重启:
# kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`
查看php-fpm进程数:
# ps aux | grep -c php-fpm
关于php-fpm的编译参数有 –enable-fpm –with-fpm-user=www –with-fpm-group=www –with-libevent-dir=libevent位置。
但是,php 5.3.3 下的php-fpm 不再支持 php-fpm 以前具有的 /usr/local/php/sbin/php-fpm (start|stop|reload)等命令,需要使用信号控制:
master 进程可以理解以下信号:
INT, TERM:立刻终止
QUIT :平滑终止
USR1:重新打开日志文件
USR2:平滑重载所有worker进程并重新载入配置和二进制模块
示例:
1)php-fpm 关闭:
# kill -INT `cat /usr/local/php/var/run/php-fpm.pid`
2)php-fpm 重启:
# kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`
查看php-fpm进程数:
# ps aux | grep -c php-fpm