官方为提供RPM包、官方的RPM包无法自定义,由此希望提供通用的软件管理机制。
软件打包:将源码包自己编译安装下来
rpmbuild:将源码包(如Nginx)打包成RPM包的工具。
安装rpmbuild工具的软件包rpm-build:
![3d1eac5c85d44cb1bf2cd6ba44925135.png](https://i-blog.csdnimg.cn/blog_migrate/d16974d903f7cf6f2550787160f56a68.png)
使用rpmbuild,-ba:把某个包的程序转变为二进制代码。随意输入.spec以便生成rpmbuild目录,SOURCES:存放源码包。SPECS:存放配置文件
![dae095bb6fe647919adf8a74ffb9949a.png](https://i-blog.csdnimg.cn/blog_migrate/06385e48fc4d7471f99ae156622c3516.png)
拷贝源码包到rpmbuild目录下的SOURCES,安装Nginx依赖,第一次编辑RPM包需要,将来变成RPM包就不在需要了。
![18ce770181fc4d97a3010e98ff6d016b.png](https://i-blog.csdnimg.cn/blog_migrate/2ae093fa8417e73d5c0afebdceee2623.png)
创建编辑配置文件,在该目录下面创建的文件会自动匹配一个模板方便配置,把内容都补充完。vim rpmbuild/SPECS/nginx.spec
![bf2206b19edd41009f662fb4833d5b3c.png](https://i-blog.csdnimg.cn/blog_migrate/cae229660018ea647c7a1b0b8d913a18.png)
编辑
![0ef2321db9bc4f7f88fc36ba88eef887.png](https://i-blog.csdnimg.cn/blog_migrate/b7ef9071a39d546bcb8e600691e49b68.png)
打包成RPM
![5e969b12d44b4e849afdc4a3ea0744e9.png](https://i-blog.csdnimg.cn/blog_migrate/e26a6da82d887add6ca190cf48f078f3.png)
查看Nginx的RPM包
![20cd8e993366405b98d414f64d3bf1c5.png](https://i-blog.csdnimg.cn/blog_migrate/8b36d48e21663dbe5f31d9867d9261c9.png)
![705275ab069747569c455d7c25c15318.png](https://i-blog.csdnimg.cn/blog_migrate/ac397212adce4b5c89df8b6172f143b8.png)
做成yum源,能够在yum中安装,将生成的Nginx的RPM包传递给99.240主机做网络域名源
![5fc0684bedec4e22a99fb42c79f91065.png](https://i-blog.csdnimg.cn/blog_migrate/e406c9c5a454f6090db12744e97c4a9b.png)
![e81697ccaa7a4e60942844b61bf3d396.png](https://i-blog.csdnimg.cn/blog_migrate/97122fdad5246334d104c42c45244367.png)
创建软件仓库清单
![c920702a9d5045cea4984e72832a2323.png](https://i-blog.csdnimg.cn/blog_migrate/7d67e0dfce5abd2b4b91c67ecf96461b.png)
搭建本机yum源
![c785f5b400094996bbef224c07fbd108.png](https://i-blog.csdnimg.cn/blog_migrate/68fdd20707d4a727f53c18b8da0486df.png)
![5cf30422066c4ef582c1dabff52812ab.png](https://i-blog.csdnimg.cn/blog_migrate/a251e89feb7eb290a051fa54ac60e9e9.png)
此时把Nginx删除和Nginx的依赖pcre-devel/openssl-devel
![2b6eca81a0bf4e348bd94242c02f2211.png](https://i-blog.csdnimg.cn/blog_migrate/83fcffc2b865fdcc0df4e7b94be83bf2.png)
安装nginx
![06c70bc13529404cb058d470301e7efe.png](https://i-blog.csdnimg.cn/blog_migrate/d9d39ad88427d65d5585b0b8427647bf.png)
此时使用yum也能安装Nginx了
![ad7ec8e181ec48599b3b54dac76df4ed.png](https://i-blog.csdnimg.cn/blog_migrate/8497ef939318f41102166421d11e9fc3.png)
%post:表示不管谁安装了RPM包,都会顺带执行的命令,如Nginx需要使用--user=nginx模块,用户还得再输入一遍,当使用%post,添加useradd nginx,谁安装了nginx的RPM包就会多出一个nginx账户。
![](https://i-blog.csdnimg.cn/blog_migrate/b052dd269ce1d7b996c973778faa2774.png)
VPN(Virtual Private Network):虚拟专用网络。在公用网络上建立专用私有网络,进行加密通讯,多用于为集团公司的各地子公司建立连接,连接完成后,各个地区的子公司可以像局域网一样通讯,偶尔可以用于翻墙。使用公有网络模拟私有网络
1、双方都是Linux系统使用公网IP192.168.99.100、192.168.99.200互联传递私网IP10.10.10.100、10.10.10.200内的数据。
modprobe ip_gre:在内核中开启一个gre的功能,gre是一个能开启VPN的功能,搭建虚拟专用网。
lsmod:查看内核功能
![](https://i-blog.csdnimg.cn/blog_migrate/43c49fb6b569113b6001ba0bbaa5330f.png)
ip tunnel:tunnel:创建一个隧道,虚拟局域网;add:添加隧道的名称;mode:使用的是什么技术建立;remote:跟谁建立起隧道;local:本机的IP地址;
![](https://i-blog.csdnimg.cn/blog_migrate/864721256a57770e0d95f15d3bfb8c56.png)
当创建隧道时创建错误了可以使用该命令,ip tunnel del tun01:删除隧道;
ip addr:在刚刚建立的隧道创建私有ip,add:本机的虚拟私有IP地址,peer:对面的私有IP地址;dev:指定在那个隧道内建立
![](https://i-blog.csdnimg.cn/blog_migrate/0acd8ff6ff5fed9efb518977a0b3685c.png)
对隧道创建私有ip地址创建错误使用该命令:ip addr del 10.10.10.100/8 peer 10.10.10.200/8 dev tun01;
ip link set tun01 up:激活配置;
![](https://i-blog.csdnimg.cn/blog_migrate/345c211a3a7a75bb03d6b386f3b1e77d.png)
ip addr show tun01:查看对tun01隧道的配置;
![](https://i-blog.csdnimg.cn/blog_migrate/ca7918bc1d80a1744ffceec6b8f0a323.png)
对web2进行相同的配置
![](https://i-blog.csdnimg.cn/blog_migrate/00d12c4e5f30ce996e7b42cd15231074.png)
关闭防火墙,查看私有的ip地址能否平通。
![](https://i-blog.csdnimg.cn/blog_migrate/c1142390f254071dbedff1b3d479d33c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/91925e19d367a9c7a1fa7d9d11e5162d.png)
2、服务器web1为Linux系统,客户web2为Windows系统使用公网IP192.168.99.100、192.168.99.1互联传递私网IP10.10.10.100、10.10.10.200内的数据。
在web1上配置基于Windows的VPN。
(1)、配置加密。
安装libreswan:加密工具,辅助vpn加密
![](https://i-blog.csdnimg.cn/blog_migrate/d135f8f8394064eeeabe3c005dce33ca.png)
将给libreswan加密工具使用的文件拷贝到/etc目录,然后编辑
![](https://i-blog.csdnimg.cn/blog_migrate/5eca31a11744ce48110d69a0fe7af38a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d962f66ffdf12c70725acd81c513133b.png)
修改/etc/ipsec.secrets安全加密文件,当%any:任何人,连接到192.168.99.100时可以使用加密服务;使用的什么密码:PSK:预共享密钥,等Windows客户连接vpn服务器时需要改密码。
![](https://i-blog.csdnimg.cn/blog_migrate/6ca489c29cc0607df71f5cc2e8a294b8.png)
![](https://i-blog.csdnimg.cn/blog_migrate/91c681f4a27e2c8e12ba161f77231e74.png)
(2)、使用xl2tp搭建VPN,支持Windows环境。
安装xl2tp软件包
![](https://i-blog.csdnimg.cn/blog_migrate/02421ccc12fbb71c3502bfeea9aaf6cf.png)
编辑其配置文件
![](https://i-blog.csdnimg.cn/blog_migrate/25c7c2c01ff41e6a8a3f84f5aa35b18a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6c51a6d386b78e3427b426936b18fb05.png)
配置/etc/ppp/option.xl2tpd文件,让xl2tp和刚刚配置的加密文件相关联。将第10,和16行添加注释,将21的注释取消
![](https://i-blog.csdnimg.cn/blog_migrate/f3e4a799303cf5d4e4312237481087c1.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d46f305085c035a6dbc07c092c7442c8.png)
修改定义用户名密码文件,tom * 123456 * :当客户连接vpn服务器时需要输入tom客户名和123456密码,第一个‘ * ’表示vpn服务的名称任意匹配,写*不怕万一将来服务器换了个名称,第二个‘ * ’表示客户端的公网IP地址,写*匹配任意的IP地址。
![](https://i-blog.csdnimg.cn/blog_migrate/1ddd0873f754d9e9fad7b974c9a1f633.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9f1483d2e258d49330fa3180bdf3073f.png)
开启加密服务和xl2p服务
![](https://i-blog.csdnimg.cn/blog_migrate/02ce1413c9ecdf28823e9de67c9cd880.png)
在Windows打开vpn
![](https://i-blog.csdnimg.cn/blog_migrate/1a823ecba81afdbc4fb4ad95a4db2da6.png)
![](https://i-blog.csdnimg.cn/blog_migrate/db08e1a75711dbc5b678468ad4c074c1.png)
查看加密服务、vpn服务
![](https://i-blog.csdnimg.cn/blog_migrate/06cb6b796ec34b03080f784357bfe0fa.png)
当显示已连接并且网断了表示连接成功
![](https://i-blog.csdnimg.cn/blog_migrate/a4c3a2417ca1d3583d384ba299c40828.png)
当断开连接后网络就恢复了。
![](https://i-blog.csdnimg.cn/blog_migrate/fe9e41af3df69940e0ee889e4c60e28a.png)
当连接失败时检查防火墙是否关闭,如果还出错误,编辑注册表
![](https://i-blog.csdnimg.cn/blog_migrate/7ba551c11ce962c92d6e31c5bf32efc5.png)
然后重启此时就能连接。
![](https://i-blog.csdnimg.cn/blog_migrate/a4c3a2417ca1d3583d384ba299c40828.png)
在连接的状态下使用客户端ping服务器的私有IP地址,就能ping通。断开连接就ping不了。
![](https://i-blog.csdnimg.cn/blog_migrate/eb2fab6c1fb7f1093f76db7b858c5887.png)
连接时网络断开是因为网络会优先访问vpn,从而让主机和外部网络断开,而vpn为虚拟机没有网络不能访问外网,所以就没有网络了。
当使用systemctl start/stop nginx时会提示没有nginx.service文件不能关闭或启用nginx服务。
http服务跟nginx服务差不多,而http服务就可以使用systemctl命令,所以拷贝http的服务service为nginx.service,然后编辑它就能使用systemctl命令开启nginx了。
编辑/usr/lib/systemd/system文件,其中存放了很多.service文件。
![](https://i-blog.csdnimg.cn/blog_migrate/aba7538a3224a6fa4a9334bed8bd71e3.png)
![](https://i-blog.csdnimg.cn/blog_migrate/189808518e96f6eecbd6fbb5afcba06f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/fa607f7c68d1fd46d22783d388305803.png)
After=network.target remote-fs.target nss-lookup.target:表示等服务器上的网络和远程 连接等服务开启后才开启nginx(http)服务
Type=forking:服务类型forking表示多进程类型的程序
ExecStart=/usr/local/nginx/sbin/nginx 相当于systemctl start nginx
ExecReload=/usr/sbin/nginx/sbin/nginx -s reload 相当于systemctl reloadnginx
ExecStop=/bin/kill -s QUIT $MAINPID(获得要开启程序的ID号)(不是立即关闭nginx,当nginx忙完才关闭) 相当于systemctl stop nginx
ExecReload=/usr/sbin/nginx/sbin/nginx -s reload 相当于systemctl reloadnginx
ExecStop=/bin/kill -s QUIT $MAINPID(获得要开启程序的ID号)(不是立即关闭nginx,当nginx忙完才关闭) 相当于systemctl stop nginx
[Install] WantedBy=multi-user.target 支持开机自启动。
![](https://i-blog.csdnimg.cn/blog_migrate/2d40f07d4ceb110546054d5da217c611.png)
需要重启系统才生效。reboot
![](https://i-blog.csdnimg.cn/blog_migrate/fa4a157eefdef571fbefed0b9d236e5f.png)
此时就能使用systemctl命令
![](https://i-blog.csdnimg.cn/blog_migrate/750430baa6b5a315cc8cd7b3b0bfd53d.png)