基础篇五---服务的基本知识及www服务介绍

来源:互联网 发布:刷机可以解除网络锁吗 编辑:程序博客网 时间:2024/06/15 02:18

一、服务的基础知识

服务(service),即是系统提供的某些系统或者网络功能,而若想提供这些服务,则需要某些应用程序即daemon来启动、运行。而依据daemon的启动和管理方式,基本上可以将其分为可独立启动的stand alone,与透过一支super  daemon来统一管理的这俩大类。

1、daemon的分类

(1)stand alone:可独立启动的程序,这种程序可独立启动而不用透过其他机制的管理,daemon启动并加载到内存后就一直占用内存与系统资源,最大的优点是由于一直在内存中占用着资源,因此一旦有需求即可响应。常见的stand alone的daemon有WWW 的 daemon (httpd)、FTP 的 daemon (vsftpd)等;

(2)super daemon:这一种服务的启动方式由一只统一的daemon来负责唤起服务,这个特殊的daemon即可称之为super daemon,现在的super daemon为xinetd。这种机制的有意思的地方在于,当没有客户端的要求时,各项服务都是未启动状态,等到有来自客户端的要求时,super daemon才唤醒相对应的服务,当客户端的要求结束后,被唤醒的这个服务也会关闭并释放系统资源。


2、服务的命名规则

所有服务的名称被建立之后,在linux上,都会在服务名称之后加一个d,例如httpd,mysqld等,这个d即是daemon;

3、服务和端口号的对应

linux系统上的所有功能都是通过服务来提供的,而程序则是通过触发程序而产生的。由于主机可以提供多种服务而只有一个IP,因此通过端口来区别不同的服务要求;为了统一端口号和对应的服务,因此有了通讯协议,而在linux中,/etc/services中则设定了默认的哪些端口号对应的哪些服务。

4、daemon的启动方式和启动脚本

虽然daemon只是一个程序,但是启动它却需要执行文件、配置文件、执行环境等,因此通常会有一个简单的shell script来进行启动, 该 script 可以迚行环境的侦测、配置文件的分析、PID 档案的放置,以及相关重要交换文件案的锁住 (lock) 劢作, 你只要执行该script ,上述的劢作就一口气连续的迚行,最终就能够顺利丏简单的吪劢这个 daemon。

这些 daemon 的启动脚本 (shell script) 一般在/etc/rc.d/init.d/下,而各服务的初始化环境配置文件一般在/etc/sysconfig/*中(如网络的在/etc/sysconfig/network中),各服务的配置文件则一般在/etc/*下,各服务产生的数据则在/var/lib/*中(如myslq的数据库默认就在/var/lib/mysql/目录下),各服务的PID则一般位于/etc/run/*中;

PS:对于super daemon其配置文件则在//etc/xinetd.conf, /etc/xinetd.d/* 这俩个地方。

5、stand alone和super daemon管理的daemon的启动方式的区别

stand alone的启动脚本都在/etc/rc.d/init.d/下(可以详细查看一下各服务的启动脚本,一般都是提供各项环境的检测后跟一个case语句),因此启动方式可以为/etc/rc.d/init.d/*来直接启动;此外,还有一个service脚本,它可以分析后面跟的参数,然后根据参数去/etc/rc.d/init.d/去取得正确的服务来start和stop

PS:在linux中,要开启或者关闭某个端口,其实就是需要开启或关闭某个服务,其对应的端口就会开启或者关闭。

6、super daemon的启动方式

super daemon本身是一个stand alone,因此其启动方式和上面的一样,但是其管理的daemon是否启动则是通过super daemon的配置文件来配置的,其配置文件为/etc/xinetd.d/*

的所有文件,那么如何得知其管理的服务有无启动,可以 grep  -i  'disable'  /etc/xinetd.d/* 

[root@www ~]# grep -i 'disable' /etc/xinetd.d/*
....(前面省略)....
/etc/xinetd.d/rsync: disable = yes
/etc/xinetd.d/tcpmux-server: disable = yes
/etc/xinetd.d/time-dgram: disable = yes
/etc/xinetd.d/time-stream: disable = yes
因为 disable 是『取消』的意思,因此如果『 disable = yes 』则代表取消此项服务的启动,如果是『 disable = no 』才是有启动该服务!

示例:我要启动rsync,则如下所示

# 1. 先修改配置文件成为启动的模样:
[root@www ~]# vim /etc/xinetd.d/rsync
# 请将 disable 那一行改成如下的模样 (原本是 yes 改成 no 就对了)
service rsync
{
disable = no
....(后面省略)....
# 2. 重新启动 xinetd 这个服务
[root@www ~]# /etc/init.d/xinetd restart
正在停止 xinetd: [ 确定 ]
正在激活 xinetd: [ 确定 ]
# 3. 观察启动的埠口
[root@www ~]# grep 'rsync' /etc/services  <==先看看埠口是哪一号
rsync 873/tcp # rsync
rsync 873/udp # rsync
[root@www ~]# netstat -tnlp | grep 873
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 4925/xinetd
# 注意看!吪劢的服务并非 rsync 喔!而是 xinetd ,因为他要控管 rsync 

7、super daemon的配置文件

/etc/xinted.conf为默认的配置文件,而/etc/xinted.d/*为各个被管理服务的各自的配置文件,若后者中没有则使用前者的默认值。

8、/etc/hosts.allow, /etc/hosts.deny 管理

这俩个其实是/usr/sbin/tcpd的配置文件,而这个tcpd服务则是可以用来分析进入系统的 TCP 网络封包的一个软件,TCP 是一种面向连接的网络联机封包,包括 www, email, ftp 等等都是使用 TCP 封包来达成联机的。 所以,这个套件本身的功能就是在分析 TCP 网络数据封包!而 TCP 封包的文件头主要记录了来源不同主机的 IP 不同port ,因此藉由分析 TCP 封包并搭配 /etc/hosts.{allow,deny} 的规则比对,就可以决定该联机是否能够进入我们的主机。所以,凡是服务的程序支持 TCP Wrappers 函式的功能时,那举该服务的防火墙方面的设置就能够以 /etc/hosts.{allow,deny} 来处理,可以经由ldd $(which sshd httpd)来查询某daemon是否支持该函式,目前可知的是ssh是支持的,因此sshd 可以使用 /etc/hosts.{allow,deny} 进行类似防火墙的抵挡机制。

<service(program_name)> : <IP, domain, hostname> : <action>
<服务 (亦即程序名称)> : <IP 或领域 或主机名> : < 动作 >

PS:上头的 < > 是不存在于配置文件中,第一个是找出你想要管理的那个程序的文件名,第二个才是写下来你想要放行戒者是抵挡的 IP 戒网域;且检测时,先检测.allow再检测.deny,因此一般把允许访问的写在.allow,不允许的写在.deny;

示例:[root@www ~]# vim /etc/hosts.deny
rsync : 127.0.0.100 127.0.0.200 : deny                        #对方就无法以 rsync 迚入你的主机。PS:这里的deny可以省略;同理在.allow中后面的.allow也可以省略;

9、系统服务的开机启动

chkconfig  --list:查看那些服务会开机自启;chkconfig  --list   service_name这里显示某服务是否为开机自启;

PS:显示的结果中只有 on 戒 off 者为 super daemon,有7个等级分别显示的为stand alone;

chkconfig  service_name  on:将某服务加入开机自启;

chkconfig [--add|--del]  [服务名称]
选项参数:
--add :增加一个服务名称给 chkconfig 来管理,该服务名称必须在/etc/init.d/ 内
--del :删除一个给 chkconfig 管理的服务

PS:对于super daemon管理的服务,用/etc/init.d/*  status是查看不出状态的,因为其为守护进程管理的服务,不是stand  alone;

chkconfig则可以用来管理守护进程管理的程序的启动和关闭,若rsync当前在开启着,则当进行chkconfig  rsync  off后再service  xinetd  restart后再看一下rsync,发现不存在了,即关闭了该服务。

二、www服务

1、www服务器的作用

重点在于提供一些数据,这些数据需要客户端的浏览器支持来显示出来。这些数据类型其实就是大部分的文件,因此需要在服务器端将文件写好,放置在指定目录下,这个目录就是整个网站的首页,一般来说阿帕奇一般的目录为var/www/html/,而浏览器如何取得这个目录内的数据呢?你必需要在浏览器的『网址列』输入所需要的网址才行。 这个网址就对应到 WWW 服务器的某个档案档名,在网址列输入正确的网址,这个网址格式如下:
 <协定>://<主机地址或主机名>[:port]/<目录资源>

其中,浏览器比较常支持的协议有 http, https, ftp, telnet 等等,首页目录下的相对位置就是这个目录资源,通常首页目录底下会有个特殊的文件名,例如 index.html 或 index.???,访问 http://linux.vbird.org 会发现其实与http://linux.vbird.org/index.php 是一样的! 这是因为 WWW 服务器会主动的以该目录下的『首页』来显示。

PS:一些其他概念

静态数据:服务器上放置的资源,仅向用户展示,而不会有任何的数据之间的互动;Apache 仅能提供最基本的静态网站数据,想要达成动态网站的话,那么还是需要 PHP 与 MySQL 的支持;

动态数据:和用户之间用数据上的互动,通过网页程序语言如PHP,来对MYSQL来进行数据的读写等;

PHP:一种程序语言,可以直接再HTML中编写,不需要经过编译即可进行程序的执行。

浏览器:除了窗口接口的浏览器软件之外,其实还有几个可以在文字接口底下进行浏览与网页下载的程序,分别是:links 与 lynx:文字接口的浏览器;wget:文字接口下使用来下载档案的指令;

2、服务端和客户端的数据传输方式

GET(从服务器端直接索取某些数据)  POST(向服务器端提交很多数据)  HEAD(服务器端响应给客户端一些数据文件头信息)  OPTIONS(服务器端响应给客户端一些允许的功能和数据)  DELETE

3、https

http协议上面传输的数据都是明码的,如果要加密则需要通过ssl加密机制(类似于前面ssh联机时的keypair来实现的加密)来进行。ssl机制最大的问题是公钥是任何客户端都可以取得的,因此若有钓鱼网站包装之后会迷惑用户。因此若服务器端产生一把密钥且制作出必要的凭证数据并向 CA 单位注册,那么在当客户端的浏览器在浏览时,该浏览器会主动的向 CA 单位确认该凭证是否为合法注册过的,如果是的话,那么该次联机才会建立,如果不是呢?那么浏览器就会发出警告讯息, 告知用户应避免建立联机。

在nginx中配置证书,如下:

(1)证书下载,是一个压缩文件,解压后得到两个文件,一个是公钥,一个是私钥,上传到家目录下指定位置root/ssllocal/;
(2)nginx配置证书
ssl on;
ssl_certificate /root/ssllocal/1_passport.wfx9.com_bundle.crt;   #这一行是公钥,指定位置
ssl_certificate_key /root/ssllocal/2_passport.wfx9.com.key;     #这一行是私钥,指定位置
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;                                                   #这几行直接粘贴即可;
(3)slb配置证书
在“监听-添加监听”中指定前端端口为443,后端端口自定义,然后选择证书,即可;

4、lamp

PHP 是挂在 Apache 底下执行的一个模块, 而我们要用网页的 PHP 读取 MySQL 时,你的 PHP 就得要支持MySQL 的模块才行!所以你至少需要底下几个软件:
  httpd (提供 Apache 主程序)
  mysql (MySQL 客户端程序)
  mysql-server (MySQL 服务器程序)
  php (PHP 主程序,含有给 apache 使用的模块)
  php-devel (PHP 的发展工具,这个与 PHP 外挂的加速软件有关)
  php-mysql (提供给 PHP 程序读取 MySQL 数据库的模块)

说明:现在一般使用PHP-FPM,这个功能更加强大,因为鸟哥的介绍中版本较旧,所以以php来介绍;

对于apache、mysql和php,其主要的配置文件及其他所需模块的文件都要有一些熟悉,这里暂时不做描述,详细参考《私房菜-服务器架设篇-20章-20.2.1》

几点要记录的东西:

(1)一般nginx中的httpd配置文件和server配置文件要分开,便于管理;

(2)php.ini为php的主要配置文件

配置文件的不同位置,功能作用也是不同的,需要谨慎写入内容;

三、各服务的基本命令

1、nginx

service  nginx  stop   停止nginx(一般均不需要重启nginx,检测语法后直接reload)

user/sbin/nginx  -t    检测nginx配置文件的语法

user/sbin/nginx  -s  reload    重新加载nginx,即重新启动nginx

2、tomcat

ps -ef |grep tomcat_test

kill -9  PID

sh  /usr/local/tomcat_test/bin/startup.sh     启动tomcat_test

ps -ef |grep tomcat_test 或者 netstat -ntlup |grep java   看是否启动;

tail -f -n  20  ./tomcat_test/logs/catalina.out     查看tomcat_test的日志文件catalina.out(其为tomcat的默认日志文件)

netstat  -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'  查看tomcat的tcp连接数及其状态

3、php

service php-fpm restart   重启php-fpm

4、mysql

service  mysqld  restart  重启mysql

及其他的一些mysqldump、设定用户及权限等命令

5、其他的一些常用命令

ps aux | awk -F ' ' '{print $3,$4,$5,$6,$11}'|sort -n -r -k 2 -t' '|head -10

-----注释:对ps aux列示出的所有文件,打印3,4,5,6,11列,并按照空格区分,按照第二列(内存大小)按照数字大小降序排列,显示前10行;

cat 20.log |awk -F '"' '{print $1}'| sort |uniq -c |sort -nr
cat 20.log |awk '{print $1}'| sort |uniq -c |sort -nr (默认指定空格为分隔符可不加-F)

----注释:这即是对日志进行处理,展示访问次数最多的IP(即第一行),并列出访问次数(uniq -c);该程序的执行过程为“显示出第一列并默认由小到大排序展示

出,然后显示出重复了多少次,然后再按照次数降序排列”


netstat -antpl |grep TIME_WAIT|awk  '{print $5}'| sort |uniq -c |sort -nr|head -10

----注释:这是对当前有TIME_WAIT的服务,按照第5列的重复次数降序排列;

原创粉丝点击