知行合一
全部博文(31)
分类: 系统运维
2009-08-06 22:46:33
在上一章中,我们用MySQL数据库实现了认证。现在,我们将需要一个工具来帮助用户和管理员们。显然,这个工具必须要比openserctl容易操作。手动对成百上千的用户进行管理是很困难的,所以用户预置工具在其过程中就变得相当重要。在这一章中,将看到SerMyAdmin工具是如何来被创建来帮助构建用户和管理员入口的。
本章末,你将能够:
l
知道为什么需要一个用户入口进行管理
l
安装SerMyAdmin和它的依赖
l
配置诸如管理者和用户访问的资源
l
添加和删除域
l
用你公司的颜色和logo来定制入口
这段材料本来是写给SerWeb。SerWeb原本是为SER项目开发的。不幸的是,SerWeb和最新版本的OpenSER不兼容。我们没有选择SerWeb的另外一个重要的原因是它被认为有漏洞。OpenSER的一些网页接口缺少很多选项。其中我们曾发现的一种工具是OpenSER
administrator。这个工具正在使用”Ruby on Rails”开发。似乎这是一个非常好的OpenSER服务器管理工具,但是它却不允许与SerWeb相同的方式来提供用户接口,并且其缺少多域(multi-domain)支持。OpenSER
administrator能够在找到。
既然构建OpenSER入口的工具找不到,那么我们决定使用JAVA建造我们自己的工具,命名为SerMyAdmin。我们现在已经准备好使用这样的工具来构建本书。它是按照GPLv2授权的在Grails上开发(Groovy
on rails)。可以在上下载。
你这儿看到的是一套独立的工具。在我们的轨迹路线中,我们打算将SerMyAdmin整合进行Liferay入口。使用类似Liferay之类的内容管理系统将使你构建入口的工作更加容易。
SerMyAdmin项目可以在sermyadmin.sourceforge.net上找到。它的想法是改进OpenSER数据库的管理。SerMyAdmin在GPLv2下许可。
SerMyAdmin使用Grails框架,所以它需要一个应用服务器。你可以自行进行选择,如IBM
WebSphere,JBoss,Jetty,Tomcat等等。在这本书中,我们使用Apache
Tomcat,因为它是免费的容易安装。因为我们要使用到一些Java1.5的特性,我们需要Sun的Java
JDK,而不是免费的可供选择的GCJ。
步骤1:为SerMyAdmin创建管理者:
mysql –u root
use openser
INSERT INTO
'subscriber' ( 'id' , 'username' , 'domain' , 'password'
, 'first_name' ,
'last_name' , 'email_address' , 'datetime_created' ,
'ha1' , 'ha1b' ,
'timezone' , 'rpid' , 'version' , 'password_hash' ,
'auth_username' ,
'class' , 'domain_id' , 'role_id' )
VALUES (
NULL , 'admin',
'openser.org', 'senha', 'Admin', 'Admin', 'admin@
openser.org',
'0000-00-00 00:00:00', '1', '1', '1', '1', '1', NULL ,
'admin@openser.org',
NULL , '1', '3'
);
步骤2:下一步我们要做的是更新我们的源列表以使用contrib仓库和non-free包。我们的/etc/apt/sources.list文件应该看起来是下面这个样子:
# /etc/apt/souces.list
deb
etch main contrib non-free
deb-src
etch main contrib non-free
deb http://security.debian.org/
etch/updates main contrib non-free
deb-src
http://security.debian.org/ etch/updates main contrib non-free
/etc/apt/sources.list
注意到我们只是在我们的仓库定义后面添加了关键字contrib和non-free。
步骤3:使用下面的命令来更新包列表。
openser:~# apt-get update
步骤4:运行下面的命令安装Sun’s Java1.5
openser:~# apt-get install sun-java5-jdk
步骤5:确认你正在使用Sun’s Java。请运行下面的命令以告诉Debian你想要使用Sun’s
Java作为你的默认的Java应用。
openser:~# update-java-alternatives -s
java-
步骤6:到目前为止,如果每一步都顺利完成,那么你应该运行下面的命令以得到一个类似下面的输出。
openser:~#
java -version
java
version "
Java(TM)
2 Runtime Environment, Standard Edition (build
Java HotSpot(TM) Client VM (build
步骤7:安装Tomcat。你可以在。
为了安装Tomcat,只需要运行下面的命令:
openser:/usr/local/etc/openser#
cd /usr/local
openser:/usr/local#
wget
openser:/usr/local# tar
zxvf apache-tomcat-
openser:/usr/local# ln -s apache-tomcat-
步骤8:为了在你的服务器初始化中启动Tomcat,请复制下面的脚本到/etc/init.d/tomcat6。
#! /bin/bash –e
#### BEGIN INIT INFO
# Provides: Apache’s
Tomcat 6.0
# Required-Start:
$local_fs $remote_fs $network
# Required-Stop:
$local_fs $remote_fs $network
# Default-Start: 2 3 4
5
# Default-Stop: S 0 1 6
# Short-Description:
Tomcat 6.0 Servlet engine
# Description: Apache’s
Tomcat Servlet Engine
### END INIT INFO
#
# Author: Guilherme
Loch Góes
#
set -e
PATH=/bin:/usr/bin:/sbin:/usr/sbin:
CATALINA_HOME=/usr/local/tomcat6
CATALINA_BIN=$CATALINA_HOME/bin
test -x $DAEMON || exit
0
.
/lib/lsb/init-functions
case "$1" in
start)
echo "Starting Tomcat 6" "Tomcat6"
$CATALINA_BIN/startup.sh
log_end_msg $?
;;
stop)
echo "Stopping Tomcat6" "Tomcat6"
$CATALINA_BIN/shutdown.sh
log_end_msg $?
;;
force-reload|restart)
$0 stop
$0 start
;;
*)
echo "Usage:
/etc/init.d/tomcat6 {start|stop|restart}"
exit 1
;;
esac
exit 0
告诉Debian在系统启动时运行你的脚本;我们使用下面的命令实现之:
openser:
chmod 755 /etc/init.d/tomcat6
openser:/etc/init.d# update-rc.d tomcat6 defaults 99
步骤10:为了确认每一步都运行正确,重启服务器,并且在你的浏览器中打开URL ;如果一切顺利的话,你会看到Tomcat的开始页面。
步骤11:为Tomcat安装MySQL驱动使得SerMyAdmin可以访问你的数据库。这个驱动可以在http://dev.mysql.com/downloads/connector/j/5.1.html上找到。你可以下载驱动然后解包,之后将connector复制到Tomcat的共享库文件夹下,如下所示:
openser:/usr/src#
tar zxf mysql-connector-java-
openser:/usr/src# cp mysql-connector-java-
步骤12:为SerMyAdmin声明数据源以使其链接到OpenSER的数据库上。你可以在/usr/local/tomcat6/conf/context.xml上做些修改以实现之:文件看起来是下面这个样子:
在上面的文件中,请按照你的环境修改高亮显示的参数。SerMyAdmin可以安装在其他的机器上,而不仅仅是拥有数据库的服务器上。当规模需要的时候可以这样做。在Debian上默认安装后的MySQL只接收本地请求,所以你应该修改文件/etc/mysql/my.cnf,让MySQL能够接收来自外部主机的请求。
步骤13:创建一个用户(可以参照文件context.xml)。这个用户需要访问该数据库的权限。请运行下面的命令:
openser:/var/lib/tomcat5.5/conf#
mysql -u root –p
Enter
password:
Welcome
to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 14
Server
version:
Type
'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
grant all privileges on openser.* to sermyadmin@'%' identified by 'secret';
Query OK, 0 rows affected (0.00 sec)
步骤14:我们已经接近完成。下一步工作就是部署SerMyAdmin
WAR文件了。请下载并复制文件serMyAdmin.war到Tomcat的
webapps文件夹下。重启以激活更改。
openser:/usr/src#
cp serMyAdmin-0.4.war /usr/local/tomcat6/webapps/serMyAdmin.war
openser:/usr/src# invoke-rc.d tomcat6 restart
不用担心数据库的修改;SerMyAdmin将自动的为你进行处理以适应其改变。
步骤15:配置Debian的MTA(Message
Transfer Agent)以允许SerMyAdmin发送一封确认邮件给新用户。运行下面的命令配置Exim4(Debian默认的MTA)。询问你公司的邮件管理员。
openser:/#
apt-get install exim4
openser:/# dpkg-reconfigure exim4-config
映入眼帘的是一个以对话框为基础的配置菜单;在这个菜单上,要着重注意两个选项:邮件配置的通用类型(General
type of mail configuration),这个选项应该被配成Internet Site,这样我们就可以直接使用SMTP来发送和接收邮件;转发邮件的域,这个选项应该被配成从SerMyAdmin发出的邮件你想要其表现的来自何处的域。
步骤16:定制文件
/usr/local/apache-tomcat-
xmlns:xsi=""
xsi:schemaLocation="
/spring-beans-2.0.xsd">
第一个要改变的参数是我们用来发送邮件的服务器。第二个则是那些邮件要显示的从何而来的参数。
再次重启Tomcat,此时我们已经准备好要开始了。当你将浏览器指向
address>:8080/serMyAdmin,你将看到登录页面,正如我们在本章开始时呈现的那样。
现在你能够使用SerMyAdmin来做很多工作了。在这一章中我们将向你展示如何创建和管理新的用户和组。下一章,我们将使用SerMyAdmin做些其他工作,如管理信任列表和LCR模块。
只需简单的在登录页面上的Register按钮点击一下就可以注册一个新的用户了。
填上下面这些,Username,Password,Domain,Email,First
Name,Last Name,Caller
Id和确认码(confirmation code)。按下屏幕的最下方的Create按钮。用户将被加入数据库。系统管理员和该用户都将收到一封关于注册的电子邮件。在用户可以打电话前,管理员必须要同意该用户。
按照下面的步骤一步一步做来同意一个新用户:
步骤1:用admin@localhost帐号登录,密码是在OpenSER安装时创建的openserrw。安装时已经为每一个用户创建了叫做Role的新的属性。这个属性的目的是用来区分普通用户,域管理员和通用管理员的。Admin用户自动被设置为通用管理员(Global
Administrator)。这个新的属性将帮助我们提供多域的支持。
步骤2:选择菜单中Registered
Users条目。
在上面的屏中,选择你想要添加用户,选中对应复用框。按下Approve按钮添加用户;该用户将从register_user表中移除,而被转移到订阅列表中,然后他将能够注册到OpenSER并可以打电话。
步骤3:现在用户会显示在你的用户列表中了。点击菜单目录中的用户检查之。
你能够查看,添加,编辑和删除用户菜单上的用户了。当你点击它时,所有的用户都会显示在你的系统上。
要添加新用户的话,必须要点击“New User”链接。点后你将转到下面的页面上:
你要完全的填满上一张图片中的空档,并点击“Create”链接,然后该用户会被添加到订阅表(subscriber
table)中。之后会显示下面的图片:
在这个页面中,你可以点击“Edit”来编辑插入的信息,点击“Delete“来删除该用户。
在“User List“页面中,你可以基于username,domain,和email对用户进行搜索;只要填上所需的条件,然后点击”Search“链接即可。下面的页面中,我们使用用户名jdoe来对用户进行搜索。点击”Search“;页面将转移到符合你所输条件的用户列表(user
list)上去。
你可以像管理你的用户那样来管理你的域。点击“Domains”得到一张域列表(domain
list)。你可以在其中进行诸如添加一个新的域,删除一个已经存在的域等类似的操作。这里要注意的很重要的一点就是,SerMyAdmin不允许没有域的用户存在,所以当你删掉一个域后,你也就删除掉了所有属于该域的所有用户。
网站的布局,SerMyAdmin使用SiteMesh框架,所以按照你自己的品位来定制SerMyAdmin的显示效果是非常简单的。SiteMesh显示的页面是基于一份模板,这份模板可以在
openser:/usr/local/apache-tomcat-
SiteMesh使用HTML元标记来选择要使用哪个布局;这些标记应该可以在每个页面的头元素(head
element)中找到,如果一个页面在头元素中含有标记,那么SiteMesh将使用main.gsp布局显示之。
你可以按照你的意愿对main.gsp和notLoggedIn.gsp进行修改,但是要了解的很重要的一点是
为了使用你自己的logo来替代SerMyAdmin的,只需要将你的logo放到/usr/local/apache-tomcat-
在上面我们仅仅是通过改变粗体显示的参数就用我们自己的logo替代了SerMyAdmin的logo。
你也可以通过修改CSS文件来改变SerMyAdmin的显示效果和感觉,CSS文件可以在/usr/local/apache-tomcat-
例子:如果我们使用下面的参数来改变这个文件中的背景类(background
class):
body {
background: #
color: #333;
font: 8px verdana, arial,
helvetica, sans-serif;
}
我们将能够在最后得到如下的页面:
这个页面不是世界上最好看的,但是你可以按照这个例子的方法来是它看起来更好一些。
在这一章中,你已经学到了为什么拥有一个用户和管理入口是如此的重要。它是软件中你应该放大部分精力在其上的部分。但是一些VoIP服务提供商并没有分配必要的时间和资源在构建入口这项重要的工作上。OpenSER是一个令人惊讶的SIP代理,但是SIP代理也只是VoIP服务提供商的部件的一员而已。没有好的管理和用户接口,VoIP提供项目很容易失败。SerMyAdmin就是我们在此方面对你项目的一个贡献。它是利用JAVA语言,使用Groovy on Rails架构进行开发,按照GPL版本2进行许可的系统。你已然已经学会了如何安装,管理用户和域和如何定制显示效果。这个工具可以做的事情还很多,在下一章我们将向你展示其更多的功能。