Il Sistema Seduta per esterni TRE: Design for All, innovazione, sostenibilità ambientale, sociale e di processo. Un prodotto innovativo per una esigenza sempre più diffusa, quella di realizzare prodotti aperti ad ogni tipo di utenza, rispettosi dell'ambiente ed esteticamente eccellenti.
Il Sistema Seduta per esterni TRE: Design for All, innovazione, sostenibilità ambientale, sociale e di processo. Un prodotto innovativo per una esigenza sempre più diffusa, quella di realizzare prodotti aperti ad ogni tipo di utenza, rispettosi dell'ambiente ed esteticamente eccellenti.
Presentación elaborada por Gianfranco Polastri para el II Congreso Internacional de Analítica Digital ADAP 2012 llevado a cabo el 21 de noviembre en las instalaciones de la Universidad del Pacífico.
1. What web caching means and includes
2. Why use caching
3. File caching
4. Share caching
5. Local caching
6. Memcached and its usage
7. TTServer and KTServer
8. Redis VS SSDB
9. CDN cachings
10. Twemproxy
11. Programming skills and tips
Building a server to manage high concurrent connections is non-trival task. For those developers that use ActionScript 3 to build games on the client side it means having a totally different skillset. Being able to use ActionScript 3 on the server to build MMO’s or port client code to the server allows developers to leverage their skills on the server.
By walking through a live game example with more then 15,000 concurrent connections running on a medium Amazon EC2 server the presentation will:
1. Introduce Linux server configuration for high concurrent connected usage.
2. Introduce Socket class based on libev library for high concurrent connection.
3. Introduce leveraging Tamarin project for ActionScript 3 on the server.
3. assembler --with-mysqld-user=mysql --with-federated-storage-engine --with-client-ldflags=-all-
static --with-mysqld-ldflags=-all-static
#####编译时如报错参看附录 1。
make &&make install
cp support-files/my-medium.cnf /etc/my.cnf
#####安装 db
cd /usr/local/mysql
chown -R mysql .
chgrp -R mysql .
bin/mysql_install_db --user=mysql
chown -R root .
chown -R mysql var
bin/mysqld_safe --user=mysql &
#####设置启动项“cd -”是返回上一次所在的目录的意思
cd -
cp support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod 700 /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
chkconfig --level 345 mysqld on
chkconfig --list mysqld
echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf&&ldconfig -v
export PATH=$PATH:/usr/local/mysql/bin
ln -s /usr/local/mysql/bin/* /usr/bin/
测试 mysql 是否正常
/usr/local/mysql/bin/mysqladmin ping
/usr/local/mysql/bin/mysqladmin version
添加 vpopmail/igenus 的数据库,以及用户、密码、权限;
/usr/local/mysql/bin/mysql -uroot -p
mysql>
show databases;
CREATE DATABASE vpopmail;
GRANT select,insert,update,delete,create,drop ON vpopmail.* TO vpopmail@localhost
IDENTIFIED BY 'ryan098';
use vpopmail;
CREATE TABLE `address` (
`id` int(11) unsigned NOT NULL auto_increment,
`pw_id` int(5) NOT NULL default '0',
`name` varchar(64) NOT NULL default '',
`email` varchar(128) NOT NULL default '',
UNIQUE KEY `id` (`id`),
KEY `pw_id` (`pw_id`)
) TYPE=MyISAM PACK_KEYS=1 ;
CREATE TABLE `admin` (
4. `id` int(10) unsigned NOT NULL auto_increment,
`site_id` int(10) unsigned NOT NULL default '0',
`domain` varchar(128) NOT NULL default '',
`quota` smallint(5) unsigned NOT NULL default '0',
`total` smallint(5) unsigned NOT NULL default '0',
`createtime` timestamp(14) NOT NULL,
`login` char(1) NOT NULL default '',
`cur_total` smallint(5) NOT NULL default '0',
`cur_quota` smallint(5) NOT NULL default '0',
`gid` varchar(11) NOT NULL default '',
`expiration_time` timestamp(14) NOT NULL,
`flag` int(10) unsigned NOT NULL default '0',
`maxmsg` int(10) unsigned NOT NULL default '0',
PRIMARY KEY (`id`),
UNIQUE KEY `domain` (`domain`)
) TYPE=MyISAM PACK_KEYS=1 ;
CREATE TABLE `card` (
`id` int(5) unsigned NOT NULL auto_increment,
`pw_id` int(5) unsigned NOT NULL default '0',
`LinkMan` varchar(64) NOT NULL default '',
`CompanyName` varchar(100) NOT NULL default '',
`Address` varchar(255) NOT NULL default '',
`Position` varchar(32) NOT NULL default '',
`PhoneNumber` varchar(16) NOT NULL default '',
`Mobile` varchar(12) NOT NULL default '',
`Email` varchar(128) NOT NULL default '',
`Partaker` varchar(32) NOT NULL default '',
`Memo` varchar(255) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM ;
CREATE TABLE `lastauth` (
`user` char(32) NOT NULL default '',
`domain` char(64) NOT NULL default '',
`remote_ip` char(18) NOT NULL default '',
`timestamp` bigint(20) NOT NULL default '0',
PRIMARY KEY (`user`,`domain`)
) TYPE=MyISAM;
CREATE TABLE `logs` (
`pw_id` int(5) default '0',
`ip` varchar(15) NOT NULL default '',
`action` varchar(15) NOT NULL default '',
5. `time` datetime default NULL,
`content` varchar(64) NOT NULL default '',
`email` varchar(128) NOT NULL default ''
) TYPE=MyISAM;
CREATE TABLE `message` (
`id` int(5) unsigned NOT NULL auto_increment,
`title` varchar(255) NOT NULL default '',
`body` text NOT NULL,
`createtime` datetime NOT NULL default '0000-00-00 00:00:00',
`updatetime` datetime NOT NULL default '0000-00-00 00:00:00',
`pw_domain` varchar(64) NOT NULL default '',
UNIQUE KEY `id` (`id`)
) TYPE=MyISAM ;
CREATE TABLE `personal` (
`id` int(11) unsigned NOT NULL auto_increment,
`pw_id` int(5) NOT NULL default '0',
`truename` varchar(10) NOT NULL default '',
`fax` varchar(20) NOT NULL default '',
`telephone` varchar(15) NOT NULL default '',
`sex` int(1) NOT NULL default '0',
`year` int(4) NOT NULL default '0',
`MONTH` int(2) NOT NULL default '0',
`DAY` int(2) NOT NULL default '0',
`education` varchar(4) NOT NULL default '',
`marital` int(1) NOT NULL default '0',
`occupation` varchar(15) NOT NULL default '',
`companyname` varchar(30) NOT NULL default '',
`province` varchar(6) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM PACK_KEYS=1 ;
CREATE TABLE `scheduler` (
`id` int(11) unsigned NOT NULL auto_increment,
`begin_time` int(11) unsigned default NULL,
`end_time` int(11) unsigned default NULL,
`title` varchar(255) NOT NULL default '',
`body` varchar(255) NOT NULL default '',
`pw_id` int(11) unsigned NOT NULL default '0',
PRIMARY KEY (`id`)
) TYPE=MyISAM ;
CREATE TABLE `stow` (
6. `id` int(5) unsigned NOT NULL auto_increment,
`pw_id` int(5) unsigned NOT NULL default '0',
`Name` varchar(128) NOT NULL default '',
`http` varchar(255) NOT NULL default 'http://',
`memo` varchar(255) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM ;
CREATE TABLE `vpopmail` (
`pw_id` int(5) unsigned NOT NULL auto_increment,
`pw_name` varchar(32) NOT NULL default '',
`pw_domain` varchar(64) NOT NULL default '',
`pw_passwd` varchar(40) NOT NULL default '',
`pw_uid` int(11) default NULL,
`pw_gid` int(11) default NULL,
`pw_gecos` varchar(48) default NULL,
`pw_dir` varchar(255) default NULL,
`pw_shell` varchar(20) default NULL,
`pw_clear_passwd` varchar(16) default NULL,
`createtime` timestamp(14) NOT NULL,
PRIMARY KEY (`pw_id`),
KEY `pw_name` (`pw_name`,`pw_domain`)
) TYPE=MyISAM PACK_KEYS=1 ;
FLUSH PRIVILEGES;
show databases;
QUIT
###################
第二步,安装 apache
cd ~
tar -zxvf httpd*
cd httpd*
./configure --prefix=/usr/local/apache2 --enable-so
make &&make install
mkdir -p /www/cgi-bin/
mkdir /www/html/
vi /usr/local/apache2/conf/httpd.conf
#####设置 httpd.conf 文件,添加或修改如下的内容(尤其注意 ScriptAlias 和 DirectoryIndex
需要注意插入的位置) :
#####!!!!!!!!!!!!!!!!
ServerName www.gusitasi.com:80
DocumentRoot "/www/html/"
AddType application/x-httpd-php .php
AddType applicatoin/x-httpd-php-source .phps
User vpopmail
7. Group vchkpw
<Directory /www>
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
AddDefaultCharset GB2312
ScriptAlias /cgi-bin/ "/www/cgi-bin/"
DirectoryIndex index.html index.php
#####设置 apache 自启动:
cp /usr/local/apache2/bin/apachectl /etc/init.d/httpd
vi /etc/init.d/httpd,在第一行加上选文(注意保留#号 ) :
#!/bin/sh
# chkconfig: 35 70 30
# description: Apache is a World Wide Web server.
chmod 700 /etc/init.d/httpd
chkconfig --level 345 httpd on
chkconfig --list httpd
####################
####第三步,安装 php
cd ~
tar -zxvf php*
cd php*
./configure --prefix=/usr/local/php5 --with-apxs2=/usr/local/apache2/bin/apxs --with-
mysql=/usr/local/mysql --with-config-file-path=/usr/local/php5/etc
##### 编 译 过 程 中 出 现 “configure: error: xml2-config not found. Please check your libxml2
installat”错误,可以参照上文安装 rpm 包
make&&make install
cp php.ini-dist /usr/local/php5/etc/php.ini
###LAMP 测试
################
echo "<? phpinfo(); ?>">/www/html/test.php
service httpd start
curl -I 127.0.0.1
####最后一步,用 curl 或图形化浏览器来访问 test.php
curl 127.0.0.1/test.php
####如果 shell/浏览器输入 N 多内容,代表 php 已经成功的处理了 test.php 那个文件。
####删除 amp 文件
cd ~
rm -rf httpd* mysql* php*
8. 第四步,安装 bind9(可选,如有 DNS 服务器可忽略此步骤)
tar xzfv bind*
cd bind*
mkdir /etc/bind9
./configure --sysconfdir=/etc/bind9 --disable-openssl-version-check
make &&make install
############开始配置 bind9
cd /etc/bind9
首先挖掘根 dns 创建 ca 文件(详情见附录 3) ,也可以直接运行下面的命令:
cat>> named.ca <<EOF
A.ROOT-SERVERS.NET. 3600000 IN A 198.41.0.4
A.ROOT-SERVERS.NET. 3600000 IN AAAA 2001:503:ba3e::2:30
B.ROOT-SERVERS.NET. 3600000 IN A 192.228.79.201
C.ROOT-SERVERS.NET. 3600000 IN A 192.33.4.12
D.ROOT-SERVERS.NET. 3600000 IN A 128.8.10.90
E.ROOT-SERVERS.NET. 3600000 IN A 192.203.230.10
F.ROOT-SERVERS.NET. 3600000 IN A 192.5.5.241
F.ROOT-SERVERS.NET. 3600000 IN AAAA 2001:500:2f::f
G.ROOT-SERVERS.NET. 3600000 IN A 192.112.36.4
H.ROOT-SERVERS.NET. 3600000 IN A 128.63.2.53
H.ROOT-SERVERS.NET. 3600000 IN AAAA 2001:500:1::803f:235
I.ROOT-SERVERS.NET. 3600000 IN A 192.36.148.17
J.ROOT-SERVERS.NET. 3600000 IN A 192.58.128.30
J.ROOT-SERVERS.NET. 3600000 IN AAAA 2001:503:c27::2:30
EOF
#####rndc 是 bind 软件引进的远程控制通道,代替 unix 信号来控制 named 进程。 接下来
要设置 rndc 文件,并根据 rndc 文件来书写 bind9 自己的配置文件。
rndc-confgen > rndc.conf
#####创建 bind9 的主配置文件 named.conf,指定配置文件位置和根文件位置
cat >> named.conf <<EOF
options{
directory "/etc/bind9";
};
zone "."{
type hint;
file "named.ca";
};
EOF
然后将 rndc.conf 中被 #号注释掉的部分(不含首行“# Use with the……”和尾行 “# End of
named.conf”)去掉#号注释追加到 named.conf
的尾部。下面命令中 tail、head 的数值可能会根据你的 rndc.conf 的内容而变换
9. cat rndc.conf |tail -10|head -9|cut -c 2->>named.conf
#####现在 BIND9 的基础设置就完成了下面就是添加启动项:
根据下文增加启动脚本文件
[root@mail bind9]# cat /etc/init.d/named
#!/bin/bash
# named a network name service.
# chkconfig: 345 35 75
# description: a name server
if [ `id -u` -ne 0 ]
then
echo "ERROR:For bind to port 53,must run as root."
exit 1
fi
case "$1" in
start)
if [ -x /usr/local/sbin/named ]; then
/usr/local/sbin/named -c /etc/bind9/named.conf && echo . && echo 'BIND9 server started'
fi
/usr/local/sbin/rndc status && echo . && echo 'rndc status'
;;
stop)
kill `cat /var/run/named/named.pid` && echo . && echo 'BIND9 server stopped'
;;
restart)
echo .
echo "Restart BIND9 server"
$0 stop
sleep 7
$0 start
;;
reload)
test -e /var/run/named/named.pid &&/usr/local/sbin/rndc reload||echo 'Bind is no working'
;;
status)
test -e /var/run/named/named.pid &&/usr/local/sbin/rndc status||echo 'Bind is no working'
;;
*)
echo "$0 start | stop | restart |reload |status"
;;
esac
#####然后设置下脚本权限
chmod 700 /etc/rc.d/init.d/named
chkconfig --add named
chkconfig --level 345 named on
10. ####现在即可通过 service named start | stop | restart |reload |status 进行控制。
#####设置区域
#####现在 bind 的设置已经是一个合格的空壳, 下面就要往壳里写入要解析的区域的内容了 。
#####在 named.conf 里添加区域:
cat >>/etc/bind9/named.conf<< EOF
zone "gusitasi.com"{
type master;
file "gusitasi.com";
};
EOF
#####书写区域配置文件
cat >>/etc/bind9/gusitasi.com<<EOF
@ 1D IN SOA gusitasi.com. root (
2008030201
1H
15M
1W
1D )
IN NS ns
ns IN A 192.168.118.143
mx1 IN A 192.168.118.143
smtp IN A 192.168.118.143
pop3 IN A 192.168.118.143
gusitasi.com. IN MX 10 mx1.gusitasi.com.
www IN A 192.168.118.143
news IN CNAME www
EOF
#####启动 bind,同时设置本机的 resolv.conf
service named start
cat /dev/null>/etc/resolv.conf
cat >>/etc/resolv.conf<< EOF
nameserver 127.0.0.1
search gusitasi.com
EOF
测试效果:
[root@mail bind9]# host -t mx gusitasi.com
gusitasi.com mail is handled by 10 mx1.gusitasi.com.
[root@mail bind9]# host www.gusitasi.com
www.gusitasi.com has address 192.168.118.143
[root@mail bind9]# host smtp
smtp.gusitasi.com has address 192.168.118.143
[root@mail bind9]# host mx1
mx1.gusitasi.com has address 192.168.118.143
11. 清理:rm -rf bind9*
########################
前面是安装 LAMP 和 bind9,现在是正式安装 qmail 了。请注意,接下来安装的软件和补丁
的版本要求比较严格。
首先检查并卸掉自动安装上的 sendmail 和 mysql。
rpm -qa sendmail mysql
service sendmail stop
rpm -e --nodeps sendmail
rm -rf /usr/sbin/sendmail
rpm -qa sendmail mysql
rpm -e --nodeps mysql
#####解压缩 netqmail-1.05.tar.gz,但是不安装,只是做基础对照;
cd ~
tar xzfv netqmail-1.05.tar.gz
cd netqmail-1.05
./collate.sh
#####打补丁并安装 daemontools 。daemontools 是一个收集管理 UNIX 进程的工具.用它来监
听 qmail-send,qmail-smtpd,qmail-pop3d
cd ~
tar xzfv daemontools-0.76.tar.gz
cd admin/daemontools-0.76
patch -p1 < ../../daemontools-0.76.errno.patch
./package/install
ps ax | grep svscan
####################################################
# 验证 daemontools 已经正常运行:
[root@ora1 daemontools-0.76]# ps ax | grep svscan
28555 ? Ss 0:00 /bin/sh /command/svscanboot
28557 ? S 0:00 svscan /service
####################################################
#####补丁并安装 ucspi-tcp
说明:
ucspi-tcp 软件包由一组工具组成。它们用来简单的建立客户机-服务器 tcp 后台程序。
TcpServer 是一个比 inetd 安全性更好的选择。它内建有基于规则的连接控制,能完善地在达
到预定义的最大系统负载时将连接推迟,这点比 inetd 好。Tcpserver 也被推荐与 qmail 一同
使用,因为它们是同一个作者编的程序。 参考:http://cr.yp.to/ucspi-tcp.html
cd ~
tar zxvf ucspi-tcp-0.88.tar.gz
cd ucspi-tcp-0.88
patch -p1 < ../ucspi-tcp-0.88.errno.patch
make
make setup check
12. #####准备安装 qmail
cd ~
tar xzfv toaster-scripts-0.7.tar.gz
cd netqmail-1.05/netqmail-1.05/
vi qmail-smtpd.c +50
-----------------------------------------
#####搜索函数 straynewline 中的 451 改为 553 第 50 行
#####当你的服务器收到无效格式的邮件时,会发送:"I am not going to accept that message at
the moment,you can try again later",
对方服务器收到后,几秒钟后又会发送同样的邮件给你,造成多次的重复。
#####改为 553 后,你的服务器将直接发送:"I am not going to accept that message,don't try
sending it again.",告诉对方的服务器不
要再发这封无效的信件。
#####RedHat/Fedora 用户可能需要为 TLS 补丁链接一个 include 文件
#####输入如下命令:
ln -s /usr/kerberos/include/com_err.h /usr/include/
-----------------------------------------
#####qmail 编译安装
make &&make setup check
#####安装过程中可能会出现警告:“main”的返回类型不是“int”,这些警告来自 GCC,一般
不用理会。
#####注:qmail 的补丁在 vpopmail 安装之后再打。
#####用你自己的主机名代替下面的 mx1.gusitasi.com
./config-fast mx1.gusitasi.com
#设置管理员的邮箱地址。
#发往 root/postmaster/mailer-daemon 地址的邮件将会由定义的管理员邮箱接收。
#将如下的“admin@gusitasi.com"替换成你的管理员邮箱。
cd /var/qmail/alias
echo "xiaojiahuo@gusitasi.com" > .qmail-postmaster
echo "xiaojiahuo@gusitasi.com" > .qmail-mailer-daemon
echo "xiaojiahuo@gusitasi.com" > .qmail-root
chmod 644 /var/qmail/alias/.qmail*
#####开启 SPF 设置
echo ./Maildir/ >/var/qmail/control/defaultdelivery
echo 3 > /var/qmail/control/spfbehavior