day8.4
day8.5
定制rpm包
# 什么是定制rpm包
将原本,使用源码安装的服务,打包成rpm包
安装fpm
# 1.下载阿里云的base源和epel源
wget-O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
wget-O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
# 2.安装ruby环境
yum -y install ruby rubygems ruby-devel
# 3.查看默认源
gem sources
# 4.移除默认源
gem sources --remove https://rubygems.org/
# 5.添加新源
gem sources -a https://mirrors.aliyun.com/rubygems/
# 6.安装fpm
gem install fpm -v 1.3.3
gem install *.gem
'uccessfully installed fpm-1.3.3 (显示这个代表安装正确)
8 gems installed (安装到8次即可,一直安装就行)
使用rpm定制rpm包
# 命令
fpm:
# 选项
-s:值将什么打成rpm包
-t:打成是包
-n:指定包名
-v:指定版本号
-d:指定依赖包
--post-install:安装rpm包之后,要执行的脚本
--pre-install:安装rpm包之前,要执行的脚本
--post-uninstall:卸载rpm包之后,要执行的脚本
--pre-uninstall:卸载rpm之前,要执行的脚本
-f:指定要打包的路径
# 先编写nginx的rpm安装之后要执行的脚本
[root@66technicians ~]# vim post_nginx.sh
(脚本内容)
ln -s /opt/nginx-1.20.2 /opt/nginx
echo 'PATH="/opt/nginx/sbin:$PATH"' > /etc/profile.d/nginx.sh
# 运行fpm需要安装的rpmbulid
[root@66technicians ~]# yum install -y rpm-build
# 将nginx做成rpm包
[root@66technicians ~]# fpm -s dir -t rpm -n nginx -d 'openssl-devel,pcre-devel' --post-install /root/post_nginx.sh -f /opt/nginx-1.20.2/
no value for epoch is set, defaulting to nil {:level=>:warn}
no value for epoch is set, defaulting to nil {:level=>:warn}
Created package {:path=>"nginx-1.0-1.x86_64.rpm"}
源码安装nginx
# 1.nginx官网,下载源码包
https://nginx.org/
# 2.下载
[root@28technicians ~]# wegt https://nginx.org/download/nginx-1.20.2.tar.gz
2.1 查看
[root@28technicians ~]# ll
-rw-r--r--1 root root 1062124 Nov 1622:51 nginx-1.20.2.tar.gz
# 3.解压
[root@28technicians ~]# tar xf nginx-1.20.2.tar.gz
# 4.安装依赖包
1.生成依赖包命令
[root@28technicians ~]# ./configure --prefix=/opt/nginx-1.20.2 --with-http_ssl_module --with-http_stub_status_module
2.安装依赖包
[root@28technicians ~]# yum install -y pcre-devel openssl-devel gcc gcc-c++ glibczlib-devel
'报错解决'
报错1.
./configure: error: C compiler cc is not found
报错原因:缺少C语言环境
解决方法:yum install -ygcc gcc-c++ glibc
报错2.
./configure: error: the HTTP rewrite module requires the PCRE library
报错原因:缺少pcre库文件
解决方法:yum install -y pcre-devl
报错3.
./configure: error: the HTTP rewrite module requires the OpenSSL library
报错原因:缺少openssl库文件
解决方法:yum install -y openssl-devel
# 5.编译
[root@28technicians nginx-1.20.2]# make
# 6.安装
[root@28technicians nginx-1.20.2]# make install
# 7.做软链接
[root@28technicians nginx-1.20.2]# ln -s /opt/nginx-1.20.2/ /opt/nginx
[root@28technicians nginx-1.20.2]# ll /opt
lrwxrwxrwx. 1 root root 18 Apr 27 16:54 nginx -> /opt/nginx-1.20.2/
drwxr-xr-x. 6 root root 54 Apr 27 16:53 nginx-1.20.2
# 8.启动nginx
[root@28technicians nginx-1.20.2]# nginx
# 9.检查是否启动成功
[root@28technicians nginx-1.20.2]# netstat -lntup
# 10.检查nginx进程
[root@28technicians nginx-1.20.2]# ps -ef|grep nginx
root 18385 1 0 16:55 ? 00:00:00 nginx: master process nginx
nobody 18386 18385 0 16:55 ? 00:00:00 nginx: worker process
root 18390 7203 0 16:57 pts/0 00:00:00 grep --color=auto nginx
# 11.关闭防火墙
[root@28technicians nginx-1.20.2]# systemctl stop firewalld
# 12.关闭selinux
[root@28technicians nginx-1.20.2]# setenforce 0
# 13.修改nginx配置文件
[root@28technicians html]# cd /opt/nginx/conf/
[root@28technicians conf]# vi nginx.conf
33 #gzip on;
34
35 server {
36 listen 80;
37 server_name localhost;
38 location / {
39 root /data/yum_data/;
40 autoindex on;
41 access_log off;
42 }
43 }
44
45
46 # another virtual host using mix of IP-, name-, and port-based configuration
# 14.创建以上同名目录
[root@28technicians conf]# mkdir /data/yum_data -p
# 15.重启nginx服务
[root@28technicians conf]# nginx -s reload
# 16.在/data/yum_data 创建nginx目录
mkdir data/yum_data/nginx
# 17.将nginx的rpm包上传的本机上(做yum源机器)
[root@66technicians ~]# scp nginx-1.10.0-1.el7.ngx.x86_64.rpm root@10.0.0.206:/root
# 18.查文件
[root@66technicians ~]# ll
-rw-r--r--. 1 root root 2801956 Apr 28 20:09 nginx-1.0-1.x86_64.rpm
# 19.将打包好的nginx的rpm包拷贝到nginx目录里
[root@28technicians ~]# cp nginx-1.0-1.x86_64.rpm /opt/nginx/html/nginx/
# 20.将nginx所需要的依赖包也下载到nginx目录里
[root@28technicians ~]# yum install -y pcre-devel --downloadonly --downloaddir=/opt/nginx/html/nginx/
# 21.查看nginx目录
[root@28technicians ~]# ll /opt/nginx/html/nginx/
-rw-r--r--. 1 root root 279472 Dec 3 05:01 krb5-devel-1.15.1-51.el7_9.x86_64.rpm
-rw-r--r--. 1 root root 191184 Apr 4 2020 libselinux-devel-2.5-15.el7.x86_64.rpm
-rw-r--r--. 1 root root 2801956 Apr 28 20:11 nginx-1.0-1.x86_64.rpm
-rw-r--r--. 1 root root 1581956 Mar 29 03:53 openssl-devel-1.0.2k-25.el7_9.x86_64.rpm
-rw-r--r--. 1 root root 491272 Aug 11 2017 pcre-devel-8.
# 22.将nginx目录变成仓库
[root@28technicians ~]# createrepo /opt/nginx/html/nginx/
# 23.压缩另一台机子原有的yum源
[root@66technicians opt]# gzip -r /etc/yum.repos.d/*
[root@66technicians opt]# ll /etc/yum.repos.d/
-rw-r--r--. 1 root root 601 Apr 21 11:00 CentOS-Base.repo.gz
-rw-r--r--. 1 root root 254 Apr 21 11:02 epel.repo.gz
# 24.编写配置文件
[root@66technicians opt]# vim nginx.repo
[root@66technicians yum.repos.d]# cat nginx.repo
[nginx]
name=1
baseurl=http://10.0.0.101/nginx/
gpgcheck=0
# 25.查看yum源仓库
[root@66technicians yum.repos.d]# yum repolist
# 26.安装nginx(查看是否走的自己创建的nginx源)
[root@66technicians yum.repos.d]# yum -y install nginx
# 27.查看环境变量是否添加
[root@66technicians yum.repos.d]# echo $PATH
/opt/nginx/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@66technicians yum.repos.d]# source /etc/profile
[root@66technicians yum.repos.d]# echo $PATH
/opt/nginx/sbin:/opt/nginx/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
# 28.查看软链接是否存在
[root@66technicians yum.repos.d]# ll /opt
total 0
lrwxrwxrwx. 1 root root 17 Apr 28 20:07 nginx -> /opt/nginx-1.20.2
drwxr-xr-x. 6 root root 74 Apr 28 20:27 nginx-1.20.2
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了