Linux-源码安装及FPM打包
源码安装
这里举例Nginx的源码安装,需要前往Nginx官网找到稳定版本源码安装包下载。
## 源码安装nginx
# 0.安装依赖
[root@wqh nginx-1.16.1]# yum install -y gcc gcc-c++ glibc zlib-devel pcre-devel openssl-devel
# 1.下载nginx源码包
[root@wqh ~]# wget http://nginx.org/download/nginx-1.16.1.tar.gz
# 2.解压
[root@wqh ~]# tar xf nginx-1.16.1.tar.gz
[root@wqh ~]# cd nginx-1.16.1
# 3.生成,--prefix 即安装路径
[root@wqh nginx-1.16.1]# useradd nginx -s /sbin/nologin -M
[root@wqh nginx-1.16.1]# ./configure --prefix=/app/nginx-1.16.1 --user=nginx --group=nginx
# 4.编译
[root@wqh nginx-1.16.1]# make
# 5.安装
[root@wqh nginx-1.16.1]# make install
# 6.检测配置文件有没有语法错误
[root@wqh sbin]# /app/nginx-1.16.1/sbin/nginx -t
nginx: the configuration file /app/nginx-1.16.1/conf/nginx.conf syntax is ok
nginx: configuration file /app/nginx-1.16.1/conf/nginx.conf test is successful
# 7.启动nginx
[root@wqh sbin]# /app/nginx-1.16.1/sbin/nginx
# 8.检测80端口
[root@wqh sbin]# netstat -lntup|grep 80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 13468/nginx: master
# 9.做软连接
[root@wqh nginx-1.16.1]# ln -s /app/nginx-1.16.1 /app/nginx
制作RPM包(使用FPM工具)
FPM是一个该死的软件包管理器,主要是用来构建软件包(deb,rpm等等)。使用fpm命令需要一些依赖,
主要是ruby、rubygems和ruby-devel,如果我们构建的是rpm包,那还需要rpm-build这个依赖包。
FPM的工具在国内难以下载,我在博客的后台暂存了一份fpm工具包,点击下载即可(FPM工具包)
# 先了解一下fpm命令
fpm:制作rpm包命令
-s:dir # 打目录
-t:rpm # 把目录打成rpm包
-n:nginx # 软件名字叫nginx
-v:1.16.1 # 软件的版本号
-d: # 指定nginx的依赖包
-f: # 指定要达成rpm包的目录路径
--post-install # 指定rpm包安装完成之后要执行的脚本
--pre-install # 指定rpm包安装之前,要执行的脚本
## 制作rpm包(用fpm 工具)
[root@wqh ~]# mkdir fpm
[root@wqh ~]# mv fpm-1.3.3.x86_64.tar.gz fpm
[root@wqh fpm]# cd /root/fpm/
# 1. 解压
[root@wqh fpm]# tar xf fpm-1.3.3.x86_64.tar.gz
# 2.安装ruby
[root@wqh fpm]# yum -y install ruby rubygems ruby-devel rpm-build # 都是gem命令的依赖包,rpm-build是制作rpm包的依赖包
# 3.查看gem的源
[root@wqh fpm]# gem sources --list
*** CURRENT SOURCES ***
https://rubygems.org/
# 4.更换阿里云的源 先移除国外源
[root@wqh fpm]# gem sources --remove https://rubygems.org/
# 5.更换阿里云的源, 添加阿里云的源
[root@wqh fpm]# gem sources -a https://mirrors.aliyun.com/rubygems/
# 6.使用gem命令安装当前目录下所有的.gem文件
[root@wqh fpm]# gem install *.gem
# 7.写出安装rpm之后要执行的脚本,此处为简略版本,后面有详细版本
[root@wqh ~]# vi /root/nginx.sh
#!/bin/bash
useradd nginx -s /sbin/nologin -M
ln -s /app/nginx-1.16.1 /app/nginx
# 8.使用fpm打包
[root@wqh fpm]# fpm -s dir -t rpm -n nginx -v 1.16.1 -d 'zlib-devel,gcc,glibc,pcre-devel,glibc,openssl-devel,gcc-c++' --post-install /root/nginx.sh -f /app/nginx-1.16.1/
安装rpm后要执行的脚本(优化版)
[root@wqh ~]# vi nginx.sh
#!bin/bash
## 判断nginx用户是否存在,若不存在则创建,若存在则提示已经创建
id nginx &>/dev/null
if [ $? -ne 0 ];then
useradd nginx -r -M -s /sbin/nologin
echo "creating user nginx..."
else
echo "user nginx has been created,nothing to do."
fi
## 创建目录 nginx-1.16.1 的软链接,方便使用
ln -s /app/nginx-1.16.1 /app/nginx &>/dev/null
## 创建system文件,以便于对nginx使用systemctl命令管理
cat > /usr/lib/systemd/system/nginx.service << eof
[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/app/nginx/logs/nginx.pid
# Nginx will fail to start if /run/nginx.pid already exists but has the wrong
# SELinux context. This might happen when running `nginx -t` from the cmdline.
# https://bugzilla.redhat.com/show_bug.cgi?id=1268621
ExecStartPre=/usr/bin/rm -f /app/nginx/logs/nginx.pid
ExecStartPre=/app/nginx/sbin/nginx -t
ExecStart=/app/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true
[Install]
WantedBy=multi-user.target
eof
## 添加环境变量,以便于用nginx执行文件启动nginx,安装完需要source一下或者重新登录
cat > /etc/profile.d/nginx.sh << eof
export PATH="/app/nginx/sbin/:$PATH"
eof
Linux-源码安装及FPM打包的更多相关文章
- Linux源码安装JDK1.8
Linux源码安装Java 1.到官网下载 jdk-8u131-linux-x64.tar.gz 官网地址:http://www.oracle.com/technetwork/java/javase/ ...
- mysql-5.5 for linux源码安装
mysql-5.5 for linux源码安装 1.使用Yum安装依赖软件包 # yum install -y gcc gcc-c++ gcc-g77 autoconf automake bison ...
- linux源码安装mysql,shell编程学习,ubuntu
一.mysql安装 以源码安装的方式编译和安装Mysql 5.6. 1.卸载旧版本 rpm -qa | grep mysql 检查是否有旧版本 查询结果:mysql-libs-5.1.73-7.el6 ...
- Linux源码安装软件
Linux环境下 源码编译安装软件 ==== 1. 下载,步骤略 ==== 2. 验证,部分官方下载同时提供签名,MD5,sha1,sha256等校验信息. $ gpg --verify gnupg- ...
- Linux 源码安装 FFmpeg
加班次数频繁,已经快一年没有写博了.由于此次在项目中使用到了 FFmpeg 来处理音视频,顾记录下在 Linux 系统中源码安装 FFmpeg 以便不时之需. 1. 安装 yasm yasm 是一个汇 ...
- linux源码安装软件的一般方法
rhel系统貌似安装不了xmgrace,配置的时候居然说要那个M*tif库.百度了一下,需要openmotif库,然后用root账户想要用yum安装一下这个库,搞了好久没搞懂.后面搞明白了,原因竟是因 ...
- Linux 源码安装Ansible 参考篇
Ansible 源码搭建配置 近期在学习自动化运维相关技术,文章主要模拟内网情况下对Ansible的安装演示,源码安装较为繁琐.枯燥,尤其是在实际安装过程中可能出现各式各样的问题,所有在安装过程中尽量 ...
- Linux源码安装RabbitMQ高可用集群
1.环境说明 linux版本:CentOS Linux release 7.9.2009 erlang版本:erlang-24.0 rabbitmq版本:rabbitmq_server-3.9.13 ...
- Linux源码安装mysql步骤
创建文件夹: mkdir /usr/local/webserver 安装必要依赖包 yum -y install gcc gcc-c++ make ncurses-devel安装cmake ...
随机推荐
- 给dtcms增加模板自动生成功能
作为dtcms的使用者你是不是像我一样,也在不停的修改模板之后要点击生成模板浪费了很多开发模板的时间? 那就跟我一起给dtcms增加一个开发者模式,当模板修改完成之后,直接刷新页面就能看到效果,而不再 ...
- [CPP] STL 简介
STL 即标准模板库(Standard Template Library),是 C++ 标准库的一部分,里面包含了一些模板化的通用的数据结构和算法.STL 基于模版的实现,因此能够支持自定义的数据结构 ...
- HTTP Keep-Alive模式客户端与服务器如何判定传输完成
目录 长连接是什么 服务器如何知道已经完全接受客户端发送的数据 客户端如何知道已经完全接受服务端发送的数据 Transfer-Encoding transfer-coding与Content-Leng ...
- Bagging和Boosting的介绍及对比
"团结就是力量"这句老话很好地表达了机器学习领域中强大「集成方法」的基本思想.总的来说,许多机器学习竞赛(包括 Kaggle)中最优秀的解决方案所采用的集成方法都建立在一个这样的假 ...
- Failed to start LSB: starts php-fpm
跟nginx一样都是进程占用,记录下 [root@localhost pazzn]# systemctl status php-fpm.service ● php-fpm-72.service - L ...
- (08)-Python3之--类和对象
1.定义 类:类是抽象的,一类事物的共性的体现. 有共性的属性和行为. 对象:具体化,实例化.有具体的属性值,有具体做的行为. 一个类 对应N多个对象. 类包含属性以及方法. class 类名: 属 ...
- CSSmargin击穿问题(子元素margin-top会影响父元素)
最近写一个H5页面的时候发现了这个被忽视的问题,一时没想到什么原因,搜了半天,记录一下,方便他人踩坑.唉,有些东西不用就忘. 一.问题描述 <div class="container& ...
- IGXE搬砖项目
主要的赚钱方式和倒爷其实是差不多的,自动检测igxe平台上价格与buff相差8.5%以上的饰品,按照历史价格进行一定的过滤,防止翻车,然后自动购买. 2019年经历了十几次的改进以对抗同行的脚本,到1 ...
- AES加密模式
https://baike.baidu.com/item/高级加密标准/468774 AES加密模式 对称/分组密码一般分为流加密(如OFB.CFB等)和块加密(如ECB.CBC等).对于流加密,需要 ...
- null调整为not null default xxx,不得不注意的坑
最近碰到一个case,值得分享一下. 现象 一个DDL,将列的属性从null调整为not null default xxx, alter table slowtech.t1 modify name v ...