joyfire的linux1系统管理—6网络服务
网络服务 目 录1. 网络服务1. wu-ftpd2. smbd3. apache 虚拟服务器4. apache php3 mysql5. apache apacheJserv6. ap
网络服务 目 录
1. 网络服务
1. wu-ftpd
2. smbd
3. apache 虚拟服务器
4. apache php3 mysql
5. apache apacheJserv
6. apache tomcat 7. java 环境(中文)
8. sendmaild
1. sendmail 扮演的角色
2. 如何运行sendmail
3. sendmail.cf
4. 邮件中枢与分发代理
5. 宏
6. 规则
7. 规则集0
9. qmail
10. router
11. cvs
12. bind
13. openssh
1. 简单使用
2. 配置文件
3. scp
4. 使用key 做验证
5. rsync 与ssh 配合使用
6. cvs
14. Khttpd
网络服务
[目录]
,wu-ftpd
chmod 777 /home/ftpd/incoming
chown ftp /home/ftpd/incoming
chgrp ftp /home/ftpd/incoming
改etc 下的ftpaccess, 我的是这样:
loginfails 2
class local real,guest,anonymous *.domain 0.0.0.0
class remote real,guest,anonymous *
limit local 20 Any /etc/msgs/msg.toomany
limit remote 100 SaSu|Any1800-0600 /etc/msgs/msg.toomany
limit remote 60 Any /etc/msgs/msg.toomany
readme README* login
readme README* cwd=*
message /welcome.msg login
message .message cwd=*
compress yes local remote
tar yes local remote
# allow use of private file for SITE GROUP and SITE GPASS?
private yes
# passwd-check
passwd-check rfc822 warn
log commands real
log transfers anonymous,real inbound,outbound
shutdown /etc/shutmsg
# all the following default to "yes" for everybody
delete no guest,anonymous # delete permission? overwrite no guest,anonymous # overwrite permission? rename no guest,anonymous # rename permission?
chmod no anonymous # chmod permission? umask no anonymous # umask permission? # specify the upload directory information
upload /home/ftp /pub no
upload /home/ftp /pub1 no
,upload /home/ftp /incoming yes
upload /home/ftp /pub1/incoming yes
upload /home/ftp /bin no
upload /home/ftp /etc no
# directory aliases... [note, the ":" is not required]
alias inc: /incoming
# cdpath
cdpath /incoming
cdpath /pub
cdpath /
# path-filter...
path-filter anonymous /etc/pathmsg ^[-A-Za-z0-9_.]*$ ^. ^-
path-filter guest /etc/pathmsg ^[-A-Za-z0-9_.]*$ ^. ^- # specify which group of users will be treated as "guests".
guestgroup ftponly
email user@hostname
[目录]
smbd
更改/etc/smb.conf,主要要确定下面的内容:
workgroup=MYWKGP
smb passwd file=/etc/smbpasswd
security=user (使用unix 用户安全)
encrypt passwords= yes
然后就可以添加目录了, 首先添加宿主目录:
(其实就是把对应的行的注释去掉)
[homes]
comment = home directory
browseable = no
writeable= yes
还可以再加一个共享目录:
[public]
comment = public directory
path=/public
public=yes
writeable=no
read only=yes
,printable=no
最后当然是加入用户, 比如想把fake 用户当成windows 系统中的winfake, 执行 smbadduser fake:winfake
输入访问口令, 以后在windows 98中只要提供winfake 和对应口令
就可以访问/home/fake和/public目录
有时windows 95/98会出现一些兼容问题, 研究encrypt passwords=那一行吧 ================================================================== 最好用swat 来设置吧,把/etc/inet.conf最后swat 前的注释去掉
然后重启inetd ,就可以通过任意一个机器用浏览器来配置了
输入地址http://samba_server:901/即可
95/98/nt都可以的说,还好这里什么机器都有,嘿嘿,都可以互相
访问的,包括打印,95/98网络登录时要用samba 里的用户名哦
[global]
workgroup = IPC
netbios name = DATASERVER
server string = Data Server - Linux
encrypt passwords = Yes
log file = /var/log/samba/log.m
max log size = 50
#这三行设置超时,还没搞清楚,不过这样马马虎虎能工作,一定要设
#否则mount 上的设备umount 不掉,一直busy 的说,:PP
change notify timeout = 30
deadtime = 1
keepalive = 0
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 dns proxy = No
#这三行是umask 的设置,看情况设置吧
create mask = 0755
force create mode = 0755
force directory mode = 0755
#用户的home 目录,根据用户不同而变化,本来就有的,不是我加的说
[homes]
comment = Home Directories
read only = No
browseable = No
[printers]
comment = All Printers
,path = /var/spool/samba
print ok = Yes
browseable = No
#我自己加的一个共享目录
[public]
comment = Public Software
path = /home/ftp/pub
guest ok = Yes
[目录]
apache 虚拟服务器
多域名单IP 的:
1. 首先要解决域名的问题, 你可以用nslookup <你的域名>看看该域名是不是指向了你IP, *.yeah.net本来就是做的虚拟主机, 所以解析出来都是指向www.yeah.net (202.96.152.198), 通常情况下, apache启动时会检查你用作虚拟主机的域名。
2. 改httpd.conf, 加
ServerAdmin I007@263.net
DocumentRoot /home/I007/public_html
ServerName I007.com (这里只能写域名)
多IP 的:
1. 最好每个IP 还是能对应一个域名
2. 加载ip_alias模块 (/sbin/insmod ip_alias)
3. 加IP (/sbin/ifconfig eth?:? ???.???.???.???)
4. 改httpd.conf, 和上面差不多
可以看出, 两者可以共存, 以上均做过实验, 没有问题..
[目录]
apache php3 mysql
,*安装apache-devel rpm包.
*安装MySQL 相关的包.
rpm -ivh MySQL-3.22.25-1.i386.rpm
rpm -ivh MySQL-client-3.22.25-1.i386.rpm
rpm -ivh MySQL-devel-3.22.25-1.i386.rpm
*下载php3源文件php-3.0.tar.gz
*解开源文件
tar xzvf php-3.0.tar.gz
*进入php-3.0源文件目录
./configure --with-mysql=/usr --with-apxs=/usr/sbin/apxs --with-config-file -path=/etc/httpd (还有其他选项, 可以运行 ./configure --help 看看)
*建一个modules 目录
mkdir modules
*进入regex 目录
运行 make r (这一步可能不必要)
运行 make lib
*退回上一级目录
运行 make install
* cp modules/libphp3.so /etc/httpd/modules/
* cp php3.ini-dist /etc/httpd/php3.ini
* 修改/etc/httpd/conf/httpd.conf 加入
LoadModule php3_module modules/libphp3.so
AddModule mod_php3.c
修改/etc/httpd/conf/srm.conf 加入
AddType application/x-http-php3 .php3
*重起apache
/etc/rc.d/init.d/httpd restart
*测试
查看mysqld 是否已经运行. 如果没有, 先运行mysqld
将php3源文件下tests 目录下的mysql 文件拷贝到 /home/httpd/html目录下 lynx localhost/mysql.php3
如果有问题, 可以将mysql.php3中的127.0.0.1改为localhost
[目录]
apache apacheJserv
============================================================================= 环境:mdk7
首先使用BJLC 光盘上的jdk1.2pre2
具体装过程略
rpm: apache-1.3.9 apache-devel jsdk-2.0
,tgz: Apache-Jserv1.1 gnujsp-1.0.0
解开Jserv 的src
./configure --enable-EAPI --with-JSDK=/usr/lib/classes/jsdk.jar --with-apxs=/usr/sbin/apxs
应该没有问题, 很顺利编译通过
再/etc/httpd/conf/httpd.conf
在最后(一定要在最后否则有很多小麻烦)
Include ./jserv/jserv.conf
重新启动apache
如果能看到应该就差不多了
试http://localhost/jserv/
一般是403 forbidden
如果是forbidden
修改
jserv.conf
搜索Location
里面有一段allow
改成allow localhost.localdomain
好像就可以了
用localhost 或者是127.0.0.1都不行
反正这是我碰到的倒霉事希望大家能一次成功
到这apache-jserv 就算是完成了, 也就是有了
一个servlet 容器并且有了在apache 里面的模块
能够同这个容器进行通信, 通信协议最好用
apjv12, 反正所由地方都设成apjv12就没有问题
否则很可能出现不匹配的情况, 最后导致
500错误, 在log 中显示malformed fata
前面提到servlet 容器建好了
Jserv 调通了, 还有两个很有用的log 文件
在我的mdk7里面是
/usr/logs/里面的mod_jserv.log和jserv.log
这两个文件在调试中极有用
它们的权限要求nobody 可以写
所以我的做法是
chmod 664 *
chgrp nobody *
大牛是不是这样做, 我不知道
可能这样会有安全性问题
前面如果你看到了jserv 的状态页点击apjv12://localhost:8007 应该能够看到各个zone 的配置
如果看不到应该收到所谓selfservlet 一个选项
没有打开的提示, 打开就好了好像是在jserv.properties 里面
接下来是搞gnujsp
解开了会发现jsp 是完全用java 写成的例程
主要是两个gnujsp-...jar 和servlet-...jar
反正我用的是gnujsp10和servlet-2.0-plus
,拷到/usr/servlet/jsp(这是随便给的)
编写gjsp.properties 文件
关键是
servlet.gnujsp.class=org.gjt.jsp.JspServlet
servlet.gnijsp.initArgs=checkclass=true, //这样编译好的jspservlet 可以利用
pagebase=/home/httpd/html,
scratchdir=/usr/servlets/jsp/scratch, //这里要有文章
debug=true, //先打开, 调好了再关掉
compiler=builtin-javac -classpath //这里builtin-javac 需要jdk1.2的tools.jar
classpath:scratchdir:/usr/servlets/jsp/gnujsp.jar:
/usr/servlets/jsp/servlet.jar:/usr/servlets/jsp/beans //指定编译用的classpath
-d scratchdir -deprication source //就是编译一个普通的java 文件一样
首先要注意你选择的scratchdir 一定要nobody 可写,其次使用builtin 的javac
需要在jserv.properties 加上
wrapper.class...=/usr/jdk1.2/lib/tools.jar (这是我安装的路径)
到这里jsp 的zone 就差不多了
现在开始在jserv.properties 里面指明zones
很简单不废话了
最后是在jserv.conf 里面作mount ,照着例子写
也不难,前面有人贴过了
最后就可以试试自己的jsp 了
首先先从http://localhost/jserv/
里面看一看jsp 的zone 配制出来没有
验证一下参数都正确
====================================================================================================
1. 先确认apachejserv 已能正常工作
2. 把gnujsp10.jar,servlet-2.0-plus.jar 拷到/home/httpd/sevlets目录下
3. 修改jserv.conf, 加入
ApJServAction .jsp /servlets/org.gjt.jsp.JspServlet
ApjServMount /java /root(这个目录主要是用来存放jsp 生成的java
和class 文件, 可视具体情况而定)
4. 修改jserv.properties, 加入
wrapper.classpath=/usr/jdk/lib/tools.jar
wrapper.classpath=/home/httpd/servlets/gnujsp10.jar
wrapper.classpath=/home/httpd/servlets/servlet-2.0-plus.jar
5. 修改zone.properties, 加入
repositories=/home/httpd/java/
servlet.gnujsp.code=org.gjt.jsp.JspServlet
servlet.org.gjt.jsp.JspServlet.initArgs=checkclass=true
servlet.org.gjt.jsp.JspServlet.initArgs=scratchdir=/home/httpd/java
servlet.org.gjt.jsp.JspServlet.initArgs=compiler=builtin-javac -encoding enco
ding -classpath classpath -d scratchdir -deprecation source
,[目录]
apache tomcat
编译得到mod_jserv.so和ApacheJServ.jar
在tomcat3.0的etc 子目录里面有tomcat.conf ,在httpd.conf 里面Include 一下
启动tomcat(./tomcat.sh start)然后启动httpd, 看看成功了没有。
如果不行, 我碰到的一个问题是log file有问题, 直接指定成下面的样子
ApJServLogFile /var/log/httpd/mod_jserv.log
就过了。
最后实验http://localhost:8080/一下确信tomcat 跑了。然后实验http://localhost:8080/examples/jsp和
[目录]
java 环境(中文)
好象有许多人都碰到了这个问题, 我以前也碰到过, 在网上找了一些解决方法看了看, 在自己的机器上试了试, 都没有解决问题, 趁着这几天把 Debian的中文问题搞好了, 顺便把这个也弄一弄, 终于搞明白了一些东西. 错误之处还请大家指教. 这里主要指的是 Swing 中显示的中文, 关于其他中文操作问题, 暂不作讨论.
其实说起来 Java 的中文问题非常简单, 有两个重要因素, 一个是编译时的编码(encoding), 另一个是字体. 这两个缺一不可.
一, 编译时的编码:
指的是编译 Java 的源程序时指定的编码格式, 即使用
javac -encoding MyEncoding MyJavaFile.java
编译 MyJavaFile 时 -encoding 所指定的 MyEncoding. 通常中文的编码有大陆和新加坡使用的 GB2312 以及 台湾和香港使用的 Big5, 普通英文用的是ISO_8859_1. 这里只关注 GB2312. 如果在编译的命令行中指定了编码, 那么就使用指定的编码格式, 如果没有指定, 将使用系统缺省的编码格式, 在 windows的中文简体版下都是 GB2312, 而 Linux 下不同的终端可以有不同的编码, 可以直接设置环境变量 LC_ALL LANG 等指定相应的不同类型信息的编码, 比如数字, 日期, 货币, 姓名等等. 可以用 locale 命令来看当前终端所有的编码. 在Java 程序中可以使用 System.getProperty("file.encoding"); (注 1) 来获取当前的编码格式. 好了, 当编译的时候, 源码中的中文字符串都会按照指定的或者缺省的编码格式映射为相应的 UNICODE , 而不是看做简单的 ASCII 字符. 所以编码格式就是处理源码中的各种各样的字符, 与运行时无关, 所以如果你的源文件中没有直接需要使用中文的地方, 比如菜单, 按钮, 标签什么的, 就不需要指定编码了.
二, 字体的选择:
必须使用能够显示中文的字体, 好象有些废话. 但还是有必要说一说. AWT 可以在中文系统中直接显示中文, 但是在不是中文系统但是有中文字体的系统中不能, 需要修改一下 $JAVA_HOME/jre/lib/font.properties,加入中文字体, 至于怎么加入, 就不谈
,了. 而 Swing 不需要这样, 只要你的系统中有中文字体就可以使用这样的字体来显示中文. 怎么知道一种字体能不能显示中文呢? 看下面的程序片段: (注 2)
Font[] fonts = GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFFonts();
System.out.println("Chinese Fonts: n");
for (int i = 0; i < fonts.length; i )
{
if (fonts[i].canDisplayUpTo("一") > 0) // 注 3
{
System.out.println(fonts[i].getFontName());
}
}
好了, 知道了系统中有没有中文字体, 然后选择一个就是了. 如果选择了不能显示中文的字体, 通常的情况是显示方框. 好了, Swing 的中文显示介绍完了, 输入和编辑中文就和显示差不多, 选一个字体就可以了, 具体得看你而 Linux 的具体设置了, 这里就不多说了.
从以上两点来看, 其实最重要的还是字体的选择. 我的网站上有 ScreenShot和测试程序, 欢迎来访问.
注 1: 据 jdk1.2.2 的文档, 并没有这个属性, 很奇怪, 但是确实可用.
注 2: jdk 1.2 以上自带的字体支持 Unicode, 但是不支持 Unicode 汉字. 所以打出来的结果包含了 jdk 自带的字体.
注 3: UNICODE 中, UNICODE 汉字从 㐀 到 鿿 中间, 豈 到 也有一些, 但是 GB2312 和 Big5 的汉字和字符都是在 一 到 鿿中间.
参考文献:
jdk tools doc
一篇没有作者名字, 也没有出处的英文文章.
[目录]
sendmaild
最简提示:
主要的问题是如何配置sendmail.cf.
如果你用的是redhat, 执行:
cd /usr/lib/sendmail-cf/cf
m4 redhat.mc > sendmail.cf
cp sendmail.cf /etc/sendmail.cf
sendmail -bd(或者reboot)
上面的方法配置之后服务器发信没问题, 而远端机器却不能发信, 是因为缺省redhat.mc 生成的sendmail.cf 禁止了客户服务, 这样:找到下面一行(sendmail.cf):