源码安装Nginx以及用systemctl管理

本文详细介绍了如何从源码安装Nginx,并通过systemctl进行服务管理,包括创建配置文件、设置开机启动、启动、停止及重启服务等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、源码安装Nginx:

  • 先安装gcc编译器(安装过的可以忽略)

    [root@localhost ~]# yum -y install gcc gcc-c++ wget
    
  • 进入src目录

    [root@localhost ~]# cd /usr/local/src/
    
  • 下载 nginx软件包

    [root@localhost src]# wget http://nginx.org/download/nginx-1.14.0.tar.gz
    
  • 解压

    [root@localhost src]# tar -zxvf nginx-1.14.0.tar.gz
    
  • 进入nginx-1.14.0目录

    [root@localhost src]# cd nginx-1.14.0/
    
  • 安装依赖

    [root@localhost nginx-1.14.0]# yum -y install openssl openssl-devel
    
  • ./configure软件配置与检查

    [root@localhostnginx-1.14.0]#./configure--prefix=/usr/local/nginx --with-http_ssl_module
    
  • 安装

    [root@localhost nginx-1.14.0]# make
    [root@localhost nginx-1.14.0]# make install
    
  • 启动nginx

    [root@localhost nginx-1.14.0]#cd /usr/local/nginx/sbin
    [root@localhost nginx-1.14.0]#./nginx
    

    查看是否启动成功

    [root@localhost nginx-1.14.0]# ps aux |grep nginx    
    

二、systemctl管理:

  • 创建配置文件
    源码安装的nginx在/etc/systemd/system/multi-user.target.wants/目录下是没有nginx.service这个文件的,所以要新建

    [root@localhost nginx-1.14.0]#vim /usr/lib/systemd/system/nginx.service
    
  • 写入内容(全部复制进去,然后修改)

    [Unit]
    Description=nginx - high performance web server
    Documentation=http://nginx.org/en/docs/
    After=network-online.target remote-fs.target nss-lookup.target
    Wants=network-online.target
    
    [Service]
    Type=forking
    PIDFile=/var/run/nginx.pid
    ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
    ExecReload=/bin/kill -s HUP $MAINPID
    ExecStop=/bin/kill -s TERM $MAINPID
    
    [Install]
    WantedBy=multi-user.target
    
  • 修改 [Service]内容

     将:
         ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf,
     改为:
         ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
    
  • 设置开机启动

       [root@localhost nginx-1.14.0]# systemctl enable nginx.service
    
  • 关闭之前启动的nginx服务

       [root@localhost nginx-1.14.0]# pkill -9 nginx
    
  • 重载修改过的所有配置文件

        [root@localhost nginx-1.14.0]#systemctl daemon-reload
    
  • 重新启动nginx服务

        [root@localhost nginx-1.14.0]#systemctl start nginx
    

    最后可以用浏览器访问自己虚拟机的IP:192.168.xxx.xx

<think>首先,用户的查询是关于如何将源码编译安装的软件注册为systemctl服务管理。他们引用了几个内容,主要涉及Linux系统管理,尤其是与Nginx安装相关的。用户的问题:"我想将通过源码安装的软件添加到systemctl服务中以便管理请问如何将源码编译安装的软件注册为systemctl服务Linux"结合引用的内容,我需要基于用户的真实需求构建系统服务文件,使其可通过systemctl管理。引用内容关键点:-引用[1]:介绍二进制格式软件安装-引用[2]:源码安装的步骤,包括编译前准备-引用[3]:再次强调源码安装需编译环境和依赖-引用[4]:展示了如何为源码软件创建systemd服务单元文件(nginx.service作为示例),包括Unit、Service和Install部分配置。用户的实际需求是通过源码编译安装软件后,创建systemd服务单元使其可以被systemctl管理我的回答需结构化清晰,一步步指导,使用中文步骤概述:1.确认软件编译安装完成2.编写.service文件3.放置该文件至正确目录4.重载systemd5.启用启动服务基于引用[4],以nginx为例详细说明准备回答结构:标题明确:将源码安装的软件注册为systemctl服务分步说明,每步简洁明了在适当地方添加代码块最后根据要求生成相关问题,以引用标识结尾使用正确格式:数学表达式或代码使用相应LaTeX格式,这里主要是命令行和配置文件内容独立代码块使用```包围,标注语言如bash或ini行内代码或路径用$...$或`...`包裹由于无数学公式,可忽略$...$,重点在于命令行和配置文件确保LaTeX语法正确,但在回答中主要为文本和代码块回答问题后自然生成相关问题回答步骤指南:a.先总结整体流程b.分步骤详细解释,如:-步骤1:安装软件-步骤2:创建服务文件-步骤3:配置.service文件内容-步骤4:放置文件到/etc/systemd/system/-步骤5:systemctl重载与操作服务c.使用Nginx作为示例,参考引用[4]d.代码块展示具体命令和文件内容生成相关问题:基于主题提问,如systemd服务配置常见问题、维护等确保3-5个问题完整回答框架:###如何将源码编译安装的软件注册为systemctl服务简要介绍systemd和.service文件的重要性####步骤1.确保软件已正确编译安装2.创建.service文件-用编辑器创建文件-内容基于引用[4]模板3..service文件放置到systemd目录4.重载systemd配置5.启用启动服务提供示例Nginx.service文件内容####注意事项如文件权限、ExecPath等§§相关问题§§1....2....3....参考引用在文本中自然添加,如"参考引用[^4]的服务文件示例"最后,确保语言自然流畅,中文回答</think> ### 如何将源码编译安装的软件注册为systemctl服务 在Linux系统中,通过源码编译安装的软件默认不会被systemctl管理。需手动创建systemd服务单元文件(`.service`文件),以使其支持`systemctl`命令。以下是基于引用[^4]的完整步骤指南(以Nginx为例): #### **步骤1: 确保软件已正确编译安装** - 源码安装的软件需已完成编译和安装(包括路径配置)。 例如Nginx,编译后通过`make && make install`安装至默认路径如`/usr/local/nginx/`。 引用[^2]和[^3]强调需先安装依赖: ```bash sudo yum install gcc pcre-devel zlib-devel openssl-devel -y # CentOS/RHEL # 或 sudo apt-get install build-essential libtool automake autoconf -y # Debian/Ubuntu ``` #### **步骤2: 创建systemd服务文件** - 新建`.service`文件(例如`nginx.service`),内容基于引用[^4]的模板修改: ```ini [Unit] Description=My Software Service # 服务描述(替换为软件名称) After=network.target # 依赖项(常用network.target) [Service] Type=forking # 适用于后台进程 PIDFile=/run/software.pid # PID文件路径(替换为实际路径) ExecStart=/path/to/software/bin/start-command # 启动命令(替换为软件实际路径) ExecReload=/path/to/software/bin/reload-command # 重载命令(可选) ExecStop=/path/to/software/bin/stop-command # 停止命令(可选) PrivateTmp=true # 启用独立临时目录 Restart=on-failure # 失败时自动重启 [Install] WantedBy=multi-user.target # 多用户模式下启用 ``` **关键参数说明**: - `PIDFile`: 软件运行时生成的PID文件路径(通过软件文档或进程查看命令如`ps aux | grep software`确定)。 - `ExecStart`: 软件启动命令的完整路径(源码安装的二进制文件通常在`/usr/local/bin/`或编译目录的`bin/`子目录)。 - 若不支持`forking`类型,可尝试`simple`(适用于前台进程)。 #### **步骤3: 放置.service文件设置权限** - 将文件复制到systemd系统目录: ```bash sudo cp nginx.service /etc/systemd/system/software.service # 替换software为服务名 sudo chmod 644 /etc/systemd/system/software.service # 设置文件权限 ``` #### **步骤4: 重载systemd配置启用服务** ```bash sudo systemctl daemon-reload # 重载配置 sudo systemctl enable software # 开机自启 sudo systemctl start software # 立即启动服务 sudo systemctl status software # 验证状态 ``` #### **示例: Nginx源码安装的服务配置** - 若Nginx安装路径为`/usr/local/nginx/sbin/nginx`: ```ini [Service] Type=forking PIDFile=/run/nginx.pid ExecStart=/usr/local/nginx/sbin/nginx ExecReload=/usr/local/nginx/sbin/nginx -s reload ExecStop=/usr/local/nginx/sbin/nginx -s stop ``` #### **常见问题与注意事项** 1. **PIDFile路径错误**:若软件不自动生成PID文件,可在`.service`中使用`ExecStartPre`手动创建。 2. **命令权限不足**:确保`ExecStart`命令对`systemd`用户可执行(避免使用`sudo`)。 3. **环境变量**:若需特殊环境,在`[Service]`中添加`Environment="VAR=value"`。 4. **调试日志**:通过`journalctl -u software.service -f`查看实时日志。 > **引用说明**:上述步骤基于源码安装软件的管理需求,参考了systemd服务文件的标准结构[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MisterZZL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值