背景

  • nginx是开源的web服务器, 性能与可配置性和插件做的非常完善.
  • 可以使用简单的命令拉起来nginx进行服务提供,但是有时候需要使用keepalive等软件实现保活,以及实现开启启动等,比较繁琐一些.
  • IPV4 外网资源比较昂贵,也比较缺少, 所以有时候很多客户,需要同一个外网IP地址对应多个服务,提供多种不同的服务供大家访问.
  • nginx的配置文件比较简介,但是还需要万分注意.

设置systemd作为后台服务

  • 前期已经写过很多blog说明systemd脚本的编写方法
  • 举例一个最简单的服务脚本为:
cat /etc/systemd/system/nginx.service
[Unit]
Description=nginx [Service]
Type=forking
ExecStart=/data/nginx/nginx -c /data/nginx/nginx.conf
Restart=always
LimitNOFILE=64000 [Install]
WantedBy=multi-user.target

systemd参数说明

  • unit指名本服务的服务单元, 可以使用 journalctl -xe -u nginx 的命令来查看具体的操作日志.
  • Service 是核心配置, 里面包含多种命令参数
  • ExecStart 指名服务启动时需要执行的命令, 比如这个简单脚本里面就是 /data/nginx/nginx -c /data/nginx/nginx.conf 使用编译好的二进制 直接关联 配置文件来启动.
  • Restart 指代 服务异常关闭后的处理, 设置为 always 会自动再将服务拉起来, 只要systemd的进程不死, 会一直尝试启动nginx的服务.
  • Type 参照别人的文章

systemd参数说明

Type=oneshot
这一选项适用于只执行一项任务、随后立即退出的服务。可能需要同时设置 RemainAfterExit=yes
使得 systemd 在服务进程退出之后仍然认为服务处于激活状态。 Type=notify
 与 Type=simple 相同,但约定服务会在就绪后向 systemd 发送一个信号。这一通知的实现由 libsystemd-daemon.so 提供。 Type=dbus
若以此方式启动,当指定的 BusName 出现在DBus系统总线上时,systemd认为服务就绪。 Type=idle systemd
会等待所有任务处理完成后,才开始执行 idle 类型的单元。其他行为与 Type=simple 类似。 Type=forking systemd
认为当该服务进程fork,且父进程退出后服务启动成功。对于常规的守护进程(daemon),除非你确定此启动方式无法满足需求,使用此类型启动即可。
使用此启动类型应同时指定 PIDFile=,以便 systemd 能够跟踪服务的主进程 Type=simple
(默认值) systemd认为该服务将立即启动。服务进程不会 fork 。
如果该服务要启动其他服务,不要使用此类型启动,除非该服务是socket 激活型。

启动多个服务的方式来提供多种服务

  • 有时候nginx服务器的资源比较有限,可能需要同时提供给多个项目组环境使用, 这种情况下有两种方式来提供, 第一种是多端口的方式, 第二种时多vhost的方式, 各有优缺点, 这里先讲解一下多端口的方式
  • 多端口的方式有一个比较大的好处, 不通的nginx服务之间是互相隔离的, 可以关闭一个nginx 而不影响其他人, 如果有某个项目组写错了配置文件, 启动不起来, 也仅仅影响写错模块的功能,不会有全局性的问题.
  • 多端口的缺点就是管理起来稍显复杂一些. 需要记住具体的端口信息等, 监控起来也比较繁琐.

启动多个服务的方式来提供多种服务

  • 方法简介 (本文以/data/nginx 作为工作目录来说明)
方法分五步:
第一步: 在/data/nginx/ 下面添加新的nginx配置文件. 比如添加一个 nginx88.conf.指代新端口.
第二步: 在/etc/systemd/system 的目录下复制一份 nginx.service 比如复制为 nginx88.service
第三步: 修改 nginx88.service 里面的 ExecStart=/data/nginx/nginx -c /data/nginx/nginx88.conf
设置指向一个新的配置文件.
第四步: systemctl enable nginx88 && systemctl restart nginx88
第五步: 验证 ip:88 端口是否可用.

启动多个vhost的方式来提供多种服务

  • nginx一个很优秀的特性是可以实现在一个出口ip的情况下实现多域名绑定.
  • nginx的多vhost的访问有两种方式进行处理
第一种: 在nginx.conf 里面直接进行修改.
可以在http的配置节下面进行处理,添加server的配置节,比如我添加如下
server {
listen 777;
server_name zhaobsh001.com;
location / {
root html001;
index index.html index.htm;
}
}
server {
listen 777;
server_name zhaobsh002.com;
location / {
root html002;
index index.html index.htm;
}
}
注意: 需要与配置文件之前已经有的 server同级.
注意: 可以修改/data/nginx/目录下 添加html001和html002 等目录,修改title的内容进行打开验证
注意: 可以修改c:\windows\system32\drivers\etc\hosts文件进行指向.
注意: 设置完成后就可以使用 zhaobsh001.com:777 与 zhaobsh002.com:777 进行比较验证
这种方式可以实现 多vhost的绑定.

启动多个vhost的方式来提供多种服务

  • 第二种方式是使用include的语法
可以在 /data/nginx/nginx.conf 内部添加 include conf.d/*.conf ; 的命令来添加vhost的配置.
注意 可以先期创建目录 /data/nginx/conf.d
注意 可以在内部添加两个配置文件, 比如 zhaobsh003.conf和zhaobsh004.conf
并且与 zhaobsh001 一样也在 /data/nginx 目录下添加一个html003以及html004的配置文件便于验证.
注意与在nginx.conf 里面的配置一样. conf.d 下面的配置文件也只需要添加一个 server的配置节段即可.
如下所示.
-rw-r--r-- 1 root root 178 10月 31 23:47 zhaobsh003.conf
-rw-r--r-- 1 root root 178 10月 31 23:47 zhaobsh004.conf
[root@gscloudink8s conf.d]# pwd
/data/nginx/conf.d
注意: 文件内容也比较简单
[root@gscloudink8s conf.d]# cat zhaobsh003.conf
server {
listen 777;
server_name zhaobsh003.com;
location / {
root html003;
index index.html index.htm;
}
}

启动多个服务的方式来提供多种服务

  • systemctl restart nginx 重启服务
  • 修改hosts指向后, 直接打开浏览器进行验证 我这边只举一个例子.

使用systemd管理多nginx服务以及单nginx服务实现多vhost访问的操作步骤的更多相关文章

  1. linux任务计划 chkconfig工具 systemd管理服务 unit介绍 target介绍

    linux任务计划 任务计划:特定时间备份数据,重启服务,shell脚本,单独的命令等等. 任务计划配置文件:cat /etc/crontab [root@centos7 ~]# cat /etc/c ...

  2. 简述systemd的新特性及unit常见类型分析、使用systemd管理编译安装的nginx

    1. systemd新特性 并行处理(同时启动)所有服务. 基于依赖关系定义的服务控制逻辑 系统状态快照 按需激活进程,只有第一次被访问时才会真正启动: 2. systemd的常见unit类型 Ser ...

  3. linux任务计划cron、chkconfig工具、systemd管理服务、unit和target介绍

    第8周第1次课(5月14日) 课程内容: 10.23 linux任务计划cron10.24 chkconfig工具10.25 systemd管理服务10.26 unit介绍10.27 target介绍 ...

  4. Linux 使用 Systemd 管理进程服务

    转载自:https://mp.weixin.qq.com/s/e-_PUNolUm22-Uy_ZjpuEA systemd 介绍 systemd是目前Linux系统上主要的系统守护进程管理工具,由于i ...

  5. systemd管理nginx

    首先安装nginx,此处不做赘述. 保存以下内容到/lib/systemd/system/nginx.service文件. [Unit] Description=The NGINX HTTP and ...

  6. Linux centos7 linux任务计划cron、chkconfig工具、systemd管理服务、unit介绍、 target介绍

    一.linux任务计划cron crontab -u  -e -l -r 格式;分 时 日 月 周 user command 文件/var/spool/corn/username 分范围0-59,时范 ...

  7. 编译安装nginx,并使用systemd管理nginx

    #tar zxvf nginx-1.8.1.tar.gz #cd nginx-1.8.1/ #make && make install #cat /etc/systemd/system ...

  8. Linux:使用systemd管理进程

    Blog:博客园 个人 概述 systemd是目前Linux系统上主要的系统守护进程管理工具,由于init一方面对于进程的管理是串行化的,容易出现阻塞情况,另一方面init也仅仅是执行启动脚本,并不能 ...

  9. Centos6.5 设置Tomcat8 service服务实现自启动和服务管理

    Centos6.5 设置Tomcat8 service服务实现自启动和服务管理 将tomcat设置成像apache,nginx一样. 用serviec xxxx start/stop/restart ...

  10. CentOs7下systemd管理知识要点

    centOs7的一个巨大的变动就是用systemd取代了原来的System V init.systemd是一个完整的软件包,安装完成后有很多物理文件组成,大致分布为,配置文件位于/etc/system ...

随机推荐

  1. 关于Spring注解开发教程,打包全送你

    摘要:spring是我们web开发中必不可少的一个框架,基于传统的xml方式配置bean总觉得太过繁琐,从spring2.5之后注解的出现可以大大简化我们的配置. 本文分享自华为云社区<如何高效 ...

  2. vue2.x老项目typescript改造过程经验总结

    前言: 关于Vue2.x 的TS改造,其实没有啥好说的. 对于vue-cli项目来说,从新跑一遍 vue create xxx-project ,选择Manually select features ...

  3. 原来的 service 命令与 systemctl 命令对比

    service [服务] start       systemctl start [unit type] 启动服务 #启动网络服务  systemctl start network.servicese ...

  4. 火山引擎DataTester:一个爆款游戏产品,是如何用A/B测试打磨出来的?

    随着国内游戏用户数量趋于饱和,中国游戏产业也从高速成长期逐渐转型,市场成熟度提升,竞争趋于精细化. 随着游戏出海以及私域流量运营的挑战,游戏企业对数据分析的使用需求和依赖度进一步提高.而在游戏研发立项 ...

  5. 火山引擎 VeDI 推出这款产品 助力企业实现以“人”为中心的数据洞察

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 CDP(Customer Data Platform,客户数据平台)市场将迎来新一轮的高速增长. 国际数据公司(以 ...

  6. ElasticSearch 实现分词全文检索 - Java SpringBoot ES 索引操作

    目录 ElasticSearch 实现分词全文检索 - 概述 ElasticSearch 实现分词全文检索 - ES.Kibana.IK安装 ElasticSearch 实现分词全文检索 - Rest ...

  7. 41. 干货系列从零用Rust编写负载均衡及代理,websocket与tcp的映射,WS与TCP互转

    wmproxy wmproxy已用Rust实现http/https代理, socks5代理, 反向代理, 静态文件服务器,四层TCP/UDP转发,七层负载均衡,内网穿透,后续将实现websocket代 ...

  8. svelte响应式原理

    svelte文件编译为js后的结构 源代码: <script lang="ts"> let firstName = '张' let lastName = '三' let ...

  9. HDU--1166--单点更新

    敌兵布阵 HDU - 1166 多组输入,注意清除tr数组 维护一个前缀数组,耗时有点大 #include <cstdio> #include <cstring> using ...

  10. scrollIntoView页面滑动特效

    点击左侧的菜单,页面平滑滚动: