lnmp的rpm包制作

说明:1. lnmp 即,linux、niginx、mysql、php 所组成的web服务环境。
           2. 制作lnmp的rpm包可以节省因编译源码包所浪费的大量的时间和精力,也便于实现运维的自动化。    
           3. 此lnmp包,除了启动脚本,所有文件都同一安装在/usr/local/lnmp目录下面。有一个同一的启动脚本 lnmp,启动和停止服务直接/etc/init.d/lnmp  start/stop 即可。也可以单独运行各自的脚本。
           5. 以下是我自己编写的rpm包的 spec文件,可以直接使用。

%define prefix  /usr/local/lnmp

Name:           lnmp
Version:        1.0
Release:        1%{?dist}
Summary:        Web Integrated Environment for lnmp

Group:          System Environment/Base
License:        LCPL
URL:            http://www.yonchin.org
Source0:        lnmp-1.0.tar.gz
Source1:        libunwind-1.1.tar.gz
Source2:        gperftools-2.0.tar.gz
Source3:        libxml2-2.6.30.tar.gz
Source4:        libmcrypt-2.5.8.tar.bz2
Source5:        zlib-1.2.8.tar.gz
Source6:        libpng-1.6.2.tar.gz
Source7:        jpegsrc.v9.tar.gz
Source8:        freetype-2.5.0.1.tar.bz2
Source9:        gd-2.1.0-preview.tar.gz
Source10:       pcre-8.33.tar.bz2
Source11:       nginx-1.5.1.tar.gz
Source12:       mysql-5.6.12.tar.gz
Source13:       php-5.5.0.tar.gz
Source14:       lnmp
Source15:       nginx
Source16:       php-fpm
Source17:       mysqld
Source18:       nginx.conf
Source19:       php-fpm.conf
BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)

%description
nginx+mysql+php

%prep
%setup -q -b 1 -b 2 -b 3 -b 4 -b 5 -b 6 -b 7 -b 8 -b 9 -b 10 -b 11 -b 12 -b 13

%build
cd ../libunwind-1.1
./configure --prefix=%{prefix}/gperftools \
--disable-dependency-tracking \
CFLAGS="-O3 -fPIC"
make -j3

cd ../gperftools-2.0
./configure --prefix=%{prefix}/gperftools \
--enable-frame-pointers \
--disable-dependency-tracking \
CFLAGS="-O3 -fPIC"
CFLAGS=-fPIC
make -j3

cd ../libxml2-2.6.30
./configure --prefix=%{prefix}/libxml2 \
CFLAGS="-O3 -fPIC"
make -j3

cd ../libmcrypt-2.5.8
./configure --prefix=%{prefix}/libmcrypt \
CFLAGS="-O3 -fPIC"
make -j3

cd ../zlib-1.2.8
./configure --prefix=%{prefix}/zlib
make -j3

cd ../libpng-1.6.2
./configure --prefix=%{prefix}/libpng \
CFLAGS="-O3 -fPIC"
make -j3

cd ../jpeg-9
./configure --prefix=%{prefix}/jpeg9 \
        CFLAGS="-O3 -fPIC"
make -j3

cd ../freetype-2.5.0.1
./configure --prefix=%{prefix}/freetype \
CFLAGS="-O3 -fPIC"
make -j3

cd ../gd-2.1.0
./configure --prefix=%{prefix}/gd2 \
        --with-zlib=%{prefix}/zlib \
        --with-png=%{prefix}/libpng \
        --with-jpeg=%{prefix}/jpeg9 \
        --with-freetype=%{prefix}/freetype \
        LDFLAGS="-L%{prefix}/libpng/lib/ -L%{prefix}/zlib/lib/" \
        CFLAGS="-O3 -fPIC"
make -j3

cd ../pcre-8.33
./configure --prefix=%{prefix}/pcre
        CFLAGS="-O3 -fPIC"
make -j3

cd ../nginx-1.5.1
./configure --prefix=%{prefix}/nginx \
        --with-http_flv_module \
        --with-http_stub_status_module \
        --with-google_perftools_module \
        --with-http_gzip_static_module \
        --with-pcre-jit
make -j3

cd ../mysql-5.6.12
cmake . -DCMAKE_INSTALL_PREFIX=%{prefix}/mysql -DMYSQL_DATADIR=%{prefix}/mysql/data -DMYSQL_UNIX_ADDR=%{prefix}/mysql/data/mysql.sock   -DEFAULT_CHARSET=utf8   -DEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSET=all -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1  -DWITH_MYISAM_STORAGE_ENGINE=1  -DWITH_READLINE=1 -DWITH_ZLIB=bundled -DWITH_TCP_PORT=3306 -DMYSQL_USER=mysql
make -j3
                             
 cd ../php-5.5.0
./configure --prefix=%{prefix}/php \
        --with-config-file-path=%{prefix}/php/etc \
        --with-mysql=%{prefix}/mysql \
        --with-libxml-dir=%{prefix}/libxml2 \
        --with-mcrypt=%{prefix}/libmcrypt \
        --with-zlib-dir=%{prefix}/zlib \
        --with-png-dir=%{prefix}/libpng \
        --with-jpeg-dir=%{prefix}/jpeg9 \
        --with-freetype-dir=%{prefix}/freetype \
        --with-gd \
        --with-mysqli=%{prefix}/mysql/bin/mysql_config \
        --without-iconv \
        --enable-fpm \
        --enable-opcache \
        --enable-soap \
        --enable-mbstring=all \
        --enable-sockets \
        CFLAGS="-O3 -fPIC"
make -j3

%install
rm -rf $RPM_BUILD_ROOT
cd ../libunwind-1.1
make install DESTDIR=$RPM_BUILD_ROOT

cd ../gperftools-2.0
make install DESTDIR=$RPM_BUILD_ROOT

cd ../libxml2-2.6.30
make install DESTDIR=$RPM_BUILD_ROOT

cd ../libmcrypt-2.5.8
make install DESTDIR=$RPM_BUILD_ROOT

cd ../zlib-1.2.8
make install DESTDIR=$RPM_BUILD_ROOT

cd ../libpng-1.6.2
make install DESTDIR=$RPM_BUILD_ROOT

cd ../jpeg-9
make install DESTDIR=$RPM_BUILD_ROOT

cd ../freetype-2.5.0.1
make install DESTDIR=$RPM_BUILD_ROOT

cd ../gd-2.1.0
make install DESTDIR=$RPM_BUILD_ROOT

cd ../pcre-8.33
make install DESTDIR=$RPM_BUILD_ROOT

cd ../nginx-1.5.1
make install DESTDIR=$RPM_BUILD_ROOT
cd ../mysql-5.6.12
make install DESTDIR=$RPM_BUILD_ROOT

cd ../php-5.5.0
make install INSTALL_ROOT=$RPM_BUILD_ROOT

install -p -m 0755 -D %{SOURCE14} %{buildroot}%{_initrddir}/lnmp
install -p -m 0755 -D %{SOURCE15} %{buildroot}%{_initrddir}/nginx
install -p -m 0755 -D %{SOURCE16} %{buildroot}%{_initrddir}/php-fpm
install -p -m 0755 -D %{SOURCE17} %{buildroot}%{_initrddir}/mysqld
install -p -m 0644 -D %{SOURCE18} %{buildroot}%{prefix}/nginx/conf/nginx.conf
install -p -m 0644 -D %{SOURCE19} %{buildroot}%{prefix}/php/etc/php-fpm.conf
 
 %pre
if [ $1 = 1 ];then
/usr/sbin/groupadd nginx
/usr/sbin/groupadd mysql
/usr/sbin/useradd -r nginx -g nginx -s /sbin/nologin
/usr/sbin/useradd -r mysql -g mysql -s /sbin/nologin

fi

%post
if [ $1 = 1 ];then
/sbin/chkconfig --add lnmp
cat >/etc/profile.d/lnmp.sh<<EOF
PATH=$PATH:%{prefix}/libpng/bin:%{prefix}/mysql/bin
EOF
source /etc/profile &>/dev/null

cat >/etc/ld.so.conf.d/lnmp.conf<<EOF
/usr/local/lnmp/libpng/lib
/usr/local/lnmp/jpeg9/lib
/usr/local/lnmp/zlib/lib
/usr/local/lnmp/freetype/lib
/usr/local/lnmp/libxml2/lib
/usr/local/lnmp/libmcrypt/lib
/usr/local/lnmp/gperftools/lib
/usr/local/lnmp/pcre/lib
/usr/local/lnmp/gd2/lib
EOF
/sbin/ldconfig
ln -sv /usr/local/lnmp/zlib/include/* /usr/include/
              ln -sv  /usr/local/lnmp/zlib/lib/* /usr/lib/
fi

%postun
/usr/sbin/userdel nginx &>/dev/null
/usr/sbin/userdel mysql &>/dev/null
/bin/rm -f /etc/profile.d/lnmp.sh &>/dev/null
/bin/rm -f /etc/ld.so.conf.d/lnmp.conf &>/dev/null

%clean
rm -rf $RPM_BUILD_ROOT
                                    
 %files
%defattr(-,root,root,-)
%doc
/usr/local/lnmp/freetype/
/usr/local/lnmp/gd2/
/usr/local/lnmp/gperftools/
/usr/local/lnmp/jpeg9/
/usr/local/lnmp/libmcrypt/
/usr/local/lnmp/libpng/
/usr/local/lnmp/libxml2/
/usr/local/lnmp/mysql/
/usr/local/lnmp/php/
/usr/local/lnmp/nginx/
/usr/local/lnmp/pcre/
/etc/rc.d/init.d/

%changelog
*  Fri Jul 2013 Mr.Yang  <[email protected]>  - 1.0.1
- LNMP

可能错误及解决方法:
1. 遇到/usr/lib/rpm/check-rpaths 找不到路径问题
解决方法:
       删除$HOME/.rpmmacros  文件中的%__arch_install_post   /usr/lib/rpm/check-rpaths   /usr/lib/rpm/check-buildroot 这一行即可。

时间: 2024-10-05 13:10:09

lnmp的rpm包制作的相关文章

定制LNMP的RPM包

自动化部署必备技能-定制化RPM包 回顾下安装软件的三种方式: 1.编译安装软件,优点是可以定制化安装目录.按需开启功能等,缺点是需要查找并实验出适合的编译参数,诸如MySQL之类的软件编译耗时过长. 2.yum安装软件,优点是全自动化安装,不需要为依赖问题发愁了,缺点是自主性太差,软件的功能.存放位置都已经固定好了,不易变更. ===>如果你现在还为是使用编译安装软件还是使用yum安装软件发愁,那你就out了. 3.编译源码,根据自己的需求做成定制RPM包–>搭建内网yum仓库–yum安装.

RPM包制作方法

一.RPM介绍 RPM 前是Red Hat Package Manager 的缩写,本意是Red Hat 软件包管理,顾名思义是Red Hat 贡献出来的软件包管理:现在应为RPM Package Manager的缩写.在Fedora.Redhat.Mandriva.SuSE.YellowDog等主流发行版本,以及在这些版本基础上二次开发出来的发行版采用: RPM包中除了包括程序运行时所需要的文件,也有其它的文件:一个RPM包中的应用程序,有时除了自身所带的附加文件保证其正常以外,还需要其它特定

Ngins rpm包制作,spec配置文件

Name:           nginx Version:        1.4.2 Release:        1%{?dist} Summary:        nginx from source Group:          System Environment/Daemons License:        GPLv2 URL:            http://nginx.org Source0:        %{name}-%{version}.tar.gz Source

php-7.1.0 rpm包制作

nginx-1.8.0 rpm包制作见上篇文章:http://www.cnblogs.com/xiaoming279/p/6251149.html spec文件 Name: php Version: 7.1.0 Release: 1%{?dist} Summary: php Group: Applications/Server License: GPLv2 URL: http://www.51.com Source0: %{name}-%{version}.tar.gz Source1: php

rpm包制作(一)

rpm介绍 rpm的全称是RedhatPackage Manager,常见的使用rpm软件包的系统主要有Fedora.CentOS.openSUSE.SUSE企业版.PCLinuxOS等.使用deb软件包后缀的类Debian系统最常见的有Debian.Ubuntu.Finnix等. 从软件运行的结构来说,一个软件主要可以分为三个部分:可执行程序.配置文件和动态库.当然还有可能会有相关文档.手册.供二次开发用的头文件以及一些示例程序等等.可执行文件是必须的,其他部分都是可选的. 制作rpm软件包的

linux之rpm包制作

难点:spec文件的编写 1,首先安装rpm-build命令 yum install rpm-build 2,介绍spec编写规则: #ll #drwxr-xr-x  2 root root 4096 Jul 29 13:50 BUILD #drwxr-xr-x  2 root root 4096 Jul 29 13:51 RPMS #drwxr-xr-x  2 root root 4096 Jul 29 13:51 SOURCES #drwxr-xr-x  2 root root 4096 J

nginx的rpm包制作

nginx prm包 详细制作流程 1.准备工作 1.1:我这里准备了一台centos7的虚拟主机 1.2:官网下载最新的稳定版nginx源码包,地址:http://nginx.org/nginx-1.10.2.tar.gz 1.3:官网下载nginx的控制脚本,地址:https://www.nginx.com/resources/wiki/start/topics/examples/redhatnginxinit/ 1.4:手动安装一遍,看看都需要哪些依赖,所需依赖:gcc-c++,pcre-

linux rpm包制作

Linux Rpm 包制作 一.简介 RPM(Red Hat Package Manager)的最常见的软件包管理器. 软件包管理器 rpm,deb(dpkg) RPM包命名:name-version-release.architecture.rpm. xorg-x11-xsm-1.0.2 -4.fc6.i386.rpm 包名       版本号 编译次数 厂商 平台 RPM功能:安装.卸载.升级.查询和验证. rpm     -ivh              安装 rpm     -Uvh

rpm包制作(待实验)

作者:firefoxbug 时间:July 18, 2014 rpm包命名规范 对于rpm包的命名符合如下规范. %{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}.rpm NAME: rpm包名字 VERSION: rpm包版本号(主版本号.次版本号.测试号) RELEASE: rpm包编译发布次数(第几次编译发布) ARCH: cpu架构(比如i386和x86_64,i386兼容x86_64,noarch的代表一些列脚本) 比如nginx-1.4.0-24.x86.r