vsftp搭建
[root@master ~]# yum install -y vsftpd
启动vsftp:[root@master ~]# /etc/init.d/vsftpd start,如果出现Starting vsftpd for vsftpd: [FAILED](启动失败,是因为21端口被pureftpd占用了)
[root@master ~]# killall pure-ftpd
[root@master ~]# killall pure-ftpd
[root@master ~]# /etc/init.d/vsftpd start(这个时候启动就是正常的)
[root@master ~]# netstat -lnp |grep vsftp(可以看到21端口现在被vsftp占用)
启动成功后,默认的配置文件是可以让系统用户登录的,其实是非常不安全的。
[root@master ~]# passwd user3(把user3密码改掉)
客户端:[root@slave ~]# lftp [email protected]
创建虚拟用户所对应的那个用户,[root@master ~]# useradd virftp -s /sbin/nologin
创建虚拟用户存放的用户名和密码:[root@master ~]# vi /etc/vsftpd/vsftpd_login
在里面输入:test1
111222aaa
test2
aaa111ddd
更改权限[root@master ~]# chmod 600 /etc/vsftpd/vsftpd_login
把这个文件vsftpd_login生成一个库文件,也就是vsftpd服务能识别的一个二进制库文件
[root@master ~]# db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db(/etc/vsftpd/vsftpd_login.db库文件生成的地方)
创建虚拟账号:[root@master ~]# mkdir /etc/vsftpd/vsftpd_user_conf(这个目录是我们虚拟用户他的配置文件所存放的目录)
[root@master ~]# cd !$(进入/etc/vsftpd/vsftpd_user_conf)
cd /etc/vsftpd/vsftpd_user_conf
创建跟用户名同名的一个文件,那这个文件就是他的配置文件,[root@master vsftpd_user_conf]# vi test1
local_root=/home/virftp/test1
anonymous_enable=NO
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
idle_session_timeout=600
data_connection_timeout=120
max_clients=10
max_per_ip=5
local_max_rate=50000
[root@master vsftpd_user_conf]# mkdir /home/virftp/test1
[root@master vsftpd_user_conf]# chown -R virftp:virftp !$
编辑认证相关的配置文件:[root@master vsftpd_user_conf]# vi /etc/pam.d/vsftpd,添加下面两行
auth sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
[root@master vsftpd_user_conf]# vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO(匿名用户不可以登陆)
local_enable=YES(本地用户可以登陆)
write_enable=YES
local_umask=022
anon_upload_enable=NO(匿名用户不可上传)
anon_mkdir_write_enable=NO(匿名用户不可mkdir)
在etc/vsftpd/vsftpd.conf配置文件最后添加以下四行
guest_enable=YES
guest_username=virftp
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vsftpd_user_conf
[root@master vsftpd_user_conf]# /etc/init.d/vsftpd restart
[root@master vsftpd_user_conf]# yum install -y lftp
[root@master vsftpd_user_conf]# lftp [email protected](输入密码进去)
lftp [email protected]:~> ls(ls里面没有文件)
[root@master vsftpd_user_conf]# cd /home/virftp/test1
[root@master test1]# mkdir 12312
[root@master test1]# touch 2.txt
[root@master test1]# lftp [email protected](输入密码登陆)
lftp [email protected]:~> ls
drwxr-xr-x 2 0 0 4096 Jul 18 18:22 12312
-rw-r--r-- 1 0 0 0 Jul 18 18:22 2.txt
也可以在浏览器中查看:ftp://192.168.137.3/ 回车之后,输入用户名test1,密码111222aaa,进去可以看到12312目录和2,txt文件
pure-ftpd 官网是 http://www.pureftpd.org/project/pure-ftpd,ftp能实现上传和下载 安装pure-ftpd
1. 下载软件
[root@localhost ~]# cd /usr/local/src/
[root@localhost src]# wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.37.tar.bz2
2. 安装pure-ftpd
[root@localhost src]# tar jxvf pure-ftpd-1.0.37.tar.bz2
[root@localhost src]# cd pure-ftpd-1.0.37
[root@localhost pure-ftpd-1.0.37]#./configure \
--prefix=/usr/local/pureftpd \
--without-inetd \
--with-altlog \
--with-puredb \
--with-throttling \
--with-peruserlimits \
--with-tls
[root@localhost pure-ftpd-1.0.36]# make && make install
make完之后会出现这个框框:
You can subscribe to the Pure-FTPd users mailing-list |
| to ask for help and to stay informed of new releases. |
| Go to http://www.pureftpd.org/ml/ now!
配置pure-ftpd
[root@master pure-ftpd-1.0.37]# ls /usr/local/pureftpd/会看到bin sbin share三个文件
[root@master pure-ftpd-1.0.37]# mkdir -p /usr/local/pureftpd/etc/
[root@localhost pure-ftpd-1.0.37]# cd configuration-file
[root@localhost configuration-file]# cp pure-ftpd.conf /usr/local/pureftpd/etc/pure-ftpd.conf
[root@localhost configuration-file]# cp pure-config.pl /usr/local/pureftpd/sbin/pure-config.pl
[root@localhost configuration-file]# chmod 755 /usr/local/pureftpd/sbin/pure-config.pl
[root@master configuration-file]# vi /usr/local/pureftpd/etc/pure-ftpd.conf,打开后把里面所有内容删除,增加下面内容
ChrootEveryone yes BrokenClientsCompatibility no MaxClientsNumber 50 Daemonize yes MaxClientsPerIP 8 VerboseLog no DisplayDotFiles yes AnonymousOnly no NoAnonymous no SyslogFacility ftp DontResolve yes MaxIdleTime 15 PureDB /usr/local/pureftpd/etc/pureftpd.pdb LimitRecursion 3136 8 AnonymousCanCreateDirs no MaxLoad 4 AntiWarez yes Umask 133:022 MinUID 100 AllowUserFXP no AllowAnonymousFXP no ProhibitDotFilesWrite no ProhibitDotFilesRead no AutoRename no AnonymousCantUpload no PIDFile /usr/local/pureftpd/var/run/pure-ftpd.pid MaxDiskUsage 99 CustomerProof yes 创建测试目录:[root@master configuration-file]# mkdir -p /tmp/ftp [root@master configuration-file]# chown -R user3 /tmp/ftp(把/tmp/ftp属主改为user3) [root@master configuration-file]# /usr/local/pureftpd/bin/pure-pw useradd ftpuser1 -uuser3 -d /tmp/ftp( /usr/local/pureftpd/bin/pure-pw用来添加用户的命令,ftpuser1是虚拟用户,用来登陆ftp服务的用户,-uuser3是映射的系统用户,-d /tmp/ftp是共享的ftp目录) 创建生成密码库文件:[root@master configuration-file]# /usr/local/pureftpd/bin/pure-pw mkdb(/usr/local/pureftpd/bin/pure-pw list列出,/usr/local/pureftpd/bin/pure-pw userdel ftpuser1删除用户) 启动pureftpd:[root@master configuration-file]# /usr/local/pureftpd/sbin/pure-config.pl /usr/local/pureftpd/etc/pure-ftpd.conf(如果报/usr/bin/env: perl: No such file or directory,则[root@master configuration-file]# yum install perl)再次启动就能成功提示Running: 启动完pureftpd可以查看进程[root@master configuration-file]# ps aux |grep pure 查看监听端口[root@master configuration-file]# netstat -lnp 用远程的机器访问:安装lftp,[root@slave ~]# yum install -y lftp [root@slave ~]# lftp [email protected]然后输入密码就能进去 lftp [email protected]:~> ls(执行ls)可以看到.和.. lftp [email protected]:/> mkdir 999(创建999目录) 回到服务端[root@master configuration-file]# ls /tmp/ftp(可以看到999这个目录) [root@master configuration-file]# tail /var/log/messages [root@master ftp]# touch 12.txt [root@master ftp]# vi 12.txt 登陆客户端[root@slave ~]# lftp 输入密码进去后,ls可以查看到12.txt文件 lftp [email protected]:/> ?(输入问号执行可以显示lftp全部的命令) lftp [email protected]:/> get 12.txt(下载一个文件) 文件下载好之后退出来,[root@slave ~]# ls(在当前目录下ls可以看到12.txt下载下来了) [root@slave ~]# vi aming.1(里面随便写点东西然后保存),[root@slave ~]# lftp (输入密码登陆ftp),lftp [email protected]:~> put aming.1(上传),退出来。回到服务端,[root@master ftp]# ls 12.txt 999 aming.1(可以看到上传的aming.1) 浏览器登陆:ftp://[email protected]
1. NFS简介
NFS全称是network file system
NFS允许一个系统在网络上与他人共享目录和文件。通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。
假如有三台机器A, B, C,它们需要访问同一个目录,目录中都是图片,传统的做法是把这些图片分别放到A, B, C. 但是使用NFS只需要放到A上,然后A共享给B和C即可。访问的时候,B和C是通过网络的方式去访问A上的那个目录的。
2. 安装、配置NFS服务
服务端:yum install -y nfs-utils rpcbind,rpcbind是让客户端和服务端通信用的。打开配置文件vi /etc/exports
在最左边写上需要共享的目录是谁,列如:/boot 192.168.137.5(rw,sync)(这个是共享给哪些ip,共享给哪些客户端,rw表示客户端只能读写,ro表示只读,sync表示同步)。配置完后,启动rpcbind和nfs,/etc/init.d/rpcbind start,/etc/init.d/nfs start
远程客户端:yum install -y nfs-utils showmount -e 192.168.137.3(服务端ip,这个命令执行后正常会显示Export list for 192.168.137.3 :/boot 192.168.137.5。/boot表示共享的目录,192.168.137.5表示共享给5这个ip客户端了), mount -t nfs 192.168.137.3:/boot /opt。df -h后会看到挂载情况。这个时候cd /opt/进入opt目录,touch 1.txt会提示权限不够。那么这个时候回到服务端:[root@aming mnt]#chmod 777 . 这个手再回到客户端:进入opt目录,再次执行touch 1.txt就会成功了,并且1.txt的属主和属组都是nfsnobody。这个nfsnobody是可以自定义指定的,在客户端cat /etc/passwd,比如找个501用户。回到服务端:vi /etc/exports,在sync后面增加all_squash,anonuid=501,anongid=501.,服务端重启/etc/init.d/nfs restart。回到客户端:在opt目录卸载,umount -l /opt/。这个时候在opt目录:mount -t nfs -onolock,nfsvers=3 192.168.137.3:/boot /opt。ll查看下501属组和属主是wanjj成功了。也可以不去限定root,在/etc/exports里去掉all_squash,anonuid=501,anongid=501,增加no_root_squash,这个时候回到客户端卸载挂载重新挂载后在opt目录创建的文件属主和属组就是root了。
1. 什么是samba
Samba服务类似于windows上的共享功能,可以实现在Linux上共享文件,windows上访问,当然在Linux上也可以访问到。
是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。
2. 安装配置samba
yum install -y samba samba-client
配置文件解说: vim /etc/samba/smb.conf
[global] 定义全局的配置,workgroup用来定义工作组,相信如果您安装过windows的系统,你会对这个workgroup不陌生。一般情况下,需要我们把这里的MYGROUP改成WORKGROUP(windows默认的工作组名字)。
security = user #这里指定samba的安全等级。关于安全等级有四种:
share:用户不需要账户及密码即可登录samba服务器
user:由提供服务的samba服务器负责检查账户及密码(默认)
server:检查账户及密码的工作由另一台windows或samba服务器负责
domain:指定windows域控制服务器来验证用户的账户及密码。
passdb backend = tdbsam # passdb backend(用户后台),samba有三种用户后台:smbpasswd, tdbsam和ldapsam.
samba配置文件
关于smbpasswd 参考文章:http://blog.yam.com/gavint/article/27397099
http://www.cnblogs.com/linuxbo/p/4290996.html
smbpasswd:该方式是使用smb工具smbpasswd给系统用户(真实用户或者虚拟用户)设置一个Samba密码,客户端就用此密码访问Samba资源。smbpasswd在/etc/samba中,需要手工创建该文件。
cat /etc/passwd | mksmbpasswd.sh >/etc/samba/smbpasswd
tdbsam:使用数据库文件创建用户数据库。数据库文件叫passdb.tdb,在/etc/samba中。passdb.tdb用户数据库可使用 smbpasswd -a 创建Samba用户,要创建的Samba用户必须先是系统用户。也可使用pdbedit创建Samba账户。(注意,使用smbpasswd -a username 这个同样也是tdbsam,并非上面的那种)
pdbedit参数很多,列出几个主要的:
pdbedit -a username:新建Samba账户。
pdbedit -x username:删除Samba账户。
pdbedit -L:列出Samba用户列表,读取passdb.tdb数据库文件。
pdbedit -Lv:列出Samba用户列表详细信息。
pdbedit -c “[D]” -u username:暂停该Samba用户账号。
pdbedit -c “[]” -u username:恢复该Samba用户账号。
ldapsam:基于LDAP账户管理方式验证用户。首先要建立LDAP服务,设置 “passdb backend = ldapsam:ldap://LDAP Server”
load printers 和 cups options 两个参数用来设置打印机相关。
除了这些参数外,还有几个参数需要你了解:
netbios name = MYSERVER # 设置出现在网上邻居中的主机名
hosts allow = 127. 192.168.12. 192.168.13. 172.16.# 用来设置允许的主机,如果在前面加 ”;” 则表示允许所有主机
log file = /var/log/samba/%m.log #定义samba的日志,这里的%m是上面的netbios name
max log size = 50 # 指定日志的最大容量,单位是K
[homes] 该部分内容共享用户自己的家目录,也就是说,当用户登录到samba服务器上时实际上是进入到了该用户的家目录,用户登陆后,共享名不是homes而是用户自己的标识符,对于单纯的文件共享的环境来说,这部分可以注视掉。
[printers] 该部分内容设置打印机共享。
samba部署和优化
samba实践一
要求共享一个目录,任何人都可以访问,即不用输入密码即可访问,要求只读
[global]部分 MYGROUP 改为WORKGROUP
security = user 改为 security = share
末尾处加入:
[share]
comment = share all
path = /tmp/samba
browseable = yes 是否允许在工作组里
public = yes 是否是公开
writable = no不让他可写
复制代码
mkdir /tmp/samba
chmod 777 /tmp/samba
touch /tmp/samba/sharefiles
echo "111111" > /tmp/samba/sharefiles
启动:/etc/init.d/smb start
检查配置的smb.conf是否正确 testparm
测试:win机器浏览器输入 file://192.168.0.22/share
或者运行栏输入: \\192.168.0.22
那么Linux下如何访问呢?
[root@master samba]# smbclient //192.168.137.2/share
提示让你输入密码直接回车就可以
smb: \> ls
. D 0 Tue Sep 8 12:17:14 2015
.. D 0 Thu Sep 17 00:59:48 2015
sharefiles 7 Tue Sep 8 12:17:22 2015
40063 blocks of size 524288. 24289 blocks available
Linux下访问第二种方法 1)yum install cifs-utils
2)挂载:
[root@master samba]# mount -t cifs //192.168.137.2/share /opt/
Password:直接回车不用输入密码
[root@master samba]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 20G 6.8G 12G 37% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 124M 27M 92M 23% /boot
//192.168.137.2/share 20G 6.8G 12G 37% /opt
3)
[root@master samba]# cd /opt/
[root@master opt]# ls
sharefiles
Samba实践二
共享一个目录,使用用户名和密码登录后才可以访问,要求可以读写
[global] 部分内容如下:
[global]
security = user
复制代码
还需加入:
[myshare]
comment = share for users
path = /tmp/samba
browseable = yes
writable = yes
public = no
保存退出
[root@master ~]# useradd smbuser1(创建测试账户,他的密码不需要去定义的,因为我们去登录samba服务不是用系统的用户名和密码,samba服务登录的时候虽然用的用户名和系统的用户名是相同的,但是实际上我们这个用户是映射过来的,只是系统用户的一个映射而已
[root@master ~]# pdbedit -a smbuser1(这一步是增加一个用户,要求输入密码)
[root@master ~]# pdbedit -h(可以查看pdbedit的用法)
[root@master ~]# /etc/init.d/smb restart
在win上登录:\\192.168.137.2回车输入密码
在Linux上登录:
[root@master ~]# smbclient -Usmbuser1 //192.168.137.2/myshare
Enter smbuser1's password:
挂载登录:把之前的挂载卸载掉,umount /opt/
[root@master ~]# mount -t cifs -ousername=smbuser1,password=123456 //192.168.137.2/myshare /opt/
[root@master ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 20G 6.8G 12G 37% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 124M 27M 92M 23% /boot
//192.168.137.2/myshare 20G 6.8G 12G 37% /opt
[root@master ~]# cd /opt/
[root@master opt]# ls
sharefiles sharefiles.txt
一. tomcat安装配置
1. 什么是tomcat
Tomcat就是用来解析jsp程序的一个软件,那么什么是jsp呢?我们之前曾经说过,跑网站的程序有很多种,比如php、asp(用微软编程的语音),现在php做的比较普遍,当然jsp也是比较流行,那我们用java写的网站就是jsp,他的网站需要什么区驱动呢?用tomcat,他是基于apache协议的。软件除了tomcat之外,还有resin、jboss。
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。
Tomcat是一个轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。
2. 安装GDK
官网地址:http://www.oracle.com/technetwor ... nloads-2133151.html
我们在这里下载jdk-8u31-linux-i586.tar.gz,百度网盘下载地址: http://pan.baidu.com/s/1bnfb4ez
然后用winscp上传至Linux系统
[root@master src]# tar zxvf jdk-8u31-linux-i586.tar.gz
[root@master src]# mv jdk1.8.0_31/ /usr/local/
[root@master src]# ls /usr/local/
bin games jdk1.8.0_31 libexec pureftpd share
etc include lib mysql sbin src
做环境变量的设置:[root@master src]# vim /etc/profile.d/java.sh
JAVA_HOME=/usr/local/jdk1.8.0_31
JAVA_BIN=/usr/local/jdk1.8.0_31/bin
JRE_HOME=/usr/local/jdk1.8.0_31/jre
PATH=$PATH:/usr/local/jdk1.8.0_31/bin:/usr/local/jdk1.8.0_31/jre/bin
CLASSPATH=/usr/local/jdk1.8.0_31/jre/lib:/usr/local/jdk1.8.0_31/lib:/usr/local/jdk1.8.0_31/jre/lib/charsets.jar
检查目录是否存在:
[root@master src]# source /etc/profile.d/java.sh
[root@master src]# java -version(可以看到Java版本)
java version "1.8.0_31"
Java(TM) SE Runtime Environment (build 1.8.0_31-b13)
Java HotSpot(TM) Client VM (build 25.31-b07, mixed mode)
3. 安装tomcat
Tomcat 官网tomcat.apache.org
cd /usr/local/src/
[root@master src]# wget http://mirrors.cnnic.cn/apache/tomcat/tomcat-7/v7.0.63/bin/apache-tomcat-7.0.63.tar.gz
[root@master src]# tar zxvf apache-tomcat-7.0.63.tar.gz
[root@master src]# mv apache-tomcat-7.0.63 /usr/local/tomcat
[root@master src]# ls /usr/local/tomcat/(可以查看里面有哪些目录)
bin lib logs RELEASE-NOTES temp work
conf LICENSE NOTICE RUNNING.txt webapps
[root@master src]# cd /usr/local/tomcat/
把启动脚本挪个地方:[root@master tomcat]# cp -v bin/catalina.sh /etc/init.d/tomcat
[root@master tomcat]# chmod 755 /etc/init.d/tomcat
vim /etc/init.d/tomcat //从第二行加入
# chkconfig: 2345 63 37
. /etc/init.d/functions
JAVA_HOME=/usr/local/jdk1.8.0_31
CATALINA_HOME=/usr/local/tomcat
[root@master tomcat]# chkconfig --add tomcat
[root@master tomcat]# chkconfig tomcat on
[root@master tomcat]# /etc/init.d/tomcat start
ps aux |grep tomcat(可以看看他的进程,tomcat是调用的java进程)[root@master tomcat]# netstat -lnp(可以看看端口)
/etc/init.d/tomcat restart(这个在tomcat中是不支持的)
浏览器输入 http://192.168.137.3:8080 可以看到tomcat的欢迎页
4、tomcat的配置和优化
[root@master tomcat]# cd /usr/local/tomcat/conf/
[root@master conf]# mkdir -p /data/tomcatweb
[root@master conf]# vi server.xml
把Connector port=“8080” 改为 Connector port="80"
配置新虚拟主机:
找到</Host>下一行插入新的<Host>内容如下:
<Host name="www.123.com" appBase="/data/tomcatweb"
unpackWARs="false" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="./" debug="0" reloadable="true" crossContext="true"/>
</Host>
说明:www.123.com是域名 appBase是网站目录 tomcat配置文件注释了会显示蓝色
配置完成后重启:[root@master conf]# /etc/init.d/tomcat stop
[root@master conf]# /etc/init.d/tomcat start
[root@master conf]# touch /data/tomcatweb/1.txt
[root@master conf]# vi /data/tomcatweb/1.txt(在里面写点东西)
测试:[root@master conf]# curl -xlocalhost:80 www.123.com/1.txt
dddddddddd
gggggggg
vvvvv
5. 测试jsp解析
[root@master conf]# vi /data/tomcatweb/1.jsp(添加以下内容)
<html><body><center>
Now time is: <%=new java.util.Date()%>
</center></body></html>
[root@master conf]# curl -xlocalhost:80 www.123.com/1.jsp(正常会显示下面内容)
<html><body><center>
Now time is: Sat Jul 18 20:32:45 GMT-08:00 2015
</center></body></html>
resin安装与配置
resin和tomcat类似,可以去解析jsp,当然他也得去安装jdk。他的官网是:http://caucho.com/
[root@www src]#wget www.aminglinux.com/bbs/data/attachment/forum/resin-4.0.36.tar.gz
[root@www src]# tar zxvf resin-4.0.36.tar.gz
[root@www src]# cd resin-4.0.36
./configure --prefix=/usr/local/resin --with-java-home=/usr/local/jdk1.8.0_31
make && make install
/etc/init.d/resin start(在启动resin之前最好要把tomcat停掉,因为他同样要启动java的进程或者说监听一些端口,要不然会产生冲突)
启动好之后,ps aux |grep java看下进程;netstat -lnp |grep java可以看到是监听是6600/6800/8080,这个就是resin监听的端口
配置之前可以先在浏览器访问下输入ip:8080是可以的
更改端口:
cd /usr/local/resin/conf
vim resin.properties进去后找到app.http把8080改成80
/etc/init.d/resin restart或者/etc/init.d/resin start
netstat -lnp |grep java可以看到监听了80端口
浏览器访问下输入ip:80是可以的
改虚拟主机怎么办呢
cd /usr/local/resin/conf
vim resin.xml
结构: <cluster id="app"> <host></host> </cluster> 虚拟主机配置就在<host></host>里配置
<host id="www.123.com" root-directory=".">
<web-app id="/" root-directory="/tmp/resin"/>
</host>
注意,这里并不是在</host>下面再加一段,而是直接更改里面的<host></host>
mkdir /tmp/resin
/etc/init.d/resin stop
/etc/init.d/resin start
netstat -lnp |grep java可以看到监听了80端口
vim /tmp/123/111.jsp //加入
<html><body><center>
Now time is: <%=new java.util.Date()%>
</center></body></html>
测试 :
curl -x127.0.0.1:8080 www.123.com/111.jsp
一. DNS原理相关
DNS 为Domain Name System(域名系统)的缩写,域名服务器,用来解析域名的,那么在最早期的时候,计算机还特别特别少,当时没有DNS,我们是通过一个文件/etc/hosts去记录另外一个机器的名字的,在早期出现网络的时候,两个机器通讯需要tcp/ip,需要对方机器的ip是什么,那么这个ip不好记,比较长四个数字,那么因为这个不好记,名字容易记,既然名字容易记,那我们就通过名字来去通讯,名字又知道谁是谁呢?所以就发明了ip跟名字对应的这么一条条记录的文件,文件是/etc/hosts,格式是
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
一个ip对应多个名字,但是一个名字对多个ip是不可以的!假如说现在前面一个ip对应一个名字,后面一个ip也对应一个名字,那么前面的生效。计算机一开始没有那么多,所以我们去更新hosts文件还是蛮快的。但后来机器越来越多,我们每一台机器都要去同步,一旦要增加一台新的机器,所有机器host文件都要去更新,这样会越来越麻烦!所以有些聪明的人发明了一个server,叫DNS,类似于host的功能。互联网当中的任何一台计算机都可以通过DNS去查询到其中一个名字对应的主机,他的ip到底是什么。DNS结构:比如www.aminglinux.com.这个点是根域。那么DNS怎么实现解析域名呢?看张图。它是一种将ip地址转换成对应的主机名或将主机名转换成与之相对应ip地址的一种服务机制。
其中通过域名解析出ip地址的叫做正向解析,通过ip地址解析出域名的叫做反向解析。 DNS使用TCP和UDP, 端口号都是53, 但它主要使用UDP,服务器之间备份使用TCP。
全世界只有13台“根”服务器,1个主根服务器放在美国,其他12台为辅根服务器,DNS服务器根据角色可以分为:主DNS, 从DNS, 缓存DNS服务器,DNS转发服务器。
dns安装配置1
[root@master ~]# yum list |grep bind
[root@master ~]# yum install bind
[root@master ~]# vim /etc/named.conf
listen-on port 53 { 127.0.0.1; };(这个是他的监听端口53,可以定义监听53端口的ip是谁?
directory "/var/named";(这个是子配置文件对应的目录在哪里
file "data/named.run";(这个是日志,data从/var/named开始,有时候启动不了或者错误可以通过这个文件看
zone "."(这个点是根)
type hint;(type有三种,master,slave,这个hint是和根域相关的)
file "named.ca";(这是根域对应的文件,这个named.ca文件在/var/named下,也就是[root@master ~]# vim /var/named/named.ca)
[root@master ~]# /etc/init.d/named start(启动)
[root@master ~]# yum install bind-utils
[root@master ~]# yum install bind*
[root@master ~]# dig @127.0.0.1 localhost.localdomain(测试)
[root@master ~]# cat /var/named/named.loopback(这是反解析的文件)
[root@master ~]# dig @127.0.0.1 -x 127.0.0.1(测试反解析)
dns安装配置2
正向解析:
[root@master ~]# vim /etc/named.conf
在末尾行添加zone "123.com" IN {
type master;
file "123.com.zone";
};
[root@master ~]# named-checkconf(检测主配置文件是否有问题,如果有错会列出来)
[root@master ~]# vim /var/named/123.com.zone
添加如下内容(可以参考[root@master ~]# cat /var/named/named.localhost他的格式)
$TTL 1D
@ IN SOA @ admin.123.com. (
20150723 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns.123.com.
IN MX 5 mail.123.com.
mail IN A 192.168.137.5
ns IN A 192.168.137.3
www IN A 11.11.11.11
bbs IN CNAME www
~
说明:admin.123.com.:管理员邮箱,也相当于[email protected] 红色部分:NS对应所谓的NS server,那么NS server是谁呢?是ns.123.com,那ns.123.com他又是谁呢?所以我们要给他写一条A记录,***部分,如果要对外服务,ip要写公网ip。还有一个是www,绿色部分!也可以写一个CNAME,蓝色部分,蓝色部分www也可以写成www.123.com.IN MX 5 mail.123.com.是定义邮箱的,5是级别。那么mail.123.com.又是谁呢?是mail IN A 192.168.137.5
[root@master ~]# named-checkzone "123.com" /var/named/123.com.zone(检测配置文件,123.com是他的zone)
[root@master ~]# vim /etc/named.conf
添加监听的ip listen-on port 53 { 127.0.0.1;192.168.137.3; };
[root@master ~]# named-checkconf(检测配置)
[root@master ~]# /etc/init.d/named restart
测试正向解析:[root@master ~]# dig @192.168.137.3 www.123.com
[root@master ~]# dig @192.168.137.3 bbs.123.com
反解析:通过ip解析域名,反解析这个可有可没有,什么时候有呢?如果你想做一个邮件服务器,这个最好给他加一下反解析,因为有的服务器,有的mail可能去核对,如果你这个ip我解析不到,反解析不到这个域名呢!我就不给你发邮件,所以要给他写一个反解析的。
反解析:[root@master ~]# vim /etc/named.conf
添加zone "137.168.192.in-addr.arpa" IN {
type master;
file "137.168.192.zone";
};
[root@master ~]# vim /var/named/137.168.192.zone
添加如下内容:(可以参考[root@master ~]# cat /var/named/123.com.zone格式)
$TTL 1D
@ IN SOA @ admin.123.com. (
20150723 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns.123.com.
3 IN PTR ns.123.com.
5 IN PTR mail.123.com.
检测:[root@master ~]# named-checkzone "137.168.192" /var/named/137.168.192.zone
[root@master ~]# /etc/init.d/named restart(重启)
测试反解析:
[root@master ~]# dig @192.168.137.3 -x 192.168.137.3
[root@master ~]# dig @192.168.137.3 -x 192.168.137.5
DNS安装配置3
光有一个主不保险,万一主服务器宕掉之后,咱们域名解析不到了,那么可能网站访问不到,很危险的一间事情。那所以我们需要做一个从DNS服务器,甚至是多台。找另外一台机器。
如何做DNS的主从:[root@slave ~]# yum install bind
安装好之后,打开/etc/named.conf,红色方框内:如果用//注释掉,就会监听所有的ip。因为咱们一个服务器会有多个ip,那如果你想监听某一个ip,那在分号后面继续加ip。
[root@slave ~]# vim /etc/named.conf
添加:zone "123.com" IN {
type slave;
file "slaves/123.com.zone";
masters { 192.168.137.3; };(配置这一行是告诉他主是谁)
};
zone "137.168.192.in-addr.arpa" IN {
type slave;
file "slaves/137.168.192.zone";
masters { 192.168.137.3; };
};
[root@slave ~]# named-checkconf(检测)
[root@slave ~]# /etc/init.d/named start(启动)
[root@slave ~]# ls /var/named/slaves/(ls查看会生成这两个文件)
123.com.zone 137.168.192.zone
[root@slave ~]# cat /var/named/slaves/123.com.zone(他自己生成的会非常规整,
测试从:dig @从ip www.123.com
dig @从ip bbs.123.com
测试反解析:
dig @从ip -x 主ip
上面是主从配置,但是还得测测怎么能让他产生变化。
在主上:vi /var/named/123.com.zone,添加一条aming记录,2015010901改成2015010902。
重启:/etc/init.d/named restart
测试:,dig @主ip aming.123.com,测试时正常的。
现在去从上测试:dig @从ip aming.123.com,发现主上的更改没有同步过来。
要想让主一更改、一重启,就要把这个信号发出去,发给从上,立马让从更改。所以需要在主上增加一条配置,vi /etc/named.conf,红色方框内,ip两边的括号是方括号
检测配置文件是否有错named-checkconf
/etc/init.d/named restart
现在再去从上测试:dig @从ip aming.123.com,发现同步过来了。
1. 安装mysql,master主
cd /usr/local/src/
wget http://syslab.comsenz.com/downloads/linux/mysql-5.1.40-linux-i686-icc-glibc23.tar.gz
注意:上面的地址是32位机器用的,如果你的机器是64位,下载这个(http://syslab.comsenz.com/downloads/linux/mysql-5.1.40-linux-x86_64-icc-glibc23.tar.gz)安装方法是一样的。[root@aming src]#tar zxvf /usr/local/src/mysql-5.1.40-linux-i686-icc-glibc23.tar.gz ,。[root@aming src]#mv mysql-5.1.40-linux-i686-icc-glibc23 /usr/local/mysql
[root@aming src]#cd /usr/local/mysql
[root@aming mysql]#ls 会看到解压完的文件和目录
[root@aming mysql]#mkdir -p /data/mysql
[root@aming mysql]#useradd -s /sin/nologin -M mysql(-M是不创建家目录,家目录下没有mysql目录)
[root@aming mysql]#chown -R mysql:mysql /data/mysql/
[root@aming mysql]#cp support-files/my-large.cnf /etc/my.cnf
打开配置文件 vi /etc/my.cnf, key_buffer_size = 128M,log-bin=mysql-bin启用,server-id = 1启用
两个可选参数(2选1):binlog-do-db=db1,db2#用来指定需要同步的库
binlog-ignore-db=db1,db2#指定忽略不同步的库
[root@master mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@master mysql]# vi /etc/init.d/mysqld,basedir=/usr/local/mysql,datadir=/data/mysql
[root@master mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql,这一步是初始化
[root@master mysql]# /etc/init.d/mysql start启动
[root@master mysql]# ls /data/mysql 会看到 mysql-bin.000002这样的文件,这就是二进制日志
[root@master mysql]# mysqladmin -uroot password '123456'设置mysql登陆密码
[root@master mysql]# /usr/local/mysql/bin/mysql -uroot -p登陆mysql
在主上创建测试库
mysql> create database aming;创建aming库
然后导出主的mysql库数据然后导入给aming库
mysqldump -uroot -p mysql >123.sql
mysql -uroot -p aming <123.sql
mysql> grant replication slave on *.* to 'repl'@'192.168.137.5' identified by '123456';(授权,5是从ip)
检测从主机能不能连接到主上去:[root@slave ~]# mysql -urepl -p123456 -h192.168.137.3(3是主ip)
登陆主的mysql,mysql> flush tables with read lock;锁表,目的不让他去更新
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000009 | 189 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.01 sec)
再开启主的一个窗口:[root@master mysql]# mysqldump -uroot -p123456 aming > 1.sql
[root@master mysql]# scp -P22 1.sql [email protected]:/root/这一步是把1.sql拷贝至从上
配置从主机的mysql:[root@slave ~]# vi /etc/my.cnf server-id = 2,#log-bin=mysql-bin
[root@slave ~]# mysql -uroot -e "create database aming;"(创建库)
[root@slave ~]# mysql -uroot aming < 1.sql(把1.sql导入到aming库)
登陆从的mysql,然后mysql> slave stop;再 mysql> change master to master_host='192.168.137.3',master_user='repl',master_password='123456',master_log_file='mysql-bin.000007',master_log_pos=245;(3是主的ip)。mysql> slave start;
主上配置:登陆主的mysql,mysql> unlock tables;
从上配置:登陆从的mysql,mysql> show slave status\G;(出现slave_IO_Running:Yes和slave_SQL_Running:Yes表示主从配置成功)
注意:[root@master mysql]# scp -P22 1.sql [email protected]:/root/执行后如果报错-bash:scp:command not found,这是因为openssh-client没安装,yum install -y openssh-clients就可以