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开启了,这里如果无效可以尝试重启服务器
相关推荐
醉颜凉11 分钟前
银河麒麟桌面操作系统V10 SP1:取消安装应用的安全授权认证
运维·安全·操作系统·国产化·麒麟·kylin os·安全授权认证
C++忠实粉丝1 小时前
Linux环境基础开发工具使用(2)
linux·运维·服务器
康熙38bdc1 小时前
Linux 环境变量
linux·运维·服务器
存储服务专家StorageExpert2 小时前
DELL SC compellent存储的四种访问方式
运维·服务器·存储维护·emc存储
大G哥3 小时前
记一次K8S 环境应用nginx stable-alpine 解析内部域名失败排查思路
运维·nginx·云原生·容器·kubernetes
妍妍的宝贝3 小时前
k8s 中微服务之 MetailLB 搭配 ingress-nginx 实现七层负载
nginx·微服务·kubernetes
醉颜凉3 小时前
银河麒麟桌面操作系统修改默认Shell为Bash
运维·服务器·开发语言·bash·kylin·国产化·银河麒麟操作系统
苦逼IT运维4 小时前
YUM 源与 APT 源的详解及使用指南
linux·运维·ubuntu·centos·devops
仍有未知等待探索4 小时前
Linux 传输层UDP
linux·运维·udp
zeruns8024 小时前
如何搭建自己的域名邮箱服务器?Poste.io邮箱服务器搭建教程,Linux+Docker搭建邮件服务器的教程
linux·运维·服务器·docker·网站