iMisty的技术栈

iMisty的技术栈

linux服务管理

889
2019-06-16

linux服务管理

linux服务管理总结

  • 开局一张图
    img

  • 常用服务的功能,服务器建议关闭一些无用的功能,开启的服务越少占用资源越少越稳定,被攻击的可能越小也就越安全

服务器优化的主要手段关闭掉不用的服务

系统的运行级别

img

运行级别命令

  • runlevel 查看运行级别命令

    • 输出 前一个运行级别 当前运行级别 N为空,代表直接进入当前级别
    • 若是直接由3进入5级别,代表进入图形化界面,若是缺少图形化界面的必要元素,会没有输出,输出在远程终端
  • init 运行级别 修改运行级别命令

    • int 0 关机
    • int 6 重启>这两种方式并不可靠 , shutdown -r now reboot
  • 系统默认运行级别 ,系统开机后直接进入哪个运行级别(不允许开机直接设置重启和关机)

    vim /etc/inittab  #在高版本这个文件被弱化

    # id:3:initdefault #设置系统开解的运行级别

服务的分类

  • 将不需要的服务关闭,视为服务端优化的重要手段
    img

  • 独立的服务:系统中绝大多数的服务都是独立的服务,独立运行在内存中,好处:有任何客户端访问服务都可以及时访问,响应的速度更快

  • xinetd 超级守护进程,基于xinetd服务,本身是一个独立的服务,xinetd本身占内存,其他的服务不占内存,用户访问逻辑如下

![img](https://gitee.com/iMist/Linux/raw/master/image2/image16.png)

> xinetd服务在现代的服务中越来越少,已经基本淘汰

#### 查询已安装的服务
  • rpm包安装的服务 chkconfig --list 查看服务自启动状态,可以看到所有rpm包安装的服务

    • 可以查看到独立服务的rpm包和基于xinetd的rpm包
    • 不可以查看基于源码包安装的服务 service/chkconfig/ntsysv 都不可以直接找到源码包服务,与源码包的安装位置有关
      img

    代表系统进入指定的系统运行级别的时候关闭该服务

  • 源码包安装的服务, 查看服务的安装位置,一般是/usr/local

    rpm包安装服务和源码包安装服务的区别就是安装位置的不同,rpm包默认位置,源码包 /usr/local,所以启动的方式也不宜这样

  • 查看基于xinetd的服务,需要先检查是否安装xinetd(yum -y install xinetd),然后使用chkconfig --list可以查看基于xinetd的服务

    • 在centos6中这个服务默认是没有安装的,基本淘汰
    • 自由rsync 这个服务比较常用,linux之间进行网络备份的服务

启动与自启动

  • 服务启动:就是在当前系统中让服务运行,并提供功能,

  • 服务自启动:自启动是指让服务在系统开机或者重启之后随着系统的启动而启动的服务

    chkconfig --list 查看服务的启动与自启动,直接查看对应的服务运行级别启动开启或者关闭即可(关注0和6),2345属于习惯级别,一般联合应用不再单独分开

服务与端口

  • 如果把ip比作一间房子,端口就是出入这间房子的门,一个IP地址的端口可以有65536(0-65535)个,
    img

    系统端口分为UDP和TCP端口各有65536个,但是系统防止用户弄混,在开启网页服务Apache的时候同时占用tcp和udp的80端口,

  UDP端口预留空出来
  • 虽然默认端口可以修改,但是网页访问的80端口,和文件传输的Ftp21端口不建议修改;若是服务是给客户端提供访问的不建议修改端口,22端口是只给管理员使用,用于远程访问的,建议修改,提高安全性

  • telnet 不安全的非明文的,不建议使用

  • SMTP邮件协议,用于邮件发送

  • DNS 介于tcp和udp之间,同时占用tcp和udp的53 端口

    服务与端口的对应

  • linux 系统中一般10000以内的端口是给系统预留的,超过一万的端口是给用户自由使用的

  • vim /etc/service 罗列常规端口的作用

    查询系统中开启的服务

  • 注意:并非所有的进程都会被检测到,非本用户的进程将不会被检测到,如果想要查看所有信息,需要切换到root用户

  • netstat -tlunp查看监听的端口

    • -t 列出tcp数据
    • -u 列出udp数据
    • -l 列出正在监听的网络服务(不包含已经连接的网络服务)
    • -n 用端口号来显示服务,而不是服务名
    • -p 列出该服务的进程id(pid)
  • netstat -an 可以看到正在连接的远程端口和地址

  • 会列出系统中的所有的已经启动的服务,和端口对应的服务,加上-p会列出端口对应的程序和pid

  • Recv-Q ,Send-Q 为0代表不繁忙 ,Listen 代表正在监听,Established代表正在连接

chkconfig --list 查看自启动服务,netstat -tlunp查看启动服务

独立的服务管理

usr 是Unix system resource ,即Unix系统资源目录的缩写

  • 源码包安装在 /usr/local rpm包安装在默认位置
  • rpm包安装的默认位置一般如下,但是有些特殊的服务会有点区别,若是有库文件会在/lib下,绝大多数如下

img

独立服务的启动

  • /etc/init.d/ 查看所有的独立服务名

  • /etc/init.d/独立服务名 start|stop|status|restart

  • /etc/rc.d/init.d 独立服务名 start|stop|status|restart 同样可以,主要是为了照顾管理员的习惯,老版本使用这种方式,现在使用软链接方式,实际完全一样

  • service 独立服务名 start|stop|status|restart

  • 注意:sevice并不是linux命令,只是Redhat为了管理方便单独开发的,只有在Redhat的相关发行版才有

建议源码包和rpm包采用不同的方式,不要直接将源码包安装在rpm包的默认目录

独立服务的自启动

  • chkconfig [--level 运行级别] [独立服务名] [on|off]
  • 第一种方法 在系统启动进入配置的级别的时候自启动指定的服务
   chkconfig --list |grep httpd
    chkconfig --level 2345 httpd  on # 通常2345 联合使用
    或者 chkconfig  httpd  on
  • 第二种方法 修改 /etc/rc.d/rc.local 文件,设置开机启动,和第一种方式冲突,设置完成之后chkconfig查看没有变化
  • touch /var/lock/subsys/local 修改文件的修改时间,如此就可以记录系统的启动时间
   vim /etc/rc.d/rc.local
    /etc/init.d/httpd start #开机启动

以上两种方法都可以实现自启动,但是只能选择一个,不然服务开机会启动两次,另外chkconfig 查看的服务很多,查看自启动文件方便些一目了然
当然,可以使用chkconfig --list |grep httpd过滤,显示自己关心的服务

  • 第三种方法,使用ntsysv命令自启动管理和第一种方法一样,都会生效

  • ntsysv 开启窗口界面 ,所有的rpm包安装的服务(独立和xinetd服务)都会显示出来,加上*,就会开机自启动,不加改为空格就会取消开机自启

这是readhat相关发行版专有命令,不能当做标准方法使用

基于xinetd的服务

  • 由于高版本基本废弃掉应用很少,这里省略掉

源码包服务管理

  • 源码包默认不能直接被 chkconfig,service ,ntsysv 管理,

    • 通常找到源码包的脚本在后面执行启动就行
    • 自启动:通常直接将启动脚本加入到 自启动文件中
  • 源码包安装服务得到启动

    • 使用绝对路径,调用脚本来启动,不同的源码包的启动脚本不同,可以查看源码包的安装说明,查看脚本启动的方法
    • /usr/local/apache2/bin/apachectl start|stop apache 源码包安装包的安装说明有对应的启动命令
    • /usr/local/apache2/htdocs/index.html 源码包Apache的默认主页,rpm包的默认主页在 /var/www/html/没有网页则显示测试页

apache 修改配置文件之后需要重新启动,但是修改页面不需要,直接刷新页面即可;

源码包的自启动

  • vim /etc/rc.d/rc.local 加入/usr/local/apache2/bin/apachectl start

让源码包的服务被服务管理命令识别(以apache服务为例)

  • 让源码包的apache服务能被service命令管理启动

    • 第一种方式 软链接方式 ln -s /usr/local/apache2/bin/apachectl /etc/init.d/apache

    • 第二种方式,直接将源码包安装的目录拷贝到/etc/init.d/apache的对应目录下
      img

      • 让源码包的apache服务能被chkconfig与ntsysv命令管理自启动

      • vim /etc/init.d/apachectl

        • chkconfig: 35 86 76 源码包的apache在3和5级别可以运行,指定httpd脚本可以被chkconfig命令管理。格式是 chkconfig : 运行级别 启动顺序 关闭顺序
      • description: source package apache 说明(相当于注释) 内容随意,但是必须要有

      • chkconfig --add apachectl 把源码包apache加入chkconfig命令

    • S开头代表开启,K开头代表结束

      img

    启动顺序和结束顺序可以任意写,但是不可以和当前已有的顺序重合;

额外补充

img

  • apache服务启动报错,并不影响正常启动,因为没有dns配合,并不能绑定到本机ip 127.0.0.1