美文网首页
源码安装,系统服务

源码安装,系统服务

作者: 快去学习不然怎么去看aimer | 来源:发表于2019-08-01 08:58 被阅读0次

    源码安装

    以Nginx为例:
    1.准备编译环境

    yum  -y  groupinstall  "Development Tools"  安装开发工具包
    

    2.解决软件自身依赖

    yum -y install pcre pcre-devel zlib-devel openssl-devel  下载软件依赖
    

    3.下载并解压

    wget http://nginx.org/download/nginx-1.16.0.tar.gz  在线到该网址下载nginx,得到nginx.tar.gz
    tar -xf nginx.tar.gz -C /usr/loacl/src/      将该包解到该目录
    

    4.进行配置

    ./configure \
    --prefix=/usr/local/nginx \
    --with-http_stub_status_module \
    --with-http_sub_module \
    --with-http_ssl_module \
    --with-pcre                                            安装路径,user,group等的配置
    

    5.编译安装

    make && make install 
    

    6.启动nginx

    /usr/local/nginx/sbin/nginx               
    

    7.遇到端口被占用的问题时

    vim /usr/local/nginx/conf/nginx.conf
    listen               80   =====>   8000               将监听端口80改为8000
    

    系统服务

    jobs -l 查看后台进程进程号与工作号
    echo $$ 查看当前bash的进程号
    ctrl+z 放到后台并停止
    bg %1 在后台执行
    fg %1 拿到前台 (1为工作号)
    sh a.sh & 直接在后台工作

    daemon 守护进程

    管理长期存放于内存中服务的进程叫守护进程,在 CentOS7中是systemd,CentOS5/6是init

    init的执行等级:
    0 关机
    1 单用户模式(root)
    3 带网络服务的多用户纯文本模式
    5 图形界面
    6 重启

    daemon的配置文件存放目录

    /usr/lib/systemd/system/
    每个服务最主要的启动脚本设置,有点类似以前的 /etc/init.d 下面的文件
    /run/systemd/system/
    系统执行过程中所产生的服务脚本,这些脚本的优先序要比 /usr/lib/systemd/system/ 高
    /etc/systemd/system/
    管理员依据主机系统的需求所创建的执行脚本,其实这个目录有点像以前 /etc/rc.d/rc5.d/Sxx 之类的功能!执行优先序又比 /run/systemd/system/ 高

    systemd服务类型

    systemd 的 unit 类型分类说明
    一个服务执行的脚本就成为一个 unit (服务单位)

    通过扩展名区分 unit 的类型
    .service 一般服务类型 (service unit)
    主要是系统服务,包括服务器本身所需要的本机服务以及网络服务都是!比较经常被使用到的服务大多是这种类型! 所以,这也是最常见的类型了

    .socket 内部程序数据交换的 socket 服务 (socket unit)
    主要是 IPC (Inter-process communication) 的传输讯息 socket file 功能。 一般用于本机服务比较多,例如我们的图形界面很多的软件都是通过 socket 来进行本机程序数据交换的行为

    .target 执行环境类型 (target unit)
    其实是一群 unit 的集合,例如 multi-user.target 其实就是一堆服务的集合~也就是说, 选择执行 multi-user.target 就是执行一堆其他 .service 或/及 .socket 之类的服务

    .mount .automount 文件系统挂载相关的服务 (automount unit / mount unit)
    例如来自网络的自动挂载、NFS 文件系统挂载等与文件系统相关性较高的程序管理

    .path 侦测特定文件或目录类型 (path unit)
    某些服务需要侦测某些特定的目录来提供队列服务,例如最常见的打印服务,就是通过侦测打印队列目录来启动打印功能! 这时就得要 .path 的服务类型支持了

    .timer 循环执行的服务 (timer unit)
    这个东西有点类似 anacrontab 喔!不过是由 systemd 主动提供的,比 anacrontab 更加有弹性

    但是我们是通过systemctl来管理服务的
    格式: systemctl [command] [unit]
    command包括:
    status :查看这个 unit 的状态!
    start :立刻启动
    stop :立刻停止
    restart :先执行 stop 再执行 start 的意思
    enable :设置下次开机时,启动后面接的 unit
    disable :设置下次开机时,不启动后面接的 unit
    reload :不关闭后面接的 unit 的情况下,重新载入配置文件,让设置生效

    服务的活动状态:
    active (running):正在运行
    active (exited):仅执行一次就正常结束的服务,目前并没有任何程序在系统中执行。 举例来说,开机或者是挂载时才会进行一次的 quotaon 功能,就是这种模式!(无须常驻内存)。
    active (waiting):正在执行当中,不过还再等待其他的事件才能继续处理。举例来说,打印的队列相关服务就是这种状态!
    inactive:这个服务目前没有运行的意思。

    关于daemon (服务) 的默认状态
    enabled:这个 daemon 将在开机时被执行
    disabled:这个 daemon 在开机时不会被执行
    mask:这个 daemon 无论如何都无法被启动!因为已经被强制注销 (非删除)。可通过 systemctl unmask 方式改回原本状态
    static:这个 daemon 不可以自己启动 (enable 不可),不过可能会被其他的 enabled 的服务来唤醒 (相依属性的服务)
    systemctl mask cups.service 强制注销
    systemctl unmask cups.service 取消注销

    systemctl [command] [unit.target]
    command:
    {
    get-default :查看默认的 target
    set-default :设置后面接的 target 成为默认的模式
    isolate :切换到后面接的模式
    }

    unit.target:
    {
    graphical.target
    就是文字加上图形界面,这个项目已经包含了下面的 multi-user.target 项目!
    multi-user.target
    纯文本模式!
    rescue.target
    救援模式!在无法使用 root 登陆的情况下,systemd 在开机时会多加一个额外的暂时系统,与 你原本的系统无关。这时你可以取得 root 的权限来维护你的系统。 但是这是额外系统,因此可能需要动到 chroot 的方式来取得你原有的系统!自修
    emergency.target
    紧急处理系统的错误,还是需要使用 root 登陆的情况,在无法使用 rescue.target 时,可以尝试使用这种模式!
    shutdown.target
    就是关机的流程。
    getty.target
    可以设置你需要几个 tty 之类的,如果想要降低 tty 的数量,可以修改这个东西的配置文件!
    }

    head  -50   /etc/services    系统服务和端口
    

    添加自定义服务到 systemd

    以nginx为例
    1.创建nginx.service文件

    vim /etc/systemd/system/nginx.service 
    

    2.添加自定义选项

    [Unit]
    Description=nginx
    
    [Service]
    Type=forking
    ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
    ExecStop=/usr/local/nginx/sbin/nginx -s stop
    
    [Install]
     WantedBy=multi-user.target
    

    3.重新加载服务

    systemctl daemon-reload
    

    4.停止nginx

    /usr/local/nginx/sbin/nginx -s stop
    

    5.启动服务

    systemctl start nginx.service
    

    相关文章

      网友评论

          本文标题:源码安装,系统服务

          本文链接:https://www.haomeiwen.com/subject/pljorctx.html