源码包Apache和Nginx的启动方式

源码包Apache和Nginx的启动方式,第1张

源码包Apache和Nginx的启动方式

Nginx源码包

使用绝对路径

启动服务:/usr/local/nginx/sbin/nginx

强制停止服务:/usr/local/nginx/sbin/nginx -s stop

重载服务:/usr/local/nginx/sbin/nginx -s reload  (类似于重启.但服务不会终止)

验证配置文件语法错误: /usr/local/nginx/sbin/nginx -t

创建软连接方式启动

可以使用绝对路径方式启动

ln -s /usr/local/nginx/sbin/nginx  /usr/bin/

 echo $PATH    执行的所有命令都要在这里的路径去查找  

  [root@localhost ~]# echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

启动服务:nginx

强制停止服务:nginx -s stop

重载服务:nginx -s reload  (类似于重启.但服务不会终止)

验证配置文件语法错误: nginx -t

开机自启动

vim /etc/rc.d/rc.local      /etc/rc.local是他的软连接修改那个都一样

写入/usr/local/nginx/sbin/nginx

chmod +x  /etc/rc.d/rc.local  多了一步添加可执行权限

受service管理

(仅实现启停.不能实现自启动)

vim /etc/init.d/nginx   粘贴脚本内容

chmod +x /etc/init.d/nginx

实现  start,stop,restart,reload

#!/bin/bash

#Author:yh

#chkconfig: 2345 99 33

#description: nginx server control tools

ngxc="/usr/local/nginx/sbin/nginx"

ngxc_fpm="/usr/local/php/sbin/php-fpm"

case "$1" in

    start)

        $ngxc -t &> /dev/null

        if [ $? -eq 0 ];then

                $ngxc

                $ngxc_fpm

                echo "nginx service start success!"

        else

                $ngxc -t

        fi

        ;;

    stop)

        $ngxc -s stop

        killall php-fpm

        echo "nginx service stop success!"

        ;;

    restart)

        $0 stop

        $0 start

        ;;

    reload)

        $ngxc -t &> /dev/null

        if [ $? -eq 0 ];then

                $ngxc -s reload

                pkill -HUP php-fpm

                echo "reload nginx config success!"

        else

                $ngxc -t

        fi

        ;;

    *)

        echo "please input stop|start|restart|reload."

        exit 1

esac

设置源码包受systemctl管理

(实现服务启停,自启动)

systemctl命令会查询 服务的启动脚本  /usr/lib/systemd/system 

  所以现在需要写一个nginx.service 放在脚本下边

  1. vim /usr/lib/systemd/system/nginx.service    (启动的名称而已.统一写法)

[Unit]            

Description=nginx                  #描述信息

After=network.target               #网卡启动成功后,启动nginx  优化选项

[Service]

Type=forking                     #优化选项

ExecStart=/usr/local/nginx/sbin/nginx

ExecReload=/usr/local/nginx/sbin/nginx -s reload

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

PrivateTmp=true                    #优化选项

[Install]

WantedBy=multi-user.target       #启动依赖字符界面,适用于(字符以及图形化,包含关系)

  1. 让systemctl识别

   systemctl daemon-reload

3) 添加成功  受systemctl 管理

  systemctl start nginx.service      查看端口

  1. 实验自启动

  systemctl enable nginx.service (实际上是通过命令的方式,创建了一个服务启动脚本)

自启动目录 /etc/systemd/system/multi-user.target.wants/ 下自动生成了nginx.service

有则证明生效

systemctl is-enabled  nginx.service

systemxtl管理服务:

基本上服务的管理都是通过systemct命令来完成的。systemtl:管理服务状态,开机是否启动等。

格式:

start:stop:restart:

reload:不关闭服务的情况下,重新读取服务配置文件。

enable:开机启动。disable:开机不启动。

status:查看指定服务状态。  有服务部分日志信息

is-enabled:查看指定服务是否为开机启动。enabled启动/disabled不启动

重启Nginx时遇到下列错误

nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)
解决方法:

/usr/local/nginx/sbin/nginx -c/usr/local/nginx/conf/nginx.conf

nginx -c 路径 (服务启动准备与-t 相似)

apache 源码包 受service管理

(实现service管理,start|stop|restart|configtest)

cd /etc/init.d/

vim apached   chmod +x apached

#!/bin/bash

httpd=/usr/local/apache2/bin/apachectl

case $1 in

start)

    $httpd start

    ;;

stop)

    $httpd stop

    ;;

restart)

$0 stop

sleep 0.05

    $0 start

;;

configtest)

$httpd -t

;;

*)

    echo "usage: $0 start|stop|restart|configtest."

    ;;

esac

服务启停

使用绝对路径

# /usr/local/apache2/bin/apachectl stop     

# /usr/local/apache2/bin/apachectl start

注意:没有-s,reload有-t检查

创建软连接方式启动

可以使用绝对路径方式启动

ln -s /usr/local/apache2/bin/apachectl /usr/bin/

启动服务:apachectl

验证配置文件语法错误: apachectl -t

rpm包安装httpd

自然受systemctl 管理

小结

源码包安装nginx

只是更加习惯用软连接方式,有固定的启动方式,service管理方式也很好

nginx -s stop

源码包安装apache

由于软连接后 不习惯 /usr/local/apache2/bin/apachectl

(apachectl stop) 所以习惯用service 管理,更偏向使用习惯而已

拓展:centos6

service 以及chkconfig  服务启停和自启动管理命令是分开的

查询已经安装的服务和区分服务

Chkconfig  列出所有服务自启动状态

Chkconfig --list  相同    (列出RPM包默认安装服务)

Chkconfig --list sshd 列出指定服务自启动状态

Chkconfig --list | grep sshd

RPM包默认安装的服务管理

        服从service 以及chkconfig自启动管理

两种启动方式管理
  1. /etc/init.d/目录的启动脚本,如/etc/init.d/sshd start  (利用启动目录脚本帮忙启动)
  2. service sshd start      (本身受service管理)
两种自启动管理
  1. 格式:  chkconfig --level 级别35 httpd服务名  on|off
  2. 修改配置文件 /etc/rc.d/rc.local
  3. /etc/rc.local是他的软连接

例: vim /etc/rc.d/rc.local  

   可以看到  第一个文件是存在的  表示开机时间戳  与w开机时间做对比

  可以将/etc/init.d/httpd  start  写入其中

  关闭chkconfig 自启动管理   reboot看效果

结论:  自启动谁生效问题

 自启动服务配置文件如果写入服务  优先     不论chkconfig是否开启

自启动服务配置文件如果不写东西  按照 chkconfig管理自启动

基于xinetd服务管理

看ls /etc/xinetd.d/  有没有这个目录或目录下有没有服务

有服务说明是受xinetd管理     

这种管理方式少用了,,因为多了一个服务管理服务,降低了效率

1  安装 xinetd    yum本地安装

2  vim /etc/xinetd.d/rsync

怎么改是重点

将disable(开机不启动)=yes     更改为no

3 启动service xinetd restart         表示重启rsunc服务交给了xinetd服务执行

自启动 chkconfig  rsync(服务名) on|off     不需要指定级别 xinetd帮助管理

 可以对比

   Chkconfig --list xinetd Chkconfig --list rsync

看到xinetd 有自启动级别显示,,,,而rsync不显示自启动级别

注意区别:centos6中rsync安装后受xinetd 管理

         在centos7中rsyns安装后是独立的,受systemctl管理

源码包 apache

启动:  /usr/local/apache/bin/apachectl          源码包启动不需要加start

停止  /usr/local/apache/bin/apachectl   stop

自启动: vim /etc/rc.local  加入到配置文件内

需要设置

源码包受service管理方式

  1. 设置软连接

 Ln -s /usr/local/apache/bin/apachectl   /etc/init.d/apache

    原理:service命令本身是在/etc/init.d/目录下是否有启动脚 将他指向真正的启动位置

注意这个设置的名称,就是相应服务启动的名称

启动:service apache start       此时源码包设置成功受service管理

源码包受chkconfig管理自启动方式

  1. Vim /etc/init.d/apache 

   第二行第三行写入:

#chkconfig:35 86 76

#description:source package apache           这里的apache是自带的

  1. chkconfig --add apache
  2. Chkconfig --list apache      这里就可以用chkconfig 管理了

  测试chkconfig --level 35 apache off|on

  检查vim /etc/rc.d/rc.local   没有自启动

 Reboot 检测 80端口开启,自启动由chkconfig控制

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4964726.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-13
下一篇 2022-11-13

发表评论

登录后才能评论

评论列表(0条)

保存