基于web方式的服务器账号系统容易python 实现web服务器吗

服务热线:400-702-1168 ()
您好,访客
||||||||||
[转]建立大容量基于Web的Email系统
发布时间: 13:47:27&&来源:&&作者:&&点击:207
建立大容量基于web的email系统
  最近几年来,基于web的免费email系统非常流行。当前,几个著名的免费email网站基本上已经成为大多数人的选择,建立单纯提供免费email服务的站点不再像以前那样受到热烈欢迎,但是提供web界面的email服务已经成为了一个商业站点为其注册成员提供的基本服务之一。
  一个email系统可以分为服务器端和客户端,web界面的email系统则是将email客户放在了web服务器端,因此email系统所需要实现的是一个web界面的email客户。然而,由于这个email系统要求用户数量较大,因此对于email服务器也有特定的要求。
  ◆操作系统和用户数据库
  由于提供大容量email系统对操作系统和数据库的要求非常高,因此,选择合适的操作系统和数据库就是最基本的问题。
    由于提供web和email服务要求稳定性和性能特别高,因此一般都使用unix作为服务器的操作系统,例如hotmail使用freebsd和solaris,国内163等站点也是采用bsd系列。然而, unix的标准email系统也不合适用于这种大容量服务。有的unix系统,例如当前版本的linux,其用户标识只有16位,因此用户数量最多只能有64k,即使unix系统本身支持32位的用户标识,考虑到性能因素,单台服务器支持的用户数量也不要超过10万。  为了具有支持更多用户的可扩展性,一般采用多台服务器同时提供服务,虽然此时仍然可以使用标准unix用户作为email用户,但考虑到安全性、性能以及可管理性,一般采用非unix系统用户来作为email用户。而保存用户数据通常采用支持网络访问的数据库形式,一般常用的有ldap、标准数据库、以及email系统自己实现的用户数据库。其中,ldap由于是提供目录服务的标准,因此应该为最佳的选择,其常用的开放源代码实现为openldap;而标准数据库由于实现方便、可扩展性强,其中在internet上最常用的为mysql;此外,也有使用其他方式实现的。
  ◆邮件的保存
  对于大容量email系统来说,最关键的技术就是如何处理邮件存储问题,采用何种方式提高存储效率,将决定email系统的成功与否。
  由于用户数量较大,如何保存用户的邮件就是一个非常重要的问题。传统unix使用一个单一目录来保存所有用户的邮件,在用户数量较多时就极大地降低了文件系统的性能。只有使用多级目录,每个目录下的文件数量有限,才能降低打开文件时的系统消耗,或者不再使用简单的文件来保存邮件,而采用某一种封装形式。完全采取数据库形式来保存邮件,由于用户邮件操作多为文件操作,且大小变化较大,因此会造成性能和存储空间上较大的浪费。
  由于用户数量巨大,并且也要求能被多台服务器同时访问,必须采用存储空间较大的服务器或服务器集群来保存,通过光纤通道或者网络文件系统nfs来共享存储空间,使得每个用户的邮件存储路径对于每个服务器都是一致的。光纤通道是一种非常昂贵的解决方法,更为常用的是使用nfs,可以使用专用的nfs服务器,如netapp,或者使用带有raid能力的pc unix服务器。
  当使用nfs共享存储空间的时候,必须注意一个非常重要的问题:由于nfs缺乏文件锁定机制,在使用传统的用户邮件存储格式mailbox时,由于所有的邮件都保存在同一个文件中,因此进行邮件操作就必须加锁,以保证没有访问冲突,这就使得它不适合nfs存储方式。为了解决这个问题,qmail提出了maildir存储方式,每个邮件作为单独的一个文件保存在用户个人的邮件目录下,就避免了加锁。因此,常见的免费邮件服务器,一般都采用maildir方式来保存用户的邮件。
  如果不打算使用共享文件系统的方式来保存用户的邮件,而打算让每个服务器只访问其自己硬盘存储空间上的用户邮件,那么email服务器和客户端都需要进行定制,使它们能通过用户名来找到用户属于的真正服务器,将访问任务交给这个服务器完成。这种方法的缺点除了所需要的改动较大、系统结构复杂之外,还由于服务器是按用户进行分割的,不利于分担负载。其优点也是由于它不通过网络访问其他服务器,因此可以采用任意的邮件存储格式,包括采用强大的cyrus系统来保存邮件和提供服务。
  ◆邮件服务器软件
  采用什么样的email服务器软件也将最终影响系统的性能,自己做一套email服务器可能会得不偿失,现在有两个选择:sendmail和qmail。
  标准的email软件,例如sendmail,虽然也提供了一些包括aliases等方法,来支持非unix系统用户,但是这些能力对于实现这种email系统是不够的。为了支持这些email用户,必须使用自己的email服务器软件。但是由于现有的email软件都相当成熟,而且也都是开放源代码的软件,所以惯常的做法都是修改原有的email软件,如sendmail、qmail等,使其支持特定的email用户。完全重写一个email服务软件,从成熟性、稳定性来看并不可取。
  不管从性能上还是安全性上考虑,sendmail并不是理想的选择,而由于qmail本身就支持maildir,因此就成为了常用的email软件的基础开发平台。但是需要注意的是,qmail使用gpl许可进行保护,因此基于qmail进行的任何改动,原则上必须公开源代码,这对开发商业应用有一定障碍。当然可以通过不改动qmail,而改动相关的系统库函数,或者采用外挂的方式来绕过这个问题。另一个可选的基础email软件是postfix,其本身就具备与ldap、mysql的接口,几乎不需要改动就能作为邮件系统的一部分。
  ◆web客户端
  利用什么样的脚本来进行web email的客户端编程并无标准,但是如果采用开放资源将会省去很多麻烦。
  web界面email系统的另一个重要的部分就是web客户端,这一部分的功能将如同个人计算机中的outlook,负责给用户提供访问自己邮件的能力。由于web访问本身是无连接的,因此必须保证用户的安全性。基本上,安全性可以通过登录后建立的会话标识、临时目录,并在程序中进行验证来保证。
  web客户端必须以统一的方式来访问服务器,它可以通过直接文件访问的方式来获得用户的邮件,或者通过pop3、imap等标准协议来访问。对于使用网络文件系统来共享用户邮件的系统,通过直接文件访问的方法最为直接和便利,也不需要额外的消耗。而通过pop3、imap协议来访问服务器,其直接的好处就是web客户端和email服务器相分离,提高了系统安全性。
  当前,已经有一些相当成熟的开放源代码的web客户端软件,其中imp是采用php来实现的,通过imap协议访问服务器的web邮件客户端软件;而wing则是采用perl来实现的另一个web客户端软件。这些开放源代码软件都相当不错,然而,将这些软件与自己的系统相集成,还会需要进行一定改动。此外,还应该遵循其许可要求,将改动的代码对外公开。
  ◆实现负载均衡
  系统的负载均衡将是长期的问题,它决定了该系统的可扩展性。
  由于需要提供给大量的用户进行访问,因此单台服务器不能满足这个需要,而必须要使用多服务器的方式。除了按照功能性进行分割之外,如web服务器、email服务器以及文件服务器相分离,还需要对一些资源紧张的服务使用多服务器进行负载均衡。虽然当前一些商业厂家也提出了一些服务器集群的方案,但常用的简单而有效的方法还是dns循环解析、web服务器重定位和nat负载均衡等几种。
  dns循环解析是为同一个名字分配多个ip地址,它用在yahoo等相当大的站点上,实际效果也相当不错。而web服务器重定位则是由web服务器随机产生位于不同服务器上的真实页面url,使不同的浏览器载入不同服务器上的页面,使用它只能实现web客户端的负载均衡。而nat负载均衡则利用第四层交换机,使同样的请求转向不同的服务器,除了昂贵的交换机之外,也有一些软件能完成nat功能。本人曾对freebsd的natd进行了改动,使其能支持负载均衡,这对于因为交换机价格问题而不得不降低性能要求的使用者来讲,也是一种选择。
  ◆实例分析
  国内有很多web email系统,网易、21cn和新浪email是其中的代表。
  当前在国内最流行的web界面email系统为网易公司的系统,它是采用qmail作为基本服务器软件,再加以改动的系统。它采用nfs网络文件系统作为用户邮件存储空间,使用maildir作为邮件存储格式,提供多级目录以支持大量用户。其web客户端为他们自己实现的,通过直接访问用户邮件的方式为用户提供服务。不考虑其软件的小问题,这种实现方式是非常流行且成熟的方式,大部分免费邮件服务系统都是采用的这种模式。
  另一种方式是尽量利用已有的开放源代码软件,一种可行的方案是使用postfix、openldap、cyrus和imp来实现大容量email系统。其中,主邮件服务器使用postfix查询ldap服务器,决定用户的真实邮箱地址,然后转发到真实邮件主机上,该主机通过ldap查询确认,将邮件放入cyrus服务器中,而imp通过登录cyrus,使用imap访问用户邮件。当用户增多,一台cyrus服务器不够时,可以将新添加的用户放置到新增加的服务器上,只需要在ldap服务器设置相应的属性就可以了。在这种方式下,由于用户是严格按服务器分割造成了管理等困难之外,这种结构本身较为复杂。然而,如果用户数量不是很多,就不需要使用多台cyrus服务器和ldap服务器,复杂程度就大大降低,比较适合中小型站点使用。
以上内容由
搜集整理,如转载请注明原文出处,并保留这一部分内容。
  “华夏名网”
是成都飞数科技有限公司的网络服务品牌,专业经营虚拟主机,域名注册,VPS,服务器租用业务。公司创建于2002年,经过6年的高速发展,“华夏名网”已经成为我国一家知名的互联网服务提供商,被国外权威机构评价为十大IDC服务商之一。
华夏名网网址导航:
上一篇:下一篇:
(4916次点击) (2768次点击) (4158次点击) (2793次点击) (2372次点击) (3729次点击) (3570次点击) (2359次点击) (2529次点击) (2438次点击)
(3416次点击) (3234次点击) (3245次点击) (3990次点击) (2412次点击) (2322次点击) (3214次点击) (3623次点击) (2354次点击) (2335次点击)
&2002- 飞数科技 版权所有
电话总机:028-91 94
公司地址:四川省成都市青龙街51号倍特康派大厦10楼5号菜鸟小败 的BLOG
用户名:菜鸟小败
文章数:26
评论数:19
访问量:9708
注册日期:
阅读量:5863
阅读量:12276
阅读量:415651
阅读量:1103198
51CTO推荐博文
&一、安装前的准备工作:
1、准备好实验中所需要的各种软件包:bind97、bind97-libs、bind97-utils、mysql、mysql-devel、mysql-server、postfix-2.9.6.tar.gz、dovecot、libtool-ltdl、libtool-ltdl-devel、expect
2、关闭sendmail,并将它的随系统自动启动功能关闭:
# service sendmail stop
# chkconfig sendmail off
3、安装以下开发所用到的rpm包组:
Development Libraries
Development Tools
# yum groupinstall &packge_group_name&
二、搭建一个简易的DNS服务器
因为邮件服务依赖于DNS服务,所以这里我们简单的搭建一个DNS服务器。
1、安装配置DNS服务器
2、配置并测试DNS服务器
&options&{&&&&&directory&&&&/var/named&;&&&&&dump-file&&&&/var/named/data/cache_dump.db&;&&&&&&&&&statistics-file&&/var/named/data/named_stats.txt&;&&&&&&&&&memstatistics-file&&/var/named/data/named_mem_stats.txt&;&&&&&recursion&&&&&&&/*&Path&to&ISC&DLV&key&*/&&&&&bindkeys-file&&/etc/named.iscdlv.key&;&};&
一个简易的DNS服务器已经搭建完毕。
三、使用rpm安装一个MySQL数据库
1、安装rpm包
我们在使用rpm安装数据库的时候需要注意到数据库的库文件及头文件的安装路径。
2、配置并测试数据库是否安装正常
&Welcome&to&the&MySQL&monitor.&&Commands&end&with&;&or&\g.&Your&MySQL&connection&id&is&2&Server&version:&5.0.77&Source&distribution&&Type&''&or&'\h'&for&help.&Type&'\c'&to&clear&the&buffer.&&mysql&&\q&Bye&
数据库至此已经安装完毕。
四、安装并调试postfix
1、安装postfix软件
注:编译安装之前要注意系统时间是否一致;
按照以下的提示输入相关的路径([]号中的是缺省值,&]&后的是输入值,省略的表示采用默认值)
install_root:&[/]&/& tempdir:&[/root/postfix-2.9.3]&/tmp/postfix& config_directory:&[/etc/postfix]&/etc/postfix& daemon_directory:&[/usr/libexec/postfix]&& command_directory:&[/usr/sbin]&& queue_directory:&[/var/spool/postfix]& sendmail_path:&[/usr/sbin/sendmail]& newaliases_path:&[/usr/bin/newaliases]& mailq_path:&[/usr/bin/mailq]& mail_owner:&[postfix]& setgid_group:&[postdrop]&&&&&&&html_directory:&[no]/var/www/html/postfix&&&&&manpages:&[/usr/local/man]&&&&readme_directory:&[no]&
2、调试并配置postfix软件,测试使用情况
&&&&&&&&&&&&&&.&/etc/rc.d/init.d/functions&&&.&/etc/sysconfig/network&&&[&$NETWORKING&=&&no&&]&&&&exit&3&&[&-x&/usr/sbin/postfix&]&||&exit&4&[&-d&/etc/postfix&]&||&exit&5&[&-d&/var/spool/postfix&]&||&exit&6&&RETVAL=0&prog=&postfix&&&start()&{&&&&&&&&&&echo&-n&$&Starting&postfix:&&&&&&&&&&&/usr/bin/newaliases&&/dev/null&2&&1&&&&&/usr/sbin/postfix&start&2&/dev/null&1&&2&&&&success&||&failure&$&$prog&start&&&&&&RETVAL=$?&&&&&[&$RETVAL&-eq&0&]&&&&touch&/var/lock/subsys/postfix&&&&&&&&&echo&&&&&return&$RETVAL&}&&stop()&{&&&&&&&&echo&-n&$&Shutting&down&postfix:&&&&&&&/usr/sbin/postfix&stop&2&/dev/null&1&&2&&&&success&||&failure&$&$prog&stop&&&&&&RETVAL=$?&&&&&[&$RETVAL&-eq&0&]&&&&rm&-f&/var/lock/subsys/postfix&&&&&echo&&&&&return&$RETVAL&}&&reload()&{&&&&&echo&-n&$&Reloading&postfix:&&&&&&&/usr/sbin/postfix&reload&2&/dev/null&1&&2&&&&success&||&failure&$&$prog&reload&&&&&&RETVAL=$?&&&&&echo&&&&&return&$RETVAL&}&&abort()&{&&&&&/usr/sbin/postfix&abort&2&/dev/null&1&&2&&&&success&||&failure&$&$prog&abort&&&&&&return&$?&}&&flush()&{&&&&&/usr/sbin/postfix&flush&2&/dev/null&1&&2&&&&success&||&failure&$&$prog&flush&&&&&&return&$?&}&&check()&{&&&&&/usr/sbin/postfix&check&2&/dev/null&1&&2&&&&success&||&failure&$&$prog&check&&&&&&return&$?&}&&restart()&{&&&&&stop&&&&&start&}&&&case&&$1&&in&&&start)&&&&&start&&&&&;;&&&stop)&&&&&stop&&&&&;;&&&restart)&&&&&stop&&&&&start&&&&&;;&&&reload)&&&&&reload&&&&&;;&&&abort)&&&&&abort&&&&&;;&&&flush)&&&&&flush&&&&&;;&&&check)&&&&&check&&&&&;;&&&status)&&&&&status&master&&&&&;;&&&condrestart)&&&&&[&-f&/var/lock/subsys/postfix&]&&&&restart&||&:&&&&&;;&&&*)&&&&&echo&$&Usage:&$0&{start|stop|restart|reload|abort|flush|check|status|condrestart}&&&&&&exit&1&esac&&exit&$?&&&
3、配置postfix文件
修改以下几项为您需要的配置&myhostname&=&&&&&&&&&&&&&&&&&&&&&&&&&&myorigin&=&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&mydomain&=&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&mydestination&=&$myhostname,&localhost.$mydomain,&localhost,&$mydomain,&ns.$mydomain&mynetworks&=&172.16.0.0/16,&127.0.0.0/8&&&&&&&&&&&&&&&&
注:&1、在postfix的配置文件中,参数行和注释行是不能处在同一行中的;&2、任何一个参数的值都不需要加引号,否则,引号将会被当作参数值的一部分来使用;&3、每修改参数及其值后执行&postfix&reload&即可令其生效;但若修改了inet_interfaces,则需重新启动postfix;&4、如果一个参数的值有多个,可以将它们放在不同的行中,只需要在其后的每个行前多置一个空格即可;postfix会把第一个字符为空格或tab的文本行视为上一行的延续;&&此时可以使用本地用户发送邮件,测试一下。&
五、配置dovecot服务
&&修改&&&&
# mutt -f pop://jim@
六、基于sasl认证
&将MECH=pam修改为MECH=shadow,使其认证方式从pam转变为读取shadow文件&&&&&&log_level:&3&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&pwcheck_method:&saslauthd&&&&&&&&&&&&&&&&&&&&&&&&&&&&mech_list:&PLAIN&LOGIN&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&将mynetworks&=&172.16.0.0/16,&127.0.0.0/8,&192.168.0.0/24修改为只允许127.0.0.0网段访问&
并在文件尾部添加以下内容:
&broken_sasl_auth_clients&=&yes&smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject_invalid_hostname,reject_non_fqdn_hostname,reject_unknown_sender_domain,reject_non_fqdn_sender,reject_non_fqdn_recipient,reject_unknown_recipient_domain,reject_unauth_pipelining,reject_unauth_destination&smtpd_sasl_auth_enable&=&yes&smtpd_sasl_local_domain&=&$myhostname&smtpd_sasl_security_options&=&noanonymous&smtpd_sasl_path&=&smtpd&smtpd_banner&=&Welcome&to&our&$myhostname&ESMTP,Warning:&Version&not&Available!&
# service postfix restart
发送一封邮件使用tail查看日志:
至此基于用户的认证邮件服务就已经搭建完成。
七、安装Courier authentication library
1、首先我们要确认libtool-ltdl libtool-ltdl-devel expect是否安装上了
备注:在RHEL5上安装courier时,需要安装0.64.0或之前版本。
&&&&&&&--prefix=/usr/local/courier-authlib&\&&&&&--sysconfdir=/etc&\&&&&&--without-authpam&\&&&&&--without-authshadow&\&&&&&--without-authvchkpw&\&&&&&--without-authpgsql&\&&&&&--with-authmysql&\&&&&&--with-mysql-libs=/usr/lib/mysql&\&&&&&--with-mysql-includes=/usr/include/mysql&\&&&&&--with-redhat&\&&&&&--with-authmysqlrc=/etc/authmysqlrc&\&&&&&--with-authdaemonrc=/etc/authdaemonrc&\&&&&&--with-mailuser=postfix&\&&&&&--with-mailgroup=postfix&\&&&&&--with-ltdl-lib=/usr/lib&\&&&&&--with-ltdl-include=/usr/include&&&
2、配置实用mysql连接认证
备注:可以使用--with-authdaemonvar=/var/spool/authdaemon选项来指定进程套接字目录路径
修改/etc/authdaemonrc 文件
authmodulelist=&authmysql&&authmodulelistorig=&authmysql&&daemons=10&
注:这里的数据库用户名及密码在真实生产环境中最好更改成你自己设定的。
修改/etc/authmysqlrc文件
MYSQL_SERVER&&&&&&&&&&&&localhost&&&&&&&&&&&&&&&&&&&&MYSQL_USERNAME&&&&&&&&&&extmail&&&&&&&&&&&&&&&&&&&&&&MYSQL_PASSWORD&&&&&&&&&&extmail&&&&&&&&&&&&&&&&&&&&&&MYSQL_DATABASE&&&&&&&&&&extmail&&&&&&&&&&&&&&&&&&&&&&MYSQL_USER_TABLE&&&&&&&&mailbox&&&&&&&&&&&&&&&&&&&&&&MYSQL_CRYPT_PWFIELD&&&&&password&&&&&&&&&&&&&&&&&&&&&MYSQL_UID_FIELD&&&&&&&&&2525&&&&&&&&&&&&&&&&&&&&&&&&&MYSQL_GID_FIELD&&&&&&&&&2525&&&&&&&&&&&&&&&&&&&&&&&&&MYSQL_LOGIN_FIELD&&&&&&&username&&&&&&&&&&&&&&&&&&&&&MYSQL_HOME_FIELD&&&&&&&&concat('/var/mailbox/',homedir)&MYSQL_MAILDIR_FIELD&&&&&concat('/var/mailbox/',maildir)&
3、提供服务脚本
# service courier-authlib start & (启动服务)
4、配置postfix和courier-authlib
新建虚拟用户邮箱所在的目录,并将其权限赋予postfix用户:
接下来重新配置SMTP 认证,编辑 /usr/lib/sasl2/smtpd.conf ,确保其为以下内容:
pwcheck_method:&authdaemond&log_level:&3&mech_list:PLAIN&LOGIN&authdaemond_path:/usr/local/courier-authlib/var/spool/authdaemon/socket&&
八、配置让postfix支持虚拟域和虚拟用户
1、编辑/etc/postfix/main.cf,添加如下内容:
&virtual_mailbox_base&=&/var/mailbox&virtual_mailbox_maps&=&mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf&virtual_mailbox_domains&=&mysql:/etc/postfix/mysql_virtual_domains_maps.cf&virtual_alias_domains&=&virtual_alias_maps&=&mysql:/etc/postfix/mysql_virtual_alias_maps.cf&virtual_uid_maps&=&static:2525&virtual_gid_maps&=&static:2525&virtual_transport&=&virtual&&&&message_size_limit&=&&virtual_mailbox_limit&=&&&&&&&&
2、这里我们使用早已经写好的extmail.sql和init.sql建立数据库:这里因为版本需要我会将脚本贴在下一篇的博客文章中,大家有兴趣的话,可以下载安装一下。
3、授予用户extmail访问extmail数据库的权限
mysql&&GRANT&all&privileges&on&extmail.*&TO&extmail@localhost&IDENTIFIED&BY&'extmail';&mysql&&GRANT&all&privileges&on&extmail.*&TO&extmail@127.0.0.1&IDENTIFIED&BY&'extmail';&mysql&&flush&&
1、启用虚拟域以后,需要取消中心域,即注释掉myhostname, mydestination, mydomain, myorigin几个指令;当然,你也可以把mydestionation的值改为你自己需要的。
2、对于MySQL-5.1以后的版本,其中extmail.sql脚本的执行会有错,因为TYPE=MyISAM在之后的版本中已经不支持了切记,可先使用如下命令进行修改之后再执行文件。
# sed -i 's@TYPE=MyISAM@ENGINE=InnoDB@g' extmail.sql
# service postfix restart
九、安装Web服务器
安装服务器软件
# yum install httpd -y
这里我们只使用了最基本的功能,所以就不做任何配置了
十、配置dovecot
&mail_location&=&maildir:/var/mailbox/%d/%n/Maildir&&&&auth&default&{&&&&&mechanisms&=&plain&&&&&passdb&sql&{&&&&&&&&&args&=&/etc/dovecot-mysql.conf&&&&&}&&&&&userdb&sql&{&&&&&&&&&args&=&/etc/dovecot-mysql.conf&&&&&}&&&&&&&&&&driver&=&mysql&connect&=&host=localhost&dbname=extmail&user=extmail&password=extmail&default_pass_scheme&=&CRYPT&password_query&=&SELECT&username&AS&user,password&AS&password&FROM&mailbox&WHERE&username&=&'%u'&user_query&=&SELECT&maildir,&uidnumber&AS&uid,&gidnumber&AS&gid&FROM&mailbox&WHERE&username&=&'%u&
说明:如果mysql服务器是本地主机,即host=localhost时,如果mysql.sock文件不是默认的/var/lib/mysql/mysql.sock,可以使用host=&sock文件的路径&来指定新位置;
接下来启动dovecot服务:
十一、安装Extmail-1.2
PS:如果extmail的放置路径做了修改,那么配置文件webmail.cf中的/var/www路径必须修改为你所需要的位置。本文使用了默认的/var/www,所以,以下示例中并没有包含路径修改的相关内容。
2、修改主配置文件
&&SYS_USER_LANG&=&zh_CN&&&&&&&&&&&&&&&&&&&&&&&&SYS_MAILDIR_BASE&=&/var/mailbox&&&&&&&&&&&&&&SYS_AUTHLIB_SOCKET&=&/usr/local/courier-authlib/var/spool/authdaemon/socket&
3、修改apache的相关配置
PS:由于extmail要进行本地邮件的投递操作,故必须将运行apache服务器用户的身份修改为您的邮件投递代理的用户;本例中打开了apache服务器的suexec功能,故使用以下方法来实现虚拟主机运行身份的指定。此例中的MDA为postfix自带,因此将指定为postfix用户:# vim /etc/httpd/conf/httpd.conf
修改 cgi执行文件属主为apache运行身份用户:
如果您没有打开apache服务器的suexec功能,也可以使用以下方法解决:
&User&postfix&Group&postfix&&&VirtualHost&*:80&&ServerName&&DocumentRoot&/var/www/extsuite/extmail/html/&ScriptAlias&/extmail/cgi&/var/www/extsuite/extmail/cgi&Alias&/extmail&/var/www/extsuite/extmail/html&&/VirtualHost&&
4、依赖关系的解决
extmail将会用到perl的Unix::syslogd功能,您可以去http://search.cpan.org搜索下载原码包进行安装。&&&&&&
5、启动apache服务
十二、安装Extman-1.1
1、安装及基本配置
修改配置文件以符合本例的需要:
2、修改配置文件
SYS_MAILDIR_BASE&=&/var/mailbox&&&&&&&&&&&&&&&&&&&SYS_DEFAULT_UID&=&2525&&&&&&&&&&&&&&&&&&&&&&&&&&&SYS_DEFAULT_GID&=&2525&&&&&&&&&&&&&&&&&&&&&&&&&&&
这里我们使用另外的用户访问extman,所以在数据库中添加了一个用户
mysql&&grant&all&privileges&on&extmail.*&to&webman@localhost&identified&by&'webman';&mysql&&grant&all&privileges&on&extmail.*&to&webman@127.0.0.1&identified&by&'webman';&mysql&&flush&&
而后修改cgi目录的属主:
&&在apache的主配置文件中Extmail的虚拟主机部分,添加如下两行:&ScriptAlias&/extman/cgi&/var/www/extsuite/extman/cgi&Alias&/extman&/var/www/extsuite/extman/html&
创建其运行时所需的临时目录,并修改其相应的权限:
至此,Web邮箱就已经搭建完成了,这里有一个默认的管理密码:extmail*123*
现在我们将自己的域添加进去:至此就可以注册发送邮件了。
&本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)
22:59:18 12:24:07基于Web的矢量化地图服务器系统的设计与实现--《西安电子科技大学》2012年硕士论文
基于Web的矢量化地图服务器系统的设计与实现
【摘要】:基于Web的地理信息系统已经成为一种大众化的信息工具,它是地理信息系统与因特网技术的有机结合。现有的很多基于Web的地理信息系统使用的都是栅格数据,在放大级别和复杂查询上有一定的限制。针对以上问题,本文对矢量化的地图数据进行了研究,设计并实现了基于Web的矢量化地图服务器原型系统WebMap。
WebMap地图服务器系统将矢量地图数据转化成对应的栅格地图数据,通过浏览器呈现在用户面前。用户可以对其中的地理信息进行缩放、漫游、查询、标注、图层选择、投影设置等操作,并且它的放大是无级别限制的。
本文在实现WebMap的过程中,主要做了以下工作:
1.研究了主流的基于Web的地理信息系统的原理和通用结构,然后结合它们的优缺点,设计了WebMap的整体框架;
2.对关系型数据库PostgreSQL的空间数据的存储和索引能力进行了分析,解决了WebMap中矢量地图数据的存储和索引的问题,并实现了各数据库服务器之间的集群同步;
3.研究了Web服务器Nginx的反向代理技术,通过该技术对地图应用服务器的集群进行配置,实现了应用服务器的负载均衡;
4.本文没有采用传统应用服务器的请求处理方法,而是采用I/O完成端口模型来实现应用服务器对用户请求的处理;
5.应用服务器的集群可能会引发一个问题,即相同的请求在二次发送时被发送到不同的应用服务器,从而导致了重复性的绘制工作。针对以上问题,提出了二级缓存服务器集群的解决方案。并深入地研究了一致性哈希算法,应用此算法实现了缓存服务器的负载均衡,加快了用户访问速度。
原型系统的测试结果表明,WebMap系统能够达到预期的要求,并且二级缓存服务器能够明显提高用户请求的响应速度和并发性能。
【关键词】:
【学位授予单位】:西安电子科技大学【学位级别】:硕士【学位授予年份】:2012【分类号】:TP393.05【目录】:
摘要3-4Abstract4-8第一章 绪论8-18 1.1 研究背景8-12
1.1.1 基于 Web 的地理信息系统的概念及其特点8-9
1.1.2 基于 Web 的地理信息系统的分类9-11
1.1.3 基于 Web 的地理信息系统的通用结构11-12 1.2 发展现状12-15
1.2.1 基于 Web 的地理信息系统的三个发展阶段12-13
1.2.2 国外的研究现状13-14
1.2.3 国内的研究现状14-15 1.3 本论文的主要工作及章节安排15-18第二章 WebMap 整体设计方案18-28 2.1 Web GIS 的技术框架18-22 2.2 总体设计目标22-23
2.2.1 WebMap 设计目标22-23
2.2.2 WebMap 的实现框架23 2.3 整体设计方案23-27
2.3.1 客户端的设计24-25
2.3.2 Web 服务器25
2.3.3 多线程处理模块25-26
2.3.4 地图渲染及处理模块26-27
2.3.5 地图数据库27 2.4 本章小结27-28第三章 矢量地图数据的存储28-42 3.1 PostgreSQL 数据库28-35
3.1.1 地图数据库的必要性28-29
3.1.2 MySQL 和 PostgreSQL 介绍及其性能对比29-32
3.1.3 PostgreSQL 的线程安全性32
3.1.4 PostgreSQL 的数据索引32-35 3.2 地图数据库服务器模块的实现方法35-40
3.2.1 空间数据 Shapefile 的存储35-36
3.2.2 Slony-I 集群同步实现36-38
3.2.3 数据访问规范38-39
3.2.4 数据库服务器具体问题解决39-40 3.3 本章小结40-42第四章 地图应用服务器集群的实现42-60 4.1 Web 服务器的选择42-45
4.1.1 现有的 web 服务器42-44
4.1.2 Nginx 与 Apache、Lighttpd 的性能对比44
4.1.3 Nginx 性能介绍44-45 4.2 负载均衡的实现45-50
4.2.1 负载均衡的概念45-46
4.2.2 Nginx 的负载均衡原理46-48
4.2.3 应用服务器集群的实现48-49
4.2.4 Web 服务器与客户端通信接口的约定49-50 4.3 地图应用服务器的设计50-53
4.3.1 应用服务器对线程池的需求50
4.3.2 I/O 完成端口模型的高效性50-51
4.3.3 IOCP 工作模型51-53 4.4 应用服务器与 Web 服务器通信的实现53-59
4.4.1 应用服务器中 FastCGI 配置53-54
4.4.2 FastCGI 接口54
4.4.3 线程安全54-55
4.4.4 数据通信格式55-56
4.4.5 应用服务器一级缓存56
4.4.6 I/O 请求处理的实现56-59 4.5 本章小结59-60第五章 缓存服务器集群的设计与实现60-80 5.1 二级缓存的必要性和可行性分析60 5.2 带有二级缓存 WebMap 的设计60-64 5.3 一致性哈希算法64-69
5.3.1 通用哈希算法的缺陷64
5.3.2 一致性哈希算法原理64-68
5.3.3 虚拟节点68-69 5.4 二级缓存具体实现69-74
5.4.1 缓存服务器端69-72
5.4.2 集群实现72-74 5.5 系统实现结果74-75 5.6 系统性能的分析75-78
5.6.1 用户界面响应速度75-76
5.6.2 大量连续请求处理速度76-77
5.6.3 多用户并发请求速度77-78 5.7 本章小结78-80第六章 总结与展望80-82致谢82-84参考文献84-86
欢迎:、、)
支持CAJ、PDF文件格式
【参考文献】
中国期刊全文数据库
邹逸江;[J];测绘学报;1999年03期
王冬,陈春,何海舰;[J];测绘与空间地理信息;2005年02期
林丽丽;;[J];大众科技;2010年07期
陈红丽,袁可风,吕善国;[J];华东交通大学学报;2004年01期
吴信才,郭玲玲,白玉琪;[J];计算机工程与应用;2001年05期
徐波;;[J];林业科技情报;2009年03期
刘砚秋,张基温;[J];计算机工程与设计;2005年02期
张鑫;;[J];陕西煤炭;2009年02期
王春林;黄墨燃;;[J];中国西部科技;2009年25期
魏祖宽;胡娟;金在弘;;[J];计算机系统应用;2009年09期
中国硕士学位论文全文数据库
李安虎;[D];中国海洋大学;2004年
张海俊;[D];浙江大学;2008年
【共引文献】
中国期刊全文数据库
郭宽伟;岑国平;马文轩;李强;;[J];四川建筑科学研究;2012年01期
任平;[J];安徽教育学院学报;2002年03期
张卫东,谢庆胜;[J];安徽地质;2001年04期
殷年;[J];安徽地质;2002年03期
陈斌;李迪;周志逵;;[J];安徽地质;2004年04期
何义权;;[J];安徽地质;2009年01期
任升莲;蔡昊;杨伟沃;肖延松;;[J];安徽地质;2009年04期
殷年;;[J];安徽建筑;2006年05期
林华;邓建;;[J];安徽建筑;2009年04期
刘彭和;韩双旺;张明珠;;[J];安徽农学通报;2007年02期
中国重要会议论文全文数据库
李旸;汪泉;刘建中;严小燕;;[A];现代农业理论与实践——安徽现代农业博士科技论坛论文集[C];2007年
潘元庆;谷志云;李保贤;陈伟强;李天阁;;[A];河南省地质调查与研究通报2007年卷(上册)[C];2007年
王兵;马惠;葛利玲;王争艳;;[A];河南地球科学通报2008年卷(下册)[C];2008年
张雷;李刚;孟庆江;刘少杰;张欣卉;;[A];河南地球科学通报2008年卷(下册)[C];2008年
张宗可;许矿华;陈鹏;;[A];河南地球科学通报2010年卷(下册)[C];2010年
曾涛;何玉良;钟江文;;[A];河南地球科学通报2011年卷(下册)[C];2011年
袁玏;;[A];全国测绘科技信息网中南分网第二十五次学术交流会论文集[C];2011年
范本贤;张庆合;剧远景;韩坤英;姜兰;王振洋;庞健峰;王丽亚;丁伟翠;;[A];全国地质制图与GIS学术论坛论文集[C];2011年
韩坤英;庞健峰;逯永光;丁孝忠;范本贤;剧远景;王震洋;;[A];全国地质制图与GIS学术论坛论文集[C];2011年
马瑜宏;王纪存;谢颂诗;;[A];全国地质制图与GIS学术论坛论文集[C];2011年
中国博士学位论文全文数据库
吴启涛;[D];中国海洋大学;2010年
刘文全;[D];中国海洋大学;2010年
桑永胜;[D];电子科技大学;2010年
苏斌;[D];解放军信息工程大学;2010年
贾奋励;[D];解放军信息工程大学;2010年
张开广;[D];解放军信息工程大学;2010年
车森;[D];解放军信息工程大学;2010年
王晓理;[D];解放军信息工程大学;2010年
杨晓坤;[D];昆明理工大学;2010年
夏兰芳;[D];武汉大学;2009年
中国硕士学位论文全文数据库
鞠登磊;[D];华中农业大学;2010年
曹磊;[D];华中农业大学;2010年
宋东峰;[D];河南理工大学;2010年
王变利;[D];河南理工大学;2010年
王晨亮;[D];山东科技大学;2010年
解卫卫;[D];山东科技大学;2010年
杨新忠;[D];山东科技大学;2010年
陈珂;[D];山东科技大学;2010年
张京钊;[D];山东科技大学;2010年
王军;[D];哈尔滨师范大学;2010年
【二级参考文献】
中国期刊全文数据库
夏惊涛;卢娜;穆道生;;[J];兵工自动化;2006年02期
李娟;[J];北京测绘;2005年01期
商新娜;;[J];北京联合大学学报(自然科学版);2007年03期
何雄;[J];测绘通报;2002年04期
郭秋英;[J];测绘通报;1998年05期
张犁,林晖,李斌;[J];测绘学报;1998年01期
肖心智,苏奋振,杜云艳,周军其;[J];测绘与空间地理信息;2005年04期
卢秋波;;[J];电信网技术;2007年01期
,方芳;[J];大众标准化;2004年10期
曾凡林;陶洪;;[J];福建电脑;2006年07期
【相似文献】
中国期刊全文数据库
李岩影,过静珺;[J];测绘通报;2000年08期
李柏青;[J];机械设计与制造工程;2000年02期
陈稚,宋李彬;[J];电子工程师;2000年12期
付丽琴,陈树越;[J];测试技术学报;2002年04期
李蓉,张树生;[J];西北工业大学学报;2003年05期
秦玉华,苏宝茹;[J];通信与信息技术;2005年01期
罗峰,余艳梅,刘飞,滕奇志;[J];中国测试技术;2005年03期
许婧婧;;[J];测绘工程;2006年01期
栾瑾彦;钱凤章;高辉;;[J];油气田地面工程;2006年11期
孙茜;;[J];工程与建设;2007年05期
中国重要会议论文全文数据库
韦卫;康岸彬;汪位龙;;[A];中国公路学会计算机应用分会2004年年会学术论文集[C];2004年
俞成勇;郭民;周继烈;倪益华;;[A];特种加工技术——2001年中国机械工程学会年会暨第九届全国特种加工学术年会论文集[C];2001年
李楠;;[A];全国测绘科技信息网中南分网第二十四次学术信息交流会论文集[C];2010年
李蓉;周茂丽;蔡建平;;[A];中国计算机图形学进展2008--第七届中国计算机图形学大会论文集[C];2008年
赵勇;;[A];第三届长三角科技论坛(测绘分论坛)暨'2006江苏省测绘学术年会论文集[C];2006年
陈轮;温秀萍;;[A];福建省土地学会2009年年会论文集[C];2009年
刘新贵;赵国成;肖强;;[A];中国地理信息系统协会第四次会员代表大会暨第十一届年会论文集[C];2007年
王明磊;李新友;王德英;;[A];中国图象图形科学技术新进展——第九届全国图象图形科技大会论文集[C];1998年
江崇礼;阿荣;董明;;[A];第二十届中国控制会议论文集(上)[C];2001年
俞成勇;郭民;周继烈;倪益华;;[A];2001年中国机械工程学会年会暨第九届全国特种加工学术年会论文集[C];2001年
中国重要报纸全文数据库
李瑞荣;[N];中国矿业报;2001年
夏朋;[N];中国矿业报;2007年
;[N];电脑报;2002年
吴天雯;[N];鸡西日报;2008年
郭俊妙 韩金好;[N];中国测绘报;2010年
;[N];电脑报;2001年
;[N];人民邮电;2009年
丁全利;[N];中国国土资源报;2010年
匡琳;[N];电脑报;2004年
;[N];中国计算机报;2001年
中国博士学位论文全文数据库
李蓉;[D];西北工业大学;2003年
郑华利;[D];南京理工大学;2004年
辛动军;[D];南京理工大学;2007年
杨云;[D];解放军信息工程大学;2008年
陈宇拓;[D];中南大学;2008年
陈泽军;[D];燕山大学;2009年
张星明;[D];中国科学院研究生院(计算技术研究所);1999年
徐啟蕾;[D];中国海洋大学;2013年
徐颂华;[D];浙江大学;2007年
李勇;[D];北京林业大学;2007年
中国硕士学位论文全文数据库
张旗;[D];西安电子科技大学;2002年
朱晓荣;[D];河海大学;2001年
杨奉先;[D];大连理工大学;2005年
蒋秋生;[D];广东工业大学;2005年
曲明;[D];中国地质大学(北京);2006年
李四明;[D];中国农业大学;2000年
邹修明;[D];南京理工大学;2002年
张俊杰;[D];成都理工大学;2010年
刘大成;[D];电子科技大学;2005年
张明君;[D];西安电子科技大学;2004年
&快捷付款方式
&订购知网充值卡
400-819-9993
《中国学术期刊(光盘版)》电子杂志社有限公司
同方知网数字出版技术股份有限公司
地址:北京清华大学 84-48信箱 大众知识服务
出版物经营许可证 新出发京批字第直0595号
订购热线:400-819-82499
服务热线:010--
在线咨询:
传真:010-
京公网安备75号

我要回帖

更多关于 linux c实现web服务器 的文章

 

随机推荐