分类归档 网站建设

通过admin

Django日志logging的配置以及处理

      1. logging模块

logging模块为应用程序提供了灵活的手段记录事件、错误、警告和调试信息。对这些信息可以进行收集、筛选、写入文件、发送给系统日志等操作,甚至还可以通过网络发送给远程计算机。

> 日志记录级别

logging模块的重点在于生成和处理日志消息。每条消息由一些文本和指示其严重性的相关级别组成。级别包含符号名称和数字值。

级别 描述
CRITICAL 50 关键错误/消息
ERROR 40 错误
WARNING 30 警告消息
INFO 20 通知消息
DEBUG 10 调试
NOTSET 0 无级别

> 记录器

记录器负责管理日志消息的默认行为,包括日志记录级别、输出目标位置、消息格式以及其它基本细节。

 

关键字参数 描述
filename 将日志消息附加到指定文件名的文件
filemode 指定用于打开文件模式
format 用于生成日志消息的格式字符串
datefmt 用于输出日期和时间的格式字符串
level 设置记录器的级别
stream 提供打开的文件,用于把日志消息发送到文件。

>format 日志消息格式

 

格式 描述
%(name)s 记录器的名称
%(levelno)s 数字形式的日志记录级别
%(levelname)s 日志记录级别的文本名称
%(filename)s 执行日志记录调用的源文件的文件名称
%(pathname)s 执行日志记录调用的源文件的路径名称
%(funcName)s 执行日志记录调用的函数名称
%(module)s 执行日志记录调用的模块名称
%(lineno)s 执行日志记录调用的行号
%(created)s 执行日志记录的时间
%(asctime)s 日期和时间
%(msecs)s 毫秒部分
%(thread)d 线程ID
%(threadName)s 线程名称
%(process)d 进程ID
%(message)s 记录的消息

 

> 内置处理器

logging模块提供了一些处理器,可以通过各种方式处理日志消息。使用addHandler()方法将这些处理器添加给Logger对象。另外还可以为每个处理器配置它自己的筛选和级别。

handlers.DatagramHandler(host,port):发送日志消息给位于制定host和port上的UDP服务器。

handlers.FileHandler(filename):将日志消息写入文件filename。

handlers.HTTPHandler(host, url):使用HTTP的GET或POST方法将日志消息上传到一台HTTP 服务器。

handlers.RotatingFileHandler(filename):将日志消息写入文件filename。如果文件的大小超出maxBytes制定的值,那么它将被备份为filename1。

由于内置处理器还有很多,如果想更深入了解。可以查看官方手册。

 

2.django 使用logging记录日志

现在大概了解了logging的使用方法,现在可以结合django使用。

> 配置setting.py配置文件

 

#导入模块

import logging

import django.utils.log

import logging.handlers

 

 

LOGGING = {

‘version’: 1,

‘disable_existing_loggers’: True,

‘formatters’: {

‘standard’: {

‘format’: ‘%(asctime)s [%(threadName)s:%(thread)d] [%(name)s:%(lineno)d] [%(module)s:%(funcName)s] [%(levelname)s]- %(message)s’}  #日志格式

},

‘filters’: {

},

‘handlers’: {

‘mail_admins’: {

‘level’: ‘ERROR’,

‘class’: ‘django.utils.log.AdminEmailHandler’,

‘include_html’: True,

},

‘custom’: {

‘level’:’DEBUG’,

‘class’:’logging.handlers.RotatingFileHandler’,

‘filename’: os.path.join(BASE_DIR+’/logs/’,’all.log’),     #日志输出文件

‘maxBytes’: 1024*1024*5,                  #文件大小

‘backupCount’: 5,                         #备份份数

‘formatter’:’standard’,                   #使用哪种formatters日志格式

},

‘error’: {

‘level’:’ERROR’,

‘class’:’logging.handlers.RotatingFileHandler’,

‘filename’: os.path.join(BASE_DIR+’/logs/’,’all.log’),

‘maxBytes’:1024*1024*5,

‘backupCount’: 5,

‘formatter’:’standard’,

},

‘console’:{

‘level’: ‘DEBUG’,

‘class’: ‘logging.StreamHandler’,

‘formatter’: ‘standard’

},

‘request_handler’: {

‘level’:’DEBUG’,

‘class’:’logging.handlers.RotatingFileHandler’,

‘filename’: os.path.join(BASE_DIR+’/logs/’,’all.log’),

‘maxBytes’: 1024*1024*5,

‘backupCount’: 5,

‘formatter’:’standard’,

},

‘scprits_handler’: {

‘level’:’DEBUG’,

‘class’:’logging.handlers.RotatingFileHandler’,

‘filename’:os.path.join(BASE_DIR+’/logs/’,’all.log’),

‘maxBytes’: 1024*1024*5,

‘backupCount’: 5,

‘formatter’:’standard’,

}

},

‘loggers’: {

‘django’: {

‘handlers’: [‘default’, ‘console’],

‘level’: ‘DEBUG’,

‘propagate’: False

},

‘django.request’: {

‘handlers’: [‘request_handler’],

‘level’: ‘DEBUG’,

‘propagate’: False,

},

‘scripts’: {

‘handlers’: [‘scprits_handler’],

‘level’: ‘INFO’,

‘propagate’: False

},

‘views’: {

‘handlers’: [‘default’, ‘error’],

‘level’: ‘DEBUG’,

‘propagate’: True

},

}

}

 

 

解析:

1.formatters:配置打印日志格式

2.handler:用来定义具体处理日志的方式,可以定义多种,”default”就是默认方式,”console”就是打印到控制台方式。

3.loggers:用来配置用那种handlers来处理日志,比如你同时需要输出日志到文件、控制台。

 

注意:

1.loggers类型为”django”这将处理所有类型日志。

2.sourceDns.webdns.views 应用的py文件

 

> views.py代码配置

123

4

5

6

logger = logging.getLogger(‘sourceDns.webdns.views’)    #刚才在setting.py中配置的loggertry:

mysql= connectMysql(‘127.0.0.1’, ‘3306’, ‘david’)

except Exception,e:

logger.error(e)        #直接将错误写入到日志文件

>查看日志文件 ,可以用tail -f来跟踪log

[root@iZ94qyk9mopZ joke_project]# tail -f logs/all.log |grep jokes.views

2014-11-25 17:32:30,494 [Thread-3:140147426895616] [jokes.views:69] [views:get_jokes_list] [INFO]- get_jokes_list end
2014-11-25 17:37:32,987 [Thread-4:140147426895616] [jokes.views:37] [views:get_jokes_list] [INFO]- get_jokes_list start
2014-11-25 17:37:33,003 [Thread-4:140147426895616] [jokes.views:69] [views:get_jokes_list] [INFO]- get_jokes_list end

通过admin

python 变量命名规范

python源码和其他一些书籍,命名各种个性,没有一个比较统一的命名规范。于是自己总结了一些,可供参考。
模块名:
小写字母,单词之间用_分割
ad_stats.py

包名:
和模块名一样

类名:
单词首字母大写
AdStats
ConfigUtil

全局变量名(类变量,在java中相当于static变量):
大写字母,单词之间用_分割
NUMBER
COLOR_WRITE

普通变量:
小写字母,单词之间用_分割
this_is_a_var

实例变量:
以_开头,其他和普通变量一样
_price    
_instance_var

私有实例变量(外部访问会报错):
以__开头(2个下划线),其他和普通变量一样
__private_var

专有变量:
__开头,__结尾,一般为python的自有变量,不要以这种方式命名
__doc__
__class__

普通函数:
和普通变量一样:
get_name()
count_number()
ad_stat()

私有函数(外部访问会报错):
以__开头(2个下划线),其他和普通函数一样
__get_name()

通过admin

将Python的datetime转换为Unix时间戳timestamp

from datetime import datetime
d = datetime.utcnow()
import calendar
ts = calendar.timegm(d.utctimetuple())

用date命令来验证

$ date -ud @1382422118
2013年 10月 22日 星期二 06:08:38 UTC

在Unix系统上,描述时间的传统方式是,给一个自1970年初到现在的秒数.

from time import time
ts = int(time())
本文出自:http://zhiwei.li/text, 感谢原作者分享。
通过admin

Django mysql提交中文出错的问题

Django使用mysql的情况下默认编码都是utf-8,所以在一开始创建database的时候必须制定utf-8编码,否则在提交中文字符的时候可能会报错。

 

Creating your database

You can create your database using the command-line tools and this SQL:

CREATE DATABASE <dbname> CHARACTER SET utf8;

This ensures all tables and columns will use UTF-8 by default.

通过admin

Apache配置域名和多站点配置指引

配置Apache服务器并且设置DNS

我们通常所说的虚拟主机技术就是将一台(或者一组)服务器的资源(系统资源、网络带宽、存储空间等)按照一定的比例分割成若干台相对独立的“小主机”的技术。每一台这样的“小主机”在功能上都可以实现WWW、FTP、Mail等基本的Internet服务,就像使用独立的主机一样。phpma.com

 

目前网站服务器的虚拟主机平台使用以开放的Apache为最多,其次是微软的Windows IIS。Apache具有跨平台(FreeBSD/Linux/Windows/Solaris/Other UNIX)、易于维护与最佳安全性等优点。

Apache是率先支持基于IP虚拟主机的服务器之一。 Apache 1.1及其更新版本同时支持基于IP和基于主机名的虚拟主机,不同的虚拟主机有时会被称为基于主机(host-based) 或非IP虚拟主机(non-IP virtual hosts)。phpma.com

用Apache设置虚拟主机服务通常可以采用两种方案:基于IP地址的虚拟主机和基于主机名字的虚拟主机,下面我们分别介绍一下它们的实现方法以及优缺点。以便大家在具体的应用中能够选择最合适的实现方法。phpma.com

一、Apache实现基于IP地址的虚拟主机(每个站点拥有一个独立IP地址)

使用这种虚拟主机方式,首先要在服务器上为每个虚拟主机单独设置一个IP地址。这些IP地址可以通过增加多个网卡或者在一个网卡上设立多个IP地址来完成。有了多个IP地址后,可以采用以下两种方式之一来设置Apache。 phpma.com

1、为每个虚拟主机运行一份Apache

采用这种方式,每一份Apache程序可以以单独的用户运行,因此各个虚拟主机之间互不影响。设置这种虚拟主机时,只要为每一份Apache设置一套配置文件就可以了,唯一需要注意的是:必须使用“Listen”语句,强制每一份Apache 仅仅在属于“自己”的IP地址上接收服务请求。

优点:各个虚拟主机之间互不干扰,安全性高。

缺点:占用系统资源较多。

2、多个虚拟主机共享同一份Apache

采用这种方式,各个虚拟主机共享同一份Apache,因此各个虚拟主机之间有一定的影响,尤其是执行CGI程序时,可能会带来一些严重的安全问题。设置这种虚拟主机时,只要为每一个虚拟主机设置类似如下的信息即可:

<VirtualHost www.ghq1.com>

DocumentRoot /www/ghq1

</VirrualHost>

优点:占用系统资源比上一种方式少。

缺点:安全性低,每个虚拟主机仍然需要占用一个IP地址。

例如服务器一个网卡上绑定有两个IP地址(172.16.3.40和 172.16.3.50)分别对应域名 www.ghq1.com和www.ghq2.org的服务,配置如下

服务器配置(apache的配置文件httpd.conf)

Listen 80

<VirtualHost 172.16.3.40>

DocumentRoot /www/ghq1

ServerName www.ghq1.com

</VirtualHost>

<VirtualHost 172.16.3.50>

DocumentRoot /www/ghq2

ServerName www.ghq2.org

</VirtualHost>

配置简单说明:“Listen”默认httpd服务会监控第80号通信端口, “Listen”选项让用户自行指定apache 服务器监控的IP地址或通信端口。

“DocumentRoot”:指定apache 服务器存放网页的根目录;“ServerName”:允许用户自行设置主机名,这个名称将被送到远程连接程序,以取代安装apache 服务器主机的真实名称。<VirtualHost IP >和</VirtualHost>构成虚拟主机的语法结构,其中的IP就是我们在服务器上绑定的不同的IP地址,也可以是IP地址加上通信端口号(见下面的例子)。

如果服务器有两个IP地址(172.16.3.40和 172.16.3.50)分别对应域名 www.ghq1.com和www.ghq2.org。对每个域名,我们都希望在80端口和8080端口发布我们的网站。可以这样配置

服务器配置(apache的配置文件httpd.conf)

Listen 172.16.3.40:80

Listen 172.16.3.40:8080

Listen 172.16.3.50:80

Listen 172.16.3.50:8080

<VirtualHost 172.16.3.40:80>

DocumentRoot /www/ghq1-80

ServerName www.ghq1.com

</VirtualHost>

<VirtualHost 172.16.3.40:8080>

DocumentRoot /www/ghq1-8080

ServerName www.ghq1.com

</VirtualHost>

<VirtualHost 172.16.3.50:80>

DocumentRoot /www/ghq2-80

ServerName www.ghq1.orgphpma.com

</VirtualHost>

<VirtualHost 172.16.3.50:8080>

DocumentRoot /www/ghq2-8080

ServerName www.ghq2.org

</VirtualHost>

因此,建立虚拟主机,我们要做好不同的IP对应的域名解析工作,建立相应的目录(如/www/ghq1),将相应的主页内容存放在相应的目录中即可。

二、Apache实现基于主机名的虚拟主机服务(一个IP地址实现多个网站)

基于主机名字的虚拟主机服务,是目前虚拟主机比较常用的一种方案。因为它不需要更多的IP地址,无须什么特殊的软硬件支持。而且现在的浏览器大都支持这种虚拟主机的实现方法。基于域名的的虚拟主机是根据客户端提交的HTTP头中的关于主机名的部分决定的。使用这种技术,很多虚拟主机可以享用同一个IP地址。

基于域名的虚拟主机相对比较简单,因为我们只需要配置DNS服务器将每个主机名映射(CNAMES)到正确的IP地址,然后配置Apache HTTP服务器,令其辨识不同的主机名就可以了。基于域名的服务器也可以缓解IP地址(IPV4)不足的问题。这种方式下,各个虚拟主机共享同一份Apache,因此有CGI程序运行时,安全性也不高。

优点:只要一个IP地址就可以提供大量的虚拟主机服务。

缺点:安全性差。维护这些虚拟主机时需要更改配置文件,并且需要重新启动Apache进程才能起作用。因此不适合进行大规模的虚拟主机服务。

如果服务器只有一个IP地址,而在DNS中有很多映射到这个机器。我们想要在这个机器上运行www.ghq1.com和 www.ghq2.org两个站点。在Apache服务器的配置中创建一个虚拟主机并不会自动在DNS中对主机名做相应更新。我们必须自己在DNS中添加域名来指向我们的IP地址。否则别人是无法看到我们的web 站点。

服务器配置(apache的配置文件httpd.conf)

# Ensure that Apache listens on port 80phpma.com

Listen 80

# Listen for virtual host requests on all IP addresses

NameVirtualHost *

<VirtualHost *>

DocumentRoot /www/ghq1

ServerName www.ghq1.com

# Other directives here

</VirtualHost>

<VirtualHost *>

DocumentRoot /www/ghq2

ServerName www.ghq2.org

# Other directives here

</VirtualHost>

因为*(星号)匹配所有的地址,所以主服务器不接收任何请求。因为 www.ghq1.com首先出现在配置文件中,所以它拥有最高优先级,可以认为是默认或首要服务器。这意味着如果一个接受的请求不能与某个ServerName指令相匹配, 它将会由第一个VirtualHost所伺服。

当我们的IP地址无法确定的时候,使用*是很方便的–比如说, ISP给我们配置的是动态IP地址(如ADSL拨号上网),而我们有使用了某种动态域名解析系统时。因为*匹配任何IP 地址,所以在这样的情况下,不论IP地址如何变化,我们都不需要另外进行配置。上述配置就是我们在绝大多数情况下使用基于域名的虚拟主机时将要用到的。

本文档的涵义一言以蔽之就是:不要让Apache在解析配置文件的时候用到DNS。 如果Apache在解析配置文件时用到了DNS,您的服务器就会发生可靠性的问题(也可能根本无法启动), 或者遭致拒绝(偷窃)服务攻击(包括用户可以从其他用户那里偷窃点击)。

一个简单示例

拒绝服务

“main server”地址

避免这些问题的小技巧

附录:进一步的提示

一个简单示例

<VirtualHost www.abc.dom>

ServerAdmin webgirl@abc.dom 

DocumentRoot /www/abc 

</VirtualHost> webgirl@abc.dom 

DocumentRoot /www/abc 

</VirtualHost> webgirl@abc.dom 

DocumentRoot /www/abc 

</VirtualHost> webgirl@abc.dom 

  DocumentRoot /www/abc 

</VirtualHost> webguy@def.dom 

  DocumentRoot /www/def 

</VirtualHost> webmaster@host.foo.com

DocumentRoot /www/docs/host.foo.com

ServerName host.foo.com

ErrorLog logs/host.foo.com-error_log

TransferLog logs/host.foo.com-access_log

</VirtualHost> webmaster@host.foo.com

DocumentRoot /www/docs/host.foo.com

ServerName host.foo.com

ErrorLog logs/host.foo.com-error_log

TransferLog logs/host.foo.com-access_log

</VirtualHost>

为了让Apache功能正常,一个虚拟主机绝对需要以下两部分的信息: ServerName和与服务器对应的至少一个IP地址。 这个示例没有包括IP地址,于是Apache必须用DNS来查询www.abc.dom的地址。 如果在某些不可预料的情况下,当您的服务器解析配置文件时没有得到DNS的支持, 那么这个虚拟主机 将不会被配置。 它将不会对任何请求作出反应。(在Apache的1.2版本之前,服务器甚至无法启动)。

假设www.abc.dom的IP地址是10.0.0.1。那么看看以下这个配置片断

<VirtualHost 10.0.0.1>

ServerAdmin

现在Apache需要DNS对这个虚拟主机进行反向域名解析来确定ServerName。 如果反向解析失败,那么这将导致这个虚拟主机部分功能丧失。 (在Apache的1.2版本之前,服务器将不能启动)。如果虚拟主机是基于域名的, 它将完全不能使用,但如果它是基于IP的,那么它将很有可能工作。 然而,如果Apache不得不为一个已经包含了服务器域名的服务器产生一个完整的URL, 那么它将可能产生一个无效的URL。

以下是一个可以避免上述两个问题的配置片断.

<VirtualHost 10.0.0.1>

ServerName www.abc.dom

ServerAdmin

拒绝服务

拒绝服务主要由(至少)两种形式导致。 如果您在运行Apache 1.2以前的版本,在上述两种情况下,如果您的任何一个虚拟主机的DNS解析失败, 您都会无法启动服务。在一些情况下,DNS解析甚至不在您的控制范围之内。 比如说,如果abc.dom是您的一个客户,而且他们自己控制着DNS。 那么仅仅是因为他们删除了www.abc.dom这个记录, 都会导致您的服务器(1.2之前的版本)无法启动。

另外一种形式就更隐蔽了。比如说下面这个配置片断:

<VirtualHost www.abc.dom>

ServerAdmin

<VirtualHost www.def.dom>

ServerAdmin

假设您已经为www.abc.dom设定了10.0.0.1, 而为www.def.dom设定了10.0.0.2。 更进一步,假设def.com自己控制DNS。在这种配置下, 您已经把def.com放到了一个可以将所有指向abc.com 的所有流量据为己有的情况之下。为了达到这样的目的, 他们只需要把www.def.dom的地址解析设置成10.0.0.1就可以了。 因为他们控制着自己的DNS服务, 所以您无法阻止他们把www.def.com这个记录指向任何一个IP地址

然后,所有向10.0.0.1发出的请求 (包括用户所有类似http://www.abc.dom/任何字符的URL) 都将会为def.com这个虚拟主机所接收。 为了更好的理解着一切是怎样发生的, 您需要一个关于Apache是怎样将进入的请求分配给它的虚拟主机的深入说明。 您可以在这里发现一个完整的文档。

phpma.com

“main server”地址

在Apache 1.1中,基于域名的虚拟主机支持 需要Apache知道运行着httpd的主机的IP地址。 一般来说可以用全局变量ServerName(如果存在) 或者调用C的方法gethostname(与在命令行模式下键入hostname得到的返回值一样)。 接着它就会利用DNS来查找这个地址。目前还没有办法避免这样的查找。

如果您担心这样的查找会因为您的DNS服务器没有启动而遭到失败的结果, 您就可以在/etc/hosts中插入一条记录来确定主机名 (此文件中应该已经存在这条记录了,否则您的机器无法正常启动)。 然后,您要确认您的机器已经配置为当DNS解析失败的情况下, 它将会使用/etc/hosts根据所使用的操作系统不同, 您可能需要在/etc/resolv.conf或/etc/nsswitch.conf 两个文件中选择一个进行编辑。

如果您的服务器不必因为其他理由而使用DNS, 您也许不必在把HOSTRESORDER环境变量设置为”local”的情况下运行Apache。 这都取决于您所使用的操作系统和解析库。 如果您没有使用mod_env来控制环境变量,它还将影响到CGI。 强烈建议您参考一下您所使用的操作系统附带的man帮助或FAQ。

避免这些问题的小技巧

在VirtualHost中使用IP地址

在Listen中使用IP地址

确保所有的虚拟主机拥有显式的ServerName定义。

创建一个不包含任何服务页面的<VirtualHost_default_:*>服务器

附录:进一步的提示

涉及到DNS的情况都很让人不舒服。 在Apache 1.2 中,我们努力想让服务器在DNS解析失败的情况下至少保持能够启动, 但可能我们还是没能做到最好。在当今重编号成了必须的Internet上面, 在配置文件中显式的写明IP地址已经成为不合时宜的行为了。

上述盗窃攻击的解决办法是, 在一个正向的DNS查询结果后部署一个逆向DNS解析并将两个域名进行比较。 如果不同,就禁用相应的虚拟主机。 这个方法需要一个正确配置了的逆向域名解析服务器 (因为FTP服务器和TCP封装进行的“双重逆向”DNS处理的普遍应用,这已为大部分管理员所熟知了)。

在某些情况下,如果没有使用IP地址而DNS解析又失败了, 那么正常启动一个基于域名的虚拟主机看来是不可能的。 一些诸如禁用部分配置文件这样的权宜之计会带来比根本不能启动更遭的不可预测的结果。

随着HTTP/1.1的部署以及浏览器和代理服务器开始支持Host头, 我们完全避免使用基于IP的虚拟主机也逐渐成为可能。 这种状况下,web服务器也不必在配置时进行DNS的查询。 但在1997年3月,这些特性的采用还没有广泛到可以在重要的web服务器应用的地步。

http://www.uplinux.com/download/doc/apache/ApacheManual/dns-caveats.html#example

http://www.uplinux.com/download/doc/apache/ApacheManual/mod/core.html#virtualhost

<VirtualHost>和</VirtualHost>用于封装一组仅施用于特定虚拟主机的指令。任何在虚拟主机配置中可以使用的指令也同样可以在这里使用。当服务器接受了一个特定虚拟主机的文档请求时,它会使用封装在<VirtualHost>配置段中的指令。地址可以是

虚拟主机的IP地址;

虚拟主机IP地址对应的完整域名;

字符*,仅与NameVirtualHost *配合使用以匹配所有 的IP地址;或是

字符串_default_,与基于IP的虚拟主机联用以捕获所 有没有匹配的IP地址。

示例

<VirtualHost 10.1.2.3>

ServerAdmin

 

IPv6的地址必须放入方括号中指定,否则作为可选项的端口号将无法确定。一个IPv6的示例如下:

 

<VirtualHost [fe80::a00:20ff:fea7:ccea]>

ServerAdmin

每个虚拟主机必须对应不同的IP地址、端口号或是不同的主机名。在第一种情况下,服务器所在物理机器必须配置为可以为多个地址接受IP包。(在机器没有多个网络硬件界面的情况下,如果您的操作系统支持,您可以使用ifconfig alias命令来达到这个目的。)。

当使用基于IP的虚拟主机时,特殊的名称_default_可以在没有匹配上其它列出的虚拟主机的情况下作为匹配任何IP地址的虚拟主机。在没有进行_default_虚拟主机的设定时,在没有IP与请求匹配的情况下,将使用“主服务器”(包括所有在虚拟主机配置段之外的配置)的配置。(但请注意:任何匹配NameVirtualHost指令的IP地址既不会使用”main”服务器配置,也不会使用_default_虚拟主机的配置。 参阅基于域名的虚拟主机文档获得更多详情。)

您可以指定一个:端口来改变匹配的端口。如果没有指定,它将沿用主服务器中离它最近的那个Listen语句指定的值。您也可以指定:*来匹配那个地址上的所有端口。(当您使用_default_时,这是推荐采用的方法。)

安全提示:参阅安全提示文档获得为什么当您存储日志文件的目录对于启动服务器以外的用户来说是可写的会危及服务器安全的详细资料。

注意:<VirtualHost>的使用不会影响到Apache侦听的地址。您也许需要使用Listen来确保Apache侦听着正确的地址。

为调试程序,本机安装iis与apache,无法同时使用80端口,现给出解决方法:

方法一:

IIS5,多IP下共存,IIS为192.168.0.1,apache为192.168.0.2 原文地址

c:/Inetpub/Adminscripts

cscript adsutil.vbs set w3svc/disablesocketpooling true

该命令反馈如下disablesocketpooling : (BOOLEAN) True

重启IIS

Inetpub/AdminScripts>cscript adsutil.vbs set w3svc/disablesocketpooling true

由于 DisableSocketPooling 在 IIS 6.0 元数据库架构 (MBSchema.xml) 中被定义为有效属性,所以,您仍然可以使用 Adsutil.vbs 设置该属性,但这种设置不起作用。IIS 6.0 中的功能是新增的核心级别驱动程序 HTTP.sys 的一部分。要配置 HTTP.sys,您必须使用 Httpcfg.exe

方法二:

IIS6,多IP下共存,IIS为192.168.0.1,apache为192.168.0.2 原文地址

到2003的CD下的 support/tools/Support.cab。解压出httpcfg.exe文件,COPY到windows/system32/目录下,用法自己看帮助

命令行

绑定到某IP: httpcfg set iplisten -i 192.168.0.1

即命令使用IIS的只监听指定的IP及端口

查看绑定: httpcfg query iplisten

删除绑定: httpcfg delete iplisten -i 192.168.0.1

命令行

net stop Apache2

net stop iisadmin /y

net START Apache2

net START w3svc

保证iis下的ip设置为全局默认,Apache中httpconf设置listen 192.168.0.2:80,就应该可以两个服务同时运行,相互不冲突了。

IIS的访问地址为http://192.168.0.1,Apache访问地址为http://192.168.0.2

方法三:

网上常用的单IP共用80端口方法,不过不推荐,只是使用Apache的代理,速度有影响将apache设为使用80端口,IIS使用其它端口,比如81,然后将apache作为IIS的代理。

在httpd.conf里面,取消下面四行的注释:

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_connect_module modules/mod_proxy_connect.so

LoadModule proxy_http_module modules/mod_proxy_http.so

LoadModule proxy_ftp_module modules/mod_proxy_ftp.so

然后建立一个虚拟主机,将该域名的所有访问转向81端口。

ServerName iloves.vicp.net

ProxyPass / http://localhost:81/

ProxyPassReverse / http://localhost:81/

这样,对外就可以只需要一个端口,即可同时使用apache和IIS的功能了

类推,使用第二种方法,你可以在IIS上配置PHP4,Apache2中配置PHP5,只需要IIS中安装PHP4,把php.ini复制到/windows目录即可,这个就不用说了吧,Apache2中,只要把PHP5的php.ini放在PHP5安装目录里面就行了

配置Apache以支持PHP5:

LoadModule php5_module “D:/PHPServer/PHP5/php5apache2.dll”

AddType application/x-httpd-php .php

DirectoryIndex index.html index.php

PHPIniDir “D:/PHPServer/PHP5”

其中最重要的一条就是 PHPIniDir,用来指明php.ini文件所在位置,即PHP5的安装目录,注意所有目录的应该改为D:/PHPServer/PHP5这种格式,而非D:/PHPServer/PHP5,IIS的访问地址为http://192.168.0.1,Apache访问地址为http://192.168.0.2

通过admin

删除域名抢注实战

现在珍贵的域名价格越来越贵,但是从另外一个方面,每天被删除的珍稀域名也不计其数。如何得到这些删除的珍稀域名,不管投资或者自己持有,需要结合两方面。第一,找到这些珍贵域名,第二,抢注这些珍贵的删除域名。

第一步,我们要找到自己想要抢注的删除域名。首先,我们要得到删除域名的列表,从这些删除域名的列表里面,我们筛选出自己认为有价值的删除域名。比较常 见的删除域名筛选查询工具可以直接从百度上搜到,笔者个人比较常用的是歪菜删除域名查询系统,里面的功能不错,覆盖了大部分笔者想要的功能。当然还有其他 的,大家直接搜过期域名抢注就能找到一堆工具了,可以选一个自己喜欢的。

笔者个人每天都查看的删除域名报表有双拼COM,三拼COM, 一些英文字母的组合,比如china,wan,youxi,you,crazy,mini之类的,具体例子就不多说了,不能把家底曝光……嘿嘿,不过 cvcv这样的,或者aabb这样的域名也是能筛选出来的,看个人喜好了,笔者比较喜欢直接有意义的域名。附一张截图。

删除域名抢注实战

最后,选定好自己喜欢的域名之后,确认这个域名的状态是不是还在删除列表之中。如果whois查询结果为pending delete,那就表明这个域名会按照显示的时间山除掉。因为删除域名筛选工具都是通过一些权威网站得到的删除域名列表,但是由于这些删除域名列表也不一 定准确,所以一定要确认是不是还在删除状态,否则一旦对方已经续费,我们就白费功夫了。另外一点,可以查查这个域名的archive历史,看看有没有被做 过非法网站,以确保自己投资安全。

第二步,选定好可以抢注的域名后,我们接下来就要用合适的抢注工具来抢注域名了。笔者个人比较经常使 用的抢注工具有pool.com,snapnames.com,godaddy.com.其实还有一家enom.com笔者一直没去用过,由于以前听过一 些大佬说enom.com的抢注方式和其他地方不一样,所以一直没去试过。抢注工具的原理都一样,这些公司会注册很多家子公司,然后申请很多的注册管道, 通过这些管道同时来在删除的下一刻进行抢注。所以公司越大,管道越多,管道越多,抢注成功率越高。下面笔者分别对这些工具作一些介绍。

pool.com是资格比较老的抢注工具,非常有实力。不过可惜的是,笔者从来没有在pool.com上面抢注成功过,可能是笔者人品太差把。pool抢 注的底价是69美元,不抢注成功不对信用卡扣款,所以,只有你抢注成功了,才有可能被扣款,最少69美元。一旦抢注成功,仅有你一人抢注这个域名的话,就 直接成功了,扣款69美元。但是如果有多人抢注,则进入3天的秘密竞价,所有抢注的人才有资格参与竞价。

snapnames.com是 笔者用得最多的一个抢注工具,极其有实力,本人所有的域名均保存在moniker.com,moniker.com和snapnames.com是一家公 司。前两个月bibi.com被删除就是被snapnames.com抢走,最后成交价20000多美元。snapnames的价格为59美元的底价,成 功后直接扣款或者进入为期三天的秘密竞价。

enom.com笔者个人不是很清楚,在这里不好发言了。但是enom.com和pool.com和snapnames.com合称为三巨头,大家有时间可以试试,比较比较。上次笔者有个在snapnames预定的域名被enom抢走了。

godaddy.com的价格是最便宜的,只要19.99美元一个抢注机会,一次可以购买很多个抢注机会。与其他抢注不同的是,godaddy是预付款 机制。买了抢注机会后才能抢注,但是如果抢注失败,还可以继续抢注,直到抢注成功为止以后,那个抢注机会才被扣除。所以笔者个人一般一次性买4个抢注机 会,这样就能用75美元25%折扣的优惠码,还能再便宜一点。多人抢注也是竞价机制。

经过笔者个人长期实践,抢注成功率是这样的 snapnames > enom > pool >goadddy.所以一旦笔者碰到可以抢也可以不抢,也就是那个域名价值不高的情况下,笔者会用godaddy,意思就是,抢到了就抢到了,没抢 到就算了。如果碰上特别好的域名,笔者会在godaddy,snapnames,pool三个地方都预订一份,一旦哪个地方抢注成功,以确保自己有竞价的 权力。虽然有些域名最后成交价相当高,但是看看竞价能了解一下当前域名市场行情也是好的。

国内域名抢注机构没有用过,因为本人所有域名均保存在国外,与其国内抢注再转移,还不如直接在国外抢注。不过大家可以去试试,只不过笔者不知道成功率有多高。

下面附上snapnames的抢注详解,其他抢注工具都类似。

第一步:注册  – 下图是第四步,必须要填信用卡信息。不过如果没有抢注成功,snapnames是不会给你扣款的。

删除域名抢注实战

第二步:提交订单  – 最低起价是59美元。

删除域名抢注实战

点ADD TO CART,然后准备下订单PLACE ORDER

删除域名抢注实战

第三步:等待结果  – PLACE ORDER之后可以在My Activity中找到这个订单,然后就是等待系统抢注了。一般com,net,org都是在晚上凌晨2点到3点左右删除。大家完全没有必要熬夜,直接睡 觉,第二天察看邮件,如果成功了,竞价去吧。如果失败了,也会给你发一封邮件通知。不过通过whois你一般不能查到是哪个公司注册,因为都是通过管道来 注册。

第四步:开始竞价  – 如果你是唯一的参与者,就直接胜利了,进入第五步。如果有很多竞价者,这就到了各方自由竞价的时间了,谁出价高,谁拿到域名,限时3天。具体操作如下图所示。

删除域名抢注实战

第五步:竞价成功 – 竞价成功后系统会自动给你开设一个账号,账号的名称和密码都是随机的,会直接发送到你的邮箱里面。你可以push进自己的主账号,也可以在60天后申请转移密码来转移到别的注册商。如下图,绿色表明你是最高出价者,就成功了。

删除域名抢注实战

到这里抢注的过程就算完了。希望大家都能找自己想要的域名。

通过admin

软文+外链,这是效果更好的站外优化方法

可能很多站长都用过乱发 软件,但是这些高手们往往是最先使用这些软件的一批人,所以效果也是很好的,当软件普及到大多数站长都在用的时候,也就往往没效了。所以在2010年的今天你还群发,你又落伍啦。还不如写几入篇软文效果好。

 

 

2、每天给网站添加一些原创内容

 

 

内容要增加多少呢?一般根据你站点内容的多少,大概文章总量的2%-5%吧,比如你用的Z-BLOG,一共有百把篇文章,那你每天加个2,3篇就可以了,如果是用CMS做的站,内容有千把篇,那每天加个 20,30篇。这个是必须的,就算你外链很强大,一段时间不更新原创的,GOOGLE一样懒得理你。每天就更新6篇文章,这样很有规律的加,蜘蛛会很青睐你的好习惯的。

 

 

3、每天给网站发布外链

 

 

有规律有步骤的加链接,那是做站的好品质,外链作用大,有规律,一步步来。一般的关键词轻松排上去了。外链,这是属于SEO站外优化的内容,网站,如果没有外部链接的导入,那么,蜘蛛程序是很难发现你的网站,有了导入链接,蜘蛛就会来我们网站。外链起到引GOOGLE蜘蛛爬行网站的作用,一个好的网站是需要大量优质外链的支持!“SEO内容为王,外链为皇”天天给网站增加优质外链(外链要纯手工发布才能把握好质量),相信网站会有不错的排名与流量。

 

 

软文+外链,这是效果更好的站外优化方法,一篇优质的软文,访问量是相当大的,回复率也高。高质量的软文就像一个外链银行,把外链稳定在优质的软文上,相信网站会有更好的排名,与流量。

 

 

4、每周写2篇软文

 

 

写软文并不难,难的是坚持写,写高质量的文章,但是如今软文是最低成本的推广方式之一,效果很明显,做为一个合格的站长,是必须学会写软文的,不熟悉的朋友可以到网上找找资料看看,另外,写软文,一定要加上你的版权声明,现在总有一些品质低下的人,转载了,连个链接都不给,有的甚至把你文章的网址改成他自己的,坚决鄙视这种人,人品不好的人做站也不会好。

 

 

5、养几个高权重博客

 

 

养博客,在新站上线的时候,随便带一下,就很容易让搜索引擎收录,有时候加的新栏目或者文章迟迟不收录的时候,也可以用这些高权重博客带一下。

 

 

6、到相关高权重论坛跟跟贴

 

 

跟贴不仅是一种美德,而且掌握了一些跟贴技巧,对网站也是很有益的,你站长类的网站,几乎发的文章一会儿就收录了,在后面多跟跟贴很容易成为反链,用好签名也能让蜘蛛天天去爬你的网站,就经常到一些高PR的会计论坛跟帖,结果得到外链。另外在与你主题相关的活跃论坛上跟跟贴,不仅仅带外链,还能为你的网站带来用户,一举两得,何乐而不为呢?

 

 

7、没事别经常大改版

 

 

生意不好整柜台,流量不高整网站,其实网站也像人一样,一个人经常改头换面,也得让你周围的人重新认识你,这需要一个过程,网站规划好了,版块定了,就不要轻易改,不得已做网站改版也尽量保持原来的路径

通过admin

WP新站之安装后必做的10件事

首先说明一下,大家不要有以为,虽然这个标题很熟悉,但却是另外一篇新的文章,我翻译的那篇文章在这里:10件安装WordPress后需要做的事。这是一个系列的新手教程,希望能通过这个系列的新手教程,帮助那些刚刚接触使用WordPress的朋友。

当你按照五分钟搭建属于你的WordPress的教程属于你自己的Blog后,肯定会觉得原来搭建一个属于自己的Blog是这么的容易的。当然,我们还需要对其进行些简单的配置,以使我们的WordPress(以下简称WP)博客更加完善。

以下的10项配置,是我列出的对于一个WP新站必做的10件事。你可以依照顺序一件一件的去完成它,当然也似相当easy的。

一、更改管理员密码并管理博客的写作者

WP在安装后,会随机设置一个相当晦涩难记的密码,所以,你要做的第一件事就是把这个难记的密码修改成一个对你来说比较容易记忆的。

你也可以在“用户”(User)面板中添加、删除、编辑博客作者的信息。

注解:这点在2.8中有了改变,使用原始密码登陆后,会有提示要修改密码,WordPress越来越智能了。

二、为日志增加永久链接(Permalinks)

WP默认的日志链接(例如:www.leemunroe.com/?p=396)形式对于用户访问和搜索引擎索引都是相当的不友好的。

当然你可以修改永久链接并在其中加入某些日志的关键词使链接更为友好。(例如:www.leemunroe.com/25-hot-female-web-designers)

1.进入“设置”(Setting) –> “永久链接”(Permalinks);

2.在“通用设置”(Common Setting)中选择“自定义结构”(Custom Structure);

3.输入 %postname%/ ;

4.为了使链接更加美观你也可以为它加上分类标签,输入 %category%/%postname%/ 即可。
10-thing-wp-01-thumb

三、上传并使用主题

1.下载或设计一个你喜欢的主题;

2.将主题解压释放至文件夹 “wp-content” –> “themes”中;

3.在“外观”(Appearance) –> “主题”(Themes)中激活它。(单击即可激活)

四、增加“分类”(Categories)并修改其默认值

WP默认的分类标签是相当不×的,名曰:“未分类”(Uncategories)。当你发表一篇新的日志却忘记了增加分类标签时,你希望WP默认给你加上一个什么标签呢?如果是我,则倾向于使用News或类似的分类标签。

1.进入“日志”(Post) –> “分类”(Categories);

2.点击“未分类”并修改它;

3.当然在此你还可以增加其他的博客分类标签。

五、使用 Akismet

Akismet是什么?如果你的Blog开放了评论系统,那么相信我,你将会收到很多烦人的垃圾评论。那么这时,Akismet就有用武之地了。

我要告诉你的是,Akismet已经整合进了WP,所以你只需激活它即可使用。

1.在管理员页面进入“插件”页面激活Akismet;

2.为了完成Akismet你需要申请一个WP的API key。当然你可以很方便的在Wordpress.com上申请到并在Profile页面获取它。
10-thing-wp-02-thumb

六、安装Google XML Sitemaps

如果你希望你的日志更容易更快的被主流搜索引擎索引,那么你就需要使用Google XML Sitemaps来为你的网站生成一个完成的XML-Sitemap。当然,它会随着你发布新日志而自动修改。

猛击此处安装Google XML Sitemaps插件

首先,你需要使用你的Google账户登入到Google Webmaster Central。在首页,会有一个验证你Blog站点的链接。依照Google的说明,一步一步的操作即可。

验证完毕后,你就可以猛击Add Sitemap将你的Blog站点的URL加入其中。格式应该为:http://www.yoursite.com/sitemap.xml
10-thing-wp-03-thumb1

七、安装WordPress数据备份插件

经常备份数据是一个好习惯。以免由于服务器的和自我的误操作的问题,而导致数据的丢失。

你可以使用WordPress Database Backup插件来定时备份你的Blog数据。插件默认是每周将备份数据发送至你的邮箱。所以当你激活插件以后,不需要你其他的任何操作就可以使用了。

猛击此处安装WordPress Database Backup插件,你还可以从Pro Blog Design上获取完整的自动备份教程。
10-thing-wp-04-thumb1

八、测试你的Blog

只有发布了一定数量的各种格式的日志,你才能彻底的了解你的Blog的状态。

你可以手动的一篇一篇的发表日志,也可以通过导入sample post collection from WP Candy来节省你测试的时间。

通过导入这些简单的日志组合(工具>导入>WordPress),将使你的Blog拥有一些简单的日志并包含评论,“父/子”分类标签和格式等。这将使你修改Blog主题更加的容易,彻底。

九、将Blog的RSS导入Feedburner

Blog的RSS的日志输出数,是否全文输出等,都可以再“设置”(Setting) –> “阅读”(Reading)中修改。

设置完成之后,你可以将你的Blog的RSS加入到Feedburner中。Feedburner将为你的RSS提供一个实时的服务状态,当你发布新日志时,它会及时的将更新上传至服务器。以供订阅者及时阅读。

当你第一次使用Feedburner时,记得要在注册后,修改你所使用主题中的RSS订阅链接。将下列代码增加至主题文件首尾head标签之间即可。

1.<link rel="alternate" type="application/rss+xml" title="Feed Title" href="YOUR FEEDBURNER URL">

10-thing-wp-05-thumb

 

十、使用站点分析

我建议使用Google Analytics来管理和统计站点的访问量。当然你也可以选择其他的站点分析服务网站比如Mint 和 StatCounter

补充项

1、设置合适的日志插图尺寸

设置一个与Blog内容区域相协调的插图尺寸。

“设置”(Setting) –> “媒体”(Media)

2、设置Blog的副标题(tagline)

你使用的主题或许不会显示副标题,但是在RSS输出中则会正常输出。

“设置”(Setting) –> “常规”(General)

原文连接:http://www.problogdesign.com/wordpress/10-things-to-do-after-installing-wordpress/

通过admin

菜鸟站长成功入门-网站推广之

1、QQ聊天。我个人感觉为第一耽误事情的活动,新手要控制上QQ时间,把精力更多投入到网站的内容推广上。能进些高手的群听些讲座是不错,切记不要花太多时间。和游戏,电影,说88,走上站长这条路,在初级阶段和那些不必要的娱乐再见吧,弄网站已经很累了,再搞那些更累,影响工作。真要聊天不如把聊天都用到交换友情链接上!

2、光想不做,眼高手低。对于新手来讲很多困难,等真正做过一次后会发现不过如此,找一个好用的CMS,改改图标,配置下IIS,不想原创的写好采集规则,放好广告生成网站,2个小时做起一个站来应该很轻松。有些站长有上千上万个网站也不足为奇。新手去花上百元左右(域名+100MASP空间不会多于150元)弄个空间开始入门之路,切不可为了这点钱到处去找什么免费空间,免费域名的,百元左右你要都舍不得花,就别入这个行业了。而且花了钱就会更认真些,呵呵。马上就行动是入门的第一步,很多人徘徊在这里很久不前进,仿佛真有多大困难。

3、努力程度。做一个专业站长,每天8小时在线时间应该是很平常的,我每天8点起床开始的工作是这样的:查看QQ,邮箱信息,看ADMIN5新闻,更新网站内容,做网站推广到晚上,然后玩玩就休息。其中内容推广是最主要的,在菜鸟阶段网站内容多少和漂亮程度重要性小于网站推广,不要把精力都花到网站花边好不好看上,酒香也怕巷子深!为什么你的网站不来人,因为别人不知道,现在都谈SEO技术,咱不会那个,咱只会人力推广,你一天发200条广告,连续发上3个月,你的网站不赚钱你可以到评论里骂我。成功就在于坚持的毅力和辛苦的劳动,我认识的一个高水平站长一个月收入5万元以上,他和他的女朋友2个人还经常工作到凌晨,那么赚钱还那么勤奋努力,是我经常鞭策自己的榜样。

4、站在巨人的肩膀上。做为新手学习高人的经验是快速提高自己的法宝,高人不教你怎么办,那就靠自己领会,去百度搜索和你网站类型一样的关键词看看人家怎么做的网站,放什么样的广告,位置是怎么放的,前段时间学人家放广告的一个小办法,每天就多收入了5美元,看来用心就有收获。