软件包管理 、 systemd服务管理 、 VPN服务器
一、将源码包转换为rpm包
[root@proxy ~]# yum -y install rpm-build //安装制作rpm包的工具 [root@proxy ~]# rpmbuild -ba nginx.spec //制作rpm包,但是没有配
置文件会报错,报错也需要敲,会产生所需的目录
[root@proxy ~]# ls //可以看到一个rpmbuild目录 [root@proxy ~]# cp ~/lnmp_soft/nginx-1.17.6.tar.gz rpmbuild/SOURCES/ //拷贝源码包到rpmbuild的工作目录
[root@proxy ~]# yum -y install gcc make pcre-devel openssl-devel vim rpmbuild/SPECS/nginx.spec //编写将nginx转换为rpm包的配置文件
Name:nginx //软件名
Version:1.17.6 //版本
Release:1 //发布的rpm包的版本
Summary:test~ //简单描述
#Group:
License:GPL //授权协议 ,GPL表示自由软件
URL:www.abc.com //网址
Source0:nginx-1.17.6.tar.gz //源码包
#BuildRequires:
#Requires:
%description //详细描述
test~ test~
%post //可以添加安装rpm包之后执行的命令,不是必须
useradd nginx
%prep
%setup -q
%build
./configure //配置,如果要添加选项或者模块可以继续写
make %{?_smp_mflags} //编译
%install
make install DESTDIR=%{buildroot} //安装
%files
%doc
/usr/local/nginx/* //将改路径下文件打包成rpm
%changelog
rpmbuild -ba rpmbuild/SPECS/nginx.spec //根据上述文件制作rpm包 ls rpmbuild/RPMS/x86_64/nginx-1.17.6-1.x86_64.rpm //查看最终结果,已经产生nginx的rpm包则成功
-----------------------------------------------------------------------------------
二、VPN 虚拟专用网
1,使用gre技术搭建vpn,适用于linux环境
[root@web1 ~]# modprobe ip_gre //在内核中开启gre功能 [root@web1 ~]# lsmod | grep gre //检查,可以看到gre字样信息即可 ip tunnel add tun0 mode gre remote 192.168.2.200 local 192.168.2.100 //创建vpn隧道,名字叫tun0,mode是使用gre技术,与2.200连接,自己ip是2.100 ip tunnel del tun0 //如果错误,可以删除重配 ip addr add 10.10.10.100/8 peer 10.10.10.200/8 dev tun0 //在tun0隧道(dev)中使用私有ip地址,本机是10.100 ,对面(peer)是10.200 ip addr del 10.10.10.100/8 peer 10.10.10.200/8 dev tun0 //如果错误可以删除 ip link set tun0 up //激活tun0 ip addr show tun0 //查看
2,使用pptpd搭建vpn,支持windows环境
[root@web1 ~]# cd ~/lnmp_soft/vpn/ yum -y install ppp //安装vpn依赖软件包 rpm -ivh pptpd-1.4.0-2.el7.x86_64.rpm //安装vpn工具 vim /etc/pptpd.conf //修改102、103行
localip 192.168.2.100 //本机ip
remoteip 10.10.10.10-18 //给windows客户机分配的ip(vpn隧道内
使用的地址,可以自定义),范围是10.10.10.10~10.10.10.18
vim /etc/ppp/options.pptpd //修改配置,定义dns,66行将#去掉 vim /etc/ppp/chap-secrets //定义windows客户机的用户名和密码
tom * 123456 * //另起一行创建用户tom,配置密码123456
systemctl restart pptpd //开服务 netstat -ntulp | grep pptpd //检查
然后使用windows系统设置vpn
最下面 用户名写tom 密码123456
3,使用xl2tp搭建vpn,支持windows环境,更安全
systemctl stop pptpd
首先第一个环节,配置加密:
[root@web1 vpn]# yum -y install libreswan //安装加密工具 [root@web1 vpn]# cp myipsec.conf /etc/ipsec.d/ //复制配置文件到ipsec.d目录 [root@web1 vpn]# vim /etc/ipsec.d/myipsec.conf //修改配置第16行
left=192.168.2.100 //设置为本机ip
vim /etc/ipsec.secrets //修改配置,添加加密信息
192.168.2.100 %any: PSK "randpass" //另起一行,添加2.100是本机
ip,%any:是允许任何客户机连接本服务器,PSK是预共享密钥,randpass
是密码,等windows客户连接vpn服务器时需要该密码
rpm -ivh xl2tpd-1.3.8-2.el7.x86_64.rpm vim /etc/xl2tpd/xl2tpd.conf //打开配置文件,32、33行
ip range = 10.10.10.10-10.10.10.18 //给客户分配的ip
local ip = 192.168.2.100 //本机ip
vim /etc/ppp/options.xl2tpd //修改配置文件,将第10、16行注释掉,删除掉21行的#以及空格,就可以启用加密 systemctl start ipsec //开启加密服务 netstat -ntulp |grep :500 //之后检查加密服务 systemctl start xl2tpd //开启xl2tpd服务 netstat -ntulp |grep xl2tpd
-----------------------------------------------------------------------------------------------------
三、编写Unit文件,使systemctl命令控制nginx
首先编写个脚本做个小测试
cd /usr/lib/systemd/system //到存储了Unit文件的目录 [root@proxy system]# vim /root/test.sh //编写测试脚本
#!/bin/bash
while :
do
echo abc
echo dc
sleep 0.1
done
chmod +x /root/test.sh //添加x权限
[root@proxy system]# vim test.service//创建控制test.sh脚本的Unit文件
[Unit]
Description=test script //描述
After=time-sync.target //在什么业务之后启动,这个地方如果不讲究启动顺序可以不写
[Service]
ExecStart=/root/test.sh //如果执行了systemctl start test 命令,就让系统执行/root/test.sh
ExecReload=/bin/kill -HUP $MAINPID //如果执行了systemctl reload test,可以
重新加载test.sh
KillMode=process //如果执行了systemctl stop test,系统就会杀死test.sh的主进程
systemctl daemon-reload //激活刚才的test.service文件,但有时可能不好使,可以重启系统
------------------------------------------------
然后实现控制nginx服务:
cd /usr/lib/systemd/system cp httpd.service nginx.service //拷贝模板 vim nginx.service //修改
[Unit]
Description=The nginx HTTP Server //描述
After=network.target remote-fs.target nss-lookup.target //在网络服务、网络文件服务、域名服务的程序启动之后再启动nginx
[Service]
Type=forking //nginx是多进程类型程序,要设置为forking
ExecStart=/usr/local/nginx/sbin/nginx //当执行了systemctl start nginx之后执行的命令
ExecReload=/usr/local/nginx/sbin/nginx -s reload //当执行了systemctl reload nginx之后执行的命令
ExecStop=/bin/kill -s QUIT ${MAINPID} //当执行了systemctl stop nginx之后执行的命令,这里是用kill命令发送退出信号给nginx的进程号,相当于停止nginx服务,-s QUIT是发送退出信号,${MAINPID}是变量,里面存了nginx的进程号
[Install]
WantedBy=multi-user.target //支持开机自启
然后重启服务之后可以用systemctl等命令控制nginx
提示:必须要提前先安装好nginx服务,并且没有其他服务占用80端口!
over