Nginx基础(05)

Nginx基础(04)

制作 Nginx的RPM包

  • 应用场景
    • 官方未提供RPM
    • 官方RPM无法自定义
    • 大量源码包 , 希望提供统一的软件管理机制
  • 软件打包流程
    • 准备源码软件
    • 安装rpm-bulid
    • 编写编译配置文件
    • 编译RPM包
安装rpm-build
1) 安装rpm-build软件包

yum -y install rpm-build

2) 生成rpm-build目录结构
rpmbuild -ba nginx.spec                #会报错,没有文件或目录
ls /root/rpmbuild                    #自动生成的目录结构
    BUILD  BUILDROOT  RPMS  SOURCES  SPECS  SRPMS
3) 准备工作 , 将源玛软件复制到 SOURCES 目录

​ [root@web1 ~]# cp nginx-1.22.1.tar.gz /root/rpmbuild/SOURCES/

4) 创建并修改SPEC配置文件
    [root@web1 ~]# vim /root/rpmbuild/SPECS/nginx.spec 
    Name:nginx                                      #源码包软件名称
    Version:1.22.1                                #源码包软件的版本号
    Release:    10                                #制作的RPM包版本号
    Summary: nginx is a web server software.        #RPM软件的概述    
    License:GPL                                        #软件的协议
    URL:    www.test.com                                    #网址
    Source0:nginx-1.22.1.tar.gz                   #源码包文件的全称
    #BuildRequires:                            #制作RPM时的依赖关系
    Requires:    pcre-devel  openssl-devel       #安装RPM时的依赖关系
    %description
    nginx is an HTTP and reverse proxy server.    #软件的详细描述
    %post
    useradd nginx                    #非必需操作:安装后脚本(创建账户)
    %prep
    %setup -q                          #自动解压源码包,并cd进入目录
    %build
    ./configure
    make %{?_smp_mflags}
    %install
    make install DESTDIR=%{buildroot}
    %files
    %doc
    /usr/local/nginx/*                    #对哪些文件与目录打包
    %changelog
使用配置文件创建RPM包
1) 安装依赖软件包

yum -y install gcc pcre-devel openssl-devel

2) rpm-build 创建RPM软件包
rpmbuild -ba /root/rpmbuild/SPECS/nginx.spec
ls /root/rpmbuild/RPMS/x86_64/nginx-1.22.1-10.x86_64.rpm
安装软件
yum install /root/rpmbuild/RPMS/x86_64/nginx-1.22.1-10.x86_64.rpm 
rpm -qa |grep nginx
ls /usr/local/nginx/

VPN

  • VPN 虚拟专用网络

    • 在 公用网络上 建立 专用私有网络 , 进行加密通讯

    • 多用于为及图啊公司的各地子公司建立连接

    • 连接完成后 , 各个地区的子公司可以像局域网一样通讯

    • 在企业网络中有广泛应用

    • 偶尔可以用于翻墙

    • 目前主流的VPN技术 ( GRE , PPTP , L2TP+IPSec , SSL )

配置 GRE VPN

GRE 模块
  • Linux内核模块

    • ip_gre
  • 加载模块

    • lsmod | grep ip_gre
  • modprobe ip_gre

    • modinfo ip_gre
  • 缺点 : 缺少加密机制

  • GRE VPN 环境

    • 启用内核模块 ip_gre
    • 创建一个VPN隧道
    • 实现两台主机点到点的隧道通讯
  • 方案

    • 使用 lsmod 查看当前计算机已经加载的模块

    • 使用 modprode 加载 Linux内核模块

    • 使用 modinfo 可以查看内核模块的信息

1. 启用GRE模块
1) 查看计算机当前加载模块
    [root@web1 ~]# lsmod                        #显示模块列表
    [root@web1 ~]# lsmod  | grep ip_gre        #确定是否加载了gre模块
2) 加载模块 ip_gre
    [root@web1 ~]# modprobe  ip_gre
    [root@web1 ~]# lsmod  | grep ip_gre 
2. web1 主机创建VPN隧道
1) 创建隧道
    [root@web1 ~]# ip tunnel add tun0  mode gre \ 
    >  remote 192.168.99.200 local 192.168.99.100
    #ip tunnel add创建隧道(隧道名称为tun0),ip tunnel help可以查看帮助
    #mode设置隧道使用gre模式
    #local后面跟本机的IP地址,remote后面是与其他主机建立隧道的对方IP地址
2) 启用该隧道 ( 类似与设置网卡up )
    [root@web1 ~]# ip add show tun0
    [root@web1 ~]# ip link set tun0 up         #设置UP
3) 为VPN配置隧道IP地址
ip addr add 10.10.10.100/8 peer 10.10.10.200/8 dev tun0
    #为隧道tun0设置本地IP地址10.10.10.100/24
    #隧道对面的主机IP为10.10.10.200/24
ip add show tun0                      #查看IP地址
3. web2 主机创建VPN
1) 加载模块ip_gre
2) 创建隧道
3) 启用隧道
4) 为VPN配置隧道IP地址
ip addr add 10.10.10.200/8 peer 10.10.10.100/8 dev tun0
ip add show tun0                      #查看IP地址
5) 测试连通性
    [root@web1 ~]#  ping 10.10.10.200
    [root@web2 ~]#  ping 10.10.10.100

PPTP VPN

  • 支持密码身份验证
  • 支持MPPE加密

创建 L2TP+IPSec VPN

  • L2TP建立主机之间的VPN隧道 , 压缩 , 验证
  • IPSec提供数据加密 , 数据校验 , 访问控制的功能
  • 搭建L2TP+IPSec VPN环境 , 并测试该VPN网络是否能够正常通信
    • 使用 L2TP 协议创建一个支持身份验证与加密的隧道连接
    • 使用 IPSec 对数据进行加密
    • 为客户端连接的用户分配 10.10.10.10 的地址池
    • 客户端连接的用户名为 : tom 密码为 : 123456
    • 预共享密钥为 : randpass
  • 方案
    • 使用Web1作为服务端
    • Windows10 作为客户端 , ip为 99 网段
    • 加入99网段的虚拟网络
1. 部署 IPSec 服务
1) 安装
yum  -y  install  libreswan   #安装加密工具
cp  myipsec.conf  /etc/ipsec.d/   
				#复制配置IPSec密钥验证配置文件到ipsec.d目录
2) 配置
vim  /etc/ipsec.d/myipsec.conf    #修改配置第16行
    left=192.168.99.100    #设置为本机ip(此处在真实环境为公网ip)
vim  /etc/ipsec.secrets   #修改配置,添加加密信息
    192.168.99.100  %any:  PSK  "randpass"  
    #另起一行,添加99.100是本机ip,%any:是允许任何客户机连接本服务器,PSK(pre share key)是预共享密钥,randpass是密码,等windows客户连接vpn服务器时需要该密码
2. 安装VPN工具
1) 安装
    [root@web1 vpn]#yum -y install  ./xl2tpd-1.3.8-2.el7.x86_64.rpm
    [root@web1 vpn]#vim  /etc/xl2tpd/xl2tpd.conf   
    					#打开配置文件,32、33行
    ip range = 10.10.10.10-10.10.10.18  #给客户分配的ip
    local ip = 192.168.99.100    #本机ip
2) 配置
vim  /etc/ppp/options.xl2tpd   #修改配置文件,将第10、16行注释掉,删除掉21行的#以及空格,就可以启用加密
#crtscts                                                #注释该行
#lock                                                #注释该行
3) 创建账户
vim  /etc/ppp/chap-secrets   #定义windows客户机的用户名和密码
tom  *  123456  *     #另起一行创建用户tom,配置密码123456
4) 开启服务
    systemctl  start  ipsec   #开启加密服务
    ss  -ntulp |grep  :500    #检查加密服务
    /usr/sbin/xl2tpd            #开启vpn服务
    ss  -ntulp |grep  xl2tpd   #检查加vpn服务
5) 翻墙设置 ( 非必要操作 )
echo "1" > /proc/sys/net/ipv4/ip_forward    #开启路由转发
iptables -t nat -A POSTROUTING -s 192.168.3.0/24 \
>  -j SNAT --to-source 201.1.2.10

编写 systemd Unit 文件

  • systemd 是 Linux 系统的一组基本构建块

  • 提供一个系统和服务器管理

  • 作为 PID1 运行并启动系统的其余部分进程

  • 控制 systemd 的主要命令是 systemctl

  • Unit文件

    • systemd 管理服务时会读取对应的配置文件 , 也就是 Unit 文件
    • 读取 Unit 文件的目录 ( 优先级由高到低 )
      • /etc/systemd/system ( 设置了开机自启的 Unit 文件 )
      • /usr/lib/systemd/system ( 所有已经安装软件的 Unit 文件 )
  • Unit文件语法

    1. Description 描述信息
    2. After 在哪个服务之后启动
    3. Before 在哪个服务之前启动
    4. type 服务类型 , 默认为 simple
    5. EnvironmentFile 定义变量文件
    6. ExecStart 执行 systemctl start 需要启动的进程名称
    7. ExecStop 执行 systemctl stop 需要停止的进程名称
    8. ExecReload systemctl reload 需要执行的命令
    9. WantedBy 依赖当前服务的 tatget
1. 使用 systemd 管理 shell 文件
  • 有Shell文件存在于 /root/test.sh , 权限给予 chmod +x 可执行权限
1) 编写 Unit文件
 cp /usr/lib/systemd/system/{crond.service,test.service}
[root@web1 ~]# vim /usr/lib/systemd/system/test.service
[Unit]
Description=my test script            
After=time-sync.target
[Service]
ExecStart=/root/test.sh           # 路径
ExecReload=/bin/kill -HUP $MAINPID  #  kill 是发送信号 
KillMode=process
[Install]
WantedBy=multi-user.target
2) 重新加载 Unit 文件
systemctl  daemon-reload
2. 使用 systemd 管理 Nginx 服务
Unit 文件
    [root@web1 ~]# vim /usr/lib/systemd/system/nginx.service
    [Unit]
    Description=The Nginx HTTP Server        #描述信息
    After=network.target remote-fs.target nss-lookup.target    
    [Service]
    Type=forking
    #仅启动一个主进程的服务为simple,需要启动若干子进程的服务为forking
    ExecStart=/usr/local/nginx/sbin/nginx
    ExecReload=/usr/local/nginx/sbin/nginx -s reload
    ExecStop=/bin/kill -s QUIT $MAINPID
    [Install]
    WantedBy=multi-user.target
    [root@web1 ~]#systemctl start nginx    #可以控制nginx开启了,这里如果无效可以尝试重启服务器
相关推荐
007php0074 小时前
linux服务器上CentOS的yum和Ubuntu包管理工具apt区别与使用实战
linux·运维·服务器·ubuntu·centos·php·ai编程
人类群星闪耀时4 小时前
深度学习在灾难恢复中的作用:智能运维的新时代
运维·人工智能·深度学习
djykkkkkk4 小时前
ubuntu编译遇到的问题
linux·运维·ubuntu
LinkTime_Cloud4 小时前
GitLab 将停止为中国区用户提供服务,60天迁移期如何应对? | LeetTalk Daily
大数据·运维·gitlab
qq_429856574 小时前
linux 查看服务是否开机自启动
linux·运维·服务器
Smile丶凉轩5 小时前
Docker核心技术和实现原理
运维·docker·容器
清风细雨_林木木5 小时前
Docker使用——国内Docker的安装办法
运维·docker·容器
运维&陈同学5 小时前
【Kibana01】企业级日志分析系统ELK之Kibana的安装与介绍
运维·后端·elk·elasticsearch·云原生·自动化·kibana·日志收集
dessler6 小时前
Docker-Dockerfile讲解(三)
linux·运维·docker
cnsinda_sdc6 小时前
信创数据防泄漏中信创沙箱是什么样的安全方案
运维·网络·安全·源代码管理·源代码防泄密·源代码加密