>

创造Debian风格的Tengine deb包

- 编辑:澳门新葡亰平台游戏 -

创造Debian风格的Tengine deb包

41

#在test家目录
rpmbuild -ba ./rpmbuild/SPECS/tengine.spec

小心:在centos 6.0上应用rpmbuild制作rpm包假若出现File not found: /root/rpmbuild/BUILDROOT/…的不当,看是centos 6中的rpmbuild topdir已经退换,为了能包容centos 5的spec文件,供给对topdir进行修改

24

4 在家目录里创设制作目录rpmbuild

#.rpmmacros
%_topdir /home/test/rpmbuild
%_tmppath /home/test/rpmbuild/tmp
%buildroot /home/test/rpmbuild/BUILDROOT
%_prefix  /

9

su - test
mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}

yum groupinstall "Development Tools"
yum install pcre-devel
yum install openssl openssl-devel

    ;;

rpmbuild/
├── BUILD
├── RPMS
├── SOURCES
│  └── tengine-1.5.0.tar.gz
├── SPECS
│  └── tengine.spec
├── SRPMS
└── tmp

6 始产生产rpm包

43

1 安装CentOS的支出条件集成包及tengine的重视包

%prep
%setup -q
./configure  --prefix=/etc/nginx/

02

5 tengine.spec内容

su - test
mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}

  fi

%files
%defattr (-,root,root)
/etc/nginx/

3 在家目录编写.rpmmacros(正是上一篇说的自定义制作路径的公文)

7

#.rpmmacros
%_topdir /home/test/rpmbuild
%_tmppath /home/test/rpmbuild/tmp
%buildroot /home/test/rpmbuild/BUILDROOT
%_prefix  /

编辑/usr/lib/rpm/macros文件:
%_topdir                %{getenv:HOME}/rpmbuild
修改为:
%_topdir                %{_usrsrc}/

        server_name  localhost;

2 创建tengine rpm包,用非root用户test

Name:      tengine
Version:    1.5.0
Release:    1
Vendor:    Taobao
Summary:    GUN Tengine X86_64
License:    GPL
Source:    tengine-1.5.0.tar.gz
Group:      System Enviroment/Daemons
URL:       
Packager:  guol@oschin.com
%description
Taobao tengine package

01

6 开班生产rpm包

5 tengine.spec内容

        location / {

rpm与yum的综合性介绍与示范演示

更加多CentOS相关消息见CentOS 专项论题页面 http://www.linuxidc.com/topicnews.aspx?tid=14

04

Name:      tengine
Version:    1.5.0
Release:    1
Vendor:    Taobao
Summary:    GUN Tengine X86_64
License:    GPL
Source:    tengine-1.5.0.tar.gz
Group:      System Enviroment/Daemons
URL:       
Packager:  [email protected]
%description
Taobao tengine package

澳门新葡亰平台游戏 1

59

yum groupinstall "Development Tools"
yum install pcre-devel
yum install openssl openssl-devel

RedHat Linux---rpm 命令详解 http://www.linuxidc.com/Linux/2013-03/81971.htm

2

3 在家目录编写.rpmmacros(正是上一篇说的自定义制作路线的文书)

注:以上配置文件在centos6.4上测量试验通过

澳门新葡亰平台游戏 2  

%prep
%setup -q
./configure  --prefix=/etc/nginx/

rpmbuild/
├── BUILD
├── RPMS
├── SOURCES
│  └── tengine-1.5.0.tar.gz
├── SPECS
│  └── tengine.spec
├── SRPMS
└── tmp

23

RedHat Linux---rpm 命令详解

#在test家目录
rpmbuild -ba ./rpmbuild/SPECS/tengine.spec

./configure --prefix=/etc/nginx --sbin-path=/usr/sbin --error-log-path=/var/log/nginx/error.log --conf-path=/etc/nginx/conf/nginx.conf --pid-path=/var/run --with-http_addition_module=shared --with-http_xslt_module=shared --with-http_geoip_module=shared --with-http_image_filter_module=shared --with-http_sub_module=shared --with-http_flv_module=shared --with-http_slice_module=shared --with-http_mp4_module=shared --with-http_concat_module=shared --with-http_random_index_module=shared --with-http_map_module=shared --with-http_split_clients_module=shared --with-http_charset_filter_module=shared --with-http_access_module=shared --with-http_userid_filter_module=shared --with-http_footer_filter_module=shared --with-http_upstream_least_conn_module=shared --with-http_upstream_ip_hash_module=shared --with-http_user_agent_module=shared --with-http_memcached_module=shared --with-http_referer_module=shared --with-http_limit_conn_module=shared --with-http_limit_req_module=shared --with-http_scgi_module=shared --with-http_secure_link_module=shared --with-http_autoindex_module=shared --with-http_sysguard_module=shared --with-http_rewrite_module=shared --with-http_fastcgi_module=shared --with-http_empty_gif_module=shared --with-http_browser_module=shared --with-http_uwsgi_module=shared

稳重:在centos 6.0上接纳rpmbuild制作rpm包假如出现File not found: /root/rpmbuild/BUILDROOT/…的谬误,看是centos 6中的rpmbuild topdir已经济体改成,为了能包容centos 5的spec文件,要求对topdir进行修改

新近又在CentOS 6.4下折腾tengine了,刚好不久前看了rpm包的制作方法,所以又有了搞个rpm包的主见。

├── preinst

注:以上配置文件在centos6.4上测验通过

4 在家目录里创立制作目录rpmbuild

    echo -n "Starting $DESC: "

编辑/usr/lib/rpm/macros文件:
%_topdir                %{getenv:HOME}/rpmbuild
修改为:
%_topdir                %{_usrsrc}/

制作本人的rpm包 http://www.linuxidc.com/Linux/2013-06/86435.htm

 

创建本身的rpm包

%files
%defattr (-,root,root)
/etc/nginx/

34

要是未有不当,则会在rpmbuild/RPMS目录下转移相关rpm包。那只是粗略的制程,若是要做深度定制,能够本着安装前后推行的脚本做定制。

相关阅读:

    └── var

make
%install
make DESTDIR=$RPM_BUILD_ROOT install
%clean
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf "$RPM_BUILD_ROOT"
make clean

假设没错误,则会在rpmbuild/RPMS目录下转移相关rpm包。那只是简轻便单的炮制进程,假使要做深度定制,能够针对安装前后实施的本子做定制。

        test_nginx_config

Linux 下rpm安装后的目录结商谈一些安插

rpm与yum的综合性介绍与示范演示 http://www.linuxidc.com/Linux/2013-05/84480.htm

66

6.4下折腾tengine了,刚好不久前看了rpm包的制作方法,所以又有了搞个rpm包的主张。 1 安装CentOS的支付遭遇集成包及tengine的依...

2 创建tengine rpm包,用非root用户test

  reload)

多年来又在CentOS 6.4下折腾tengine了,刚好不久前看了rpm包的制作方法,所以又有了搞个rpm包的主张。

Linux 下rpm安装后的目录结商谈部分配置 http://www.linuxidc.com/Linux/2013-06/85761.htm

NAME=nginx

make
%install
make DESTDIR=$RPM_BUILD_ROOT install
%clean
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf "$RPM_BUILD_ROOT"
make clean

 

1 安装CentOS的耗费条件集成包及tengine的注重性包

 

13

        在此以前已经把具有依赖的包已经安装过了,所以不会冒出难题,只要make&&make install就能够,安装到位后在/etc/nginx中的目录结构如下:  www.2cto.com  

14

}

4

61

67

47

03

        

        /var/run/$NAME.pid --exec $DAEMON || true

03

 

        --exec $DAEMON -- $DAEMON_OPTS || true

03

        要把装有援助动态加载的模块都编写翻译进去,要求以下包的支撑:

    remove|remove-in-favour|deconfigure|deconfigure-in-favour)

06

01

07

1

    echo "$NAME."

apt-get install libxml2

 

        ;;

        │   └── nginx     存放nginx日志

16

exit 0

    sleep 1

fi

11

    *)

    echo -n "Restarting $DESC: "

澳门新葡亰平台游戏 3  

http {

    }

    $DAEMON -t $DAEMON_OPTS

29

48

18

07

    remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)

        开首补全在/tmp/tengine的其余目录。

    start-stop-daemon --start --quiet --pidfile

└── sbin

set -e

apt-get --purge remove nginx

14

        prerm:脚本在软件包卸载此前实行。

 

  status)

Homepage:

set -e

 

    │   └── sbin          存放nginx二进制文件

mv /etc/nginx/modules /tmp/tengine/etc/nginx/

2

12

5

        mkdir -p /etc/nginx/modules

50

}

  澳门新葡亰平台游戏 4

        测量检验如下图:

39

        error_page   500 502 503 504  /var/www/50x.html;

55

    access_log  /var/logs/nginx/access.log  main;

fi

3

        init.d/nginx内容如下,init运行nginx用  www.2cto.com  

    ├── etc

01

        最初打开千蛛万毒手...  www.2cto.com  

 

03

    │       └── sbin      存放dso_tool工具

01

19

  else

54

 

if [ -f /etc/default/nginx ] ; then

4

13

        DEBIAN/control内容如下,因为事先把注重包都设置了,所以在决定文件中自个儿去掉了借助关系设置

5

    sharedscripts

02

17

07

11

30

apt-get install libgd2-xpm libgd2-xpm-dev

08

12

11

        echo "$NAME."

│   └── index.html

            else  

mv /etc/nginx/html/* /tmp/tengine/var/www/           

12

1

20

01

13

36

        ├── lib

14

12

        preinst:在设置或升官软件包在此之前执行。

4

    status_of_proc -p /var/run/$NAME.pid "$DAEMON" nginx && exit 0 || exit $?

│   ├── ngx_http_access_module.so

10

        exit 1

exit 0

    start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid

22

10

    mkdir -p /var/lib/nginx

8

        location = /50x.html {

1

63

11

exit 0

11

04

19

        }

esac

16

26

8

20

Priority: optional

  stop)

apt-get install libssl-dev

worker_processes  1;

└── tengine

15

52

├── logs

├── control

    ├── usr

fi

08

 

24

前方尝试了须臾间tengine的动态加载模块的法力,感觉那样就有十分的大希望有恢宏配置的火候了,在此以前没用nginx是因为每便要求增添新的效能都供给再行编写翻译贰次,纵然nginx在质量上比apache好,然则假若有相当多台机器配置了nginx就倒霉搞了,每一个部门的web要求都不等同,所需求的模块也不等同,尽管把装有自带模块都编写翻译进去,可是依然会境遇有的很好的第三方模块的,今后tengine协助动态加载模块,就有期待了,一两台编写翻译是尚可的,大批量布置tengine依旧用包管理的可比好。  www.2cto.com  

            index  index.html index.htm;

       下面起先制作以debian6系统为根基的tengine deb包,tengine包风格或然类似于debian一般web服务器软件包的风骨。

6

13

}

        echo -n "Testing $DESC configuration: "

05

01

test_nginx_config() {

16

15

 

            root   /var/www;

mv /etc/nginx/sbin /tmp/tengine/etc/nginx/

02

13

4

 下载tengine源码包:tengine-1.4.2.tar.gz,进行编写翻译安装,编写翻译参数如下

 

pid        /var/run/nginx.pid;

    create 640 root adm

dso{

    compress

04

    ;;

13

5

 

    sendfile        on;

    purge)

DAEMON=/usr/sbin/nginx

14

26

06

05

27

15

 

    │   ├── init.d        存放/etc/init.d/nginx文件

       DEBIAN/prerm文件内容如下

05

15

31

    upgrade|failed-upgrade)

        if test_nginx_config

08

    default_type  application/octet-stream;

    │       ├── conf      寄放nginx的陈设文件

        exit 1

dpkg -b tengine/ tengine_1.4.2-1+squeeze_amd64.deb

1

    . /etc/default/nginx

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

09

02

1

├── html

        postinst:脚本在解包之后作为配置进度的一某个运营。比方:监听本机ip地址,更改端口之类的修改。在本文中本人无需做调节,所以并未有安装该文件。

 

02

mv /usr/sbin/nginx /tmp/tengine/usr/sbin/

15

07

        重启nginx,参加前和投入后分别如下  www.2cto.com    

          echo "$NAME."

  start)

3

1

19

    start-stop-daemon --stop --quiet --pidfile

1

apt-get install libssl.so.0.9.8

    ;;

08

17

05

├── modules

    notifempty

25

35

deb包 前边尝试了须臾间tengine的动态加载模块的功效,以为那样就有一点都不小希望有恢宏安插的空子了,在此以前没用nginx是因为每一次...

6

        │   └── nginx

                   invoke-rc.d nginx stop

apt-get install libgeoip1 libgeoip-dev

nginx

Architecture: amd64

04

15

03

#!/bin/sh

03

04

├── postrm

 

│   ├── ngx_http_uwsgi_module.so

    worker_connections  1024;

        fi

19

        ├── log

17

├── postinst

  restart|force-reload)

    missingok

# Automatically added by dh_installinit

# End automatically added section

09

    daily

12

06

    postrotate

28

fi

    ├── DEBIAN            这些目录寄放关于包的部分决定音信文件

3

case "$1" in

    rotate 52

Maintainer: Jose Parrella <[email protected]>

14

  then

        卸载tengine软件包

13

10

07

11

        test_nginx_config

16

Provides: httpd

06

        listen       80;

 

2

#!/bin/sh

10

64

16

        then

21

07

06

    ;;

  configtest)

05

        剩下DEBIAN目录未有陈设,结构如下:

        else

exit 0

08

DESC=nginx

events {

23

    update-rc.d nginx remove >/dev/null

 

58

12

22

            root   /var/www;

 

 

42

09

03

        DEBIAN/postrm文件内容如下

15

        加载ngx_http_autoindex_module.so模块,在计划文件中加入如下配置

DEBIAN/

    load ngx_http_autoindex_module.so;

}

│   ├── browsers

38

18

02

apt-get install libpcre3 libpcre3-dev

        }

10

if [ ! -d /etc/nginx ] ; then

            --exec $DAEMON || true

 

    │   └── nginx

04

        全体文件已经ok,剩下便是包装了

澳门新葡亰平台游戏 5

        fi

    keepalive_timeout  65;

6

esac

10

Description: xxxxxxxx

07

33

        if [ -x /etc/init.d/nginx ]; then

Package: nginx

└── prerm

    echo "$NAME."

if [ ! -d /var/lib/nginx ] ; then

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

18

│   └── 若干布置文件...

20

        touch /var/log/nginx/error.log

  if $DAEMON -t $DAEMON_OPTS >/dev/null 2>&1

set -e

    ;;

 

Section: httpd

            if [ -x /usr/sbin/invoke-rc.d ] ; then

    echo "Usage: $NAME {start|stop|restart|reload|force-reload|status|configtest}" >&2

 

        └── www           存放web站点

 

. /lib/lsb/init-functions

02

        echo "prerm called with unknown argument `$1'" >&2

 

 

        mkdir -p /etc/nginx/conf

        rm -rf /var/lib/nginx /var/log/nginx /etc/nginx

       nginx/conf/nginx.conf内容如下,因为web站点目录和log日志目录都具有更换,所以要小调一下

 

06

        --exec $DAEMON || true

        --sbin-path=/usr/sbin  那个目录有编写翻译好的nginx二进制文件

57

56

03

14

 

09

11

fi

        访问nginx暗中同意分界面

18

28

45

44

apt-get install libxslt1-dev

          exit $?

12

        首先,在/tmp目录下建三个创立deb包的条件目录tengine,先不用创立其余目录,最终的完整布局如下图:  www.2cto.com  

62

        [ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`

        ;;

    endscript

06

case "$1" in

    ;;

        test_nginx_config

25

 

27

51

        /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS || true

11

37

    server {

 

68

esac

13

if [ ! -d /var/log/nginx ] ; then

        echo -n "Reloading $DESC configuration: "

    │   ├── logrotate.d   存放nginx日志轮转配置文件

16

error_log  /var/logs/nginx/error.log;

mv /etc/nginx/conf /tmp/tengine/etc/nginx/

09

04

3

                   /etc/init.d/nginx stop

Version: 1.2.5

46

        logrotate.d/nginx内容如下,nginx日志轮流培训用

12

        mkdir -p /etc/nginx/sbin

21

        echo "postrm called with unknown argument `$1'" >&2

2

08

07

        postrm:在软件包从系统中卸载以往实施。dpkg告知这一个本子软件包是否已被卸载或解除。当因为争辩或升官,软件包被另外软件包卸载时也会实施这几个剧本。

    │       ├── modules   寄放能够动态加载的模块

17

    └── dso_tool

17

17

    start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid

05

10

    *)

3

04

08

02

set -e

05

        start-stop-daemon --stop --signal HUP --quiet --pidfile /var/run/$NAME.pid

            fi

制作Debian风格的Tengine deb包

case "$1" in

│   ├── ngx_http_addition_filter_澳门新葡亰平台游戏,module.so

    include       mime.types;

    echo "$NAME."

    return 0

    delaycompress

                      '"$http_user_agent" "$http_x_forwarded_for"';

    return $?

1

        DEBIAN/preinst文件内容如下

 

  *)

apt-get install libxslt1.1

18

14

        --prefix=/etc/nginx     这一个目录寄存除nginx二进制文件外的别的文件

09

08

        mkdir -p /var/log/nginx

#!/bin/sh

01

/var/log/nginx/*.log {

01

│   ├── 50x.html

    ;;

    ;;

    exit 1

2

65

                      '$status $body_bytes_sent "$http_referer" '

    ;;

│   └── 若干模块...

49

05

10

60

09

}

32

if [ "$1" = "purge" ] ; then

40

        control:提供软件包的涉及新闻, 用于软件包管理器突显软件包的新闻,用于安装前校验的依赖关系.是少不了提供的文本

09

06

53

7

test -x $DAEMON || exit 0

5

    echo -n "Stopping $DESC: "

├── conf

        ;;

本文由操作系统发布,转载请注明来源:创造Debian风格的Tengine deb包