製作nginx的spec分享

2021-09-22 05:23:33 字數 4176 閱讀 4647

再跟大家分享乙個我在奇虎這邊做的乙個nginx的rpm包的spec檔案。後面我再分享一下php和mysql等大家用的比較普遍的軟體的spec。大家在做rpm包的時候可以參考我的這個文件,後面還包含了一些針對核心的優化的一些引數特別是tcp的快速釋放和重利用等,遇到問題我們可以一起討論。可以加這個qq群325525293。下面我針對裡面比較重要的內容做了解釋。

%define _topdir  /qihoo/centos/

%define _specdir %/spec

%define _rpmdir  %/

%define _srcrpmdir %/srpms

%define _sourcedir %/sources

%define _tmppath   %/tmp

%define _builddir   %/build

%define _prefix /usr/local/nginx

%define _docroot_dir /usr/local/nginx/html

summary: qihoo custom nginx package

name: qihoo-ops-nginx  #生成rpm的名稱叫什麼

version: 1.6.1

release: 1_qihoo.el6

vendor: gehailong

source: nginx-%.tar.gz   #source主要是引用一下自己定義好的指令碼,配置檔案之類的內容。

source1: nginx.conf            #nginx在主配置檔案裡面做了很多優化,包括cpu搶占,各種快取策略,tcp,程序數等。

source2: sysctl.conf

source3: root.tar.gz

#source4: nginx-module.tar.gz

source5: nginx.logrotate       #為了防止nginx日誌檔案逐漸增大,影響讀寫效率,對nginx日誌定期進行切割。

source6: nginx.init

source7: fastcgi.conf

url:

license: gpl

buildroot:%/%-%-root/

requires: bash openssl-devel curl-develpcre pcre-devel openssl   #主要定義了nginx依賴的一些rpm包。就是在yum裝的時候依賴的包。

autoreq: no

%description

qihoo custom nginx rpm

%prep

%setup -q -n nginx-%

%build   #這個階段就是configure階段。

make %   #make階段

%install    #make install階段

[ $rpm_build_root != "/" ]&& rm -rf $rpm_build_root

make destdir=$rpm_build_root install  #下面是來指定我要生成什麼樣的目錄和檔案等。

mkdir -p$rpm_build_root/usr%/conf/vhosts

mkdir -p$%/modules

mkdir -p $%/pid

mkdir -p $%/conf/include

mkdir -p $%

% -zxvf % -c$rpm_build_root%

mkdir -p $/home/q/php

mkdir -p $/home/q/system

#% -zxvf % -c$%/modules/

[ -f$%/conf/nginx.conf ] && \

rm -fr$%/conf/nginx.conf

cp -rf %$%/conf/

mkdir -p $/etc/logrotate.d/

cp -rf %$/etc/logrotate.d/nginx

mkdir -p $/etc/init.d/

cp -fr %source6$/etc/init.d/nginx

rm -fr$%/conf/fastcgi.conf

cp -rf %$%/conf/

mkdir$rpm_build_root%/conf/vhosts/

touch$rpm_build_root%/conf/vhosts/blank.conf

rm -fr $rpm_build_root%/*temp

%files #注意這個階段是把前面已經編譯好的內容要打包了,其中exclude是指要排除什麼不打包進來。

%defattr(-,root,root,755)%%

%attr(0655,root,root)   %config %/init.d/nginx

%attr(0655,root,root)   %config %/logrotate.d/nginx

/home

%exclude %dir /home

%pre #pre是指在安裝前要做什麼操作,也就是先把nginx使用者建立好。

if [ "$1" -eq "1" ];then

/usr/sbin/useradd -c "nginx"  \

-s /sbin/nologin -r -d % nginx 2> /dev/null || :

fi%post  #是指安裝完成後的操作包括哪些操作。

if [ "$1" -eq "1"];then

/sbin/chkconfig --add nginx

/sbin/chkconfig --level 35 nginx on

chown -r nginx:nginx % %

echo '# add    #下面主要是核心引數的優化,包括tcp的快速釋放和重利用等。

net.ipv4.tcp_max_syn_backlog = 65536

net.core.netdev_max_backlog =  32768

net.core.somaxconn = 32768

net.core.wmem_default = 8388608

net.core.rmem_default = 8388608

net.core.rmem_max = 16777216

net.core.wmem_max = 16777216

net.ipv4.tcp_timestamps = 0

net.ipv4.tcp_synack_retries = 2

net.ipv4.tcp_syn_retries = 2

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_mem = 94500000 915000000927000000

net.ipv4.tcp_max_orphans = 3276800

#net.ipv4.tcp_fin_timeout = 30

#net.ipv4.tcp_keepalive_time = 120

net.ipv4.ip_local_port_range = 1024  65535' >> /etc/sysctl.conf

sysctl -p 2>&1 /dev/null

fiif [ "$1" -eq "2"];then

if [ -f /var/lock/subsys/nginx ]; then

%/init.d/nginx restart

fifi

rm -fr %/*temp

%preun  #這是解除安裝前的準備工作。

if [ "$1" -eq "0"];then

%/init.d/nginx stop > /dev/null 2>&1

/sbin/chkconfig --del nginx

fi%postun #這是解除安裝的過程,注意解除安裝前把需要備份的內容手工備份一遍,防止造成後悔一輩子的事情,有時候運維真的傷不起!!!

/usr/sbin/userdel  nginx

rm -fr %

%clean

頭髮製作 分享 頭髮的製作思路

小哥哥,小姐姐,好久不見,想我沒呀。什麼我幹啥去了?划水當然是划水了。我騙你?哈?無圖無真相?行,讓你心服口服。去大理麗江划水,人家都說是豔遇之城,為啥跟我沒關係吶?不扯淡了,今天給大家帶來的是最近做完的角色頭髮的製作思路。1頭髮的搭建 1頭髮基礎層的搭建 這一步主要要做的就是把頭髮的大型搭建出來。...

Nginx 日誌分享

nginx 日誌對於大部分人來說是個未被發掘的寶藏,總結之前做某日誌分析系統的經驗,和大家分享一下 nginx 日誌的純手工分析方式。預設的格式 相信大部分用過 nginx 的人對預設 nginx 日誌格式配置都很熟悉,對日誌的內容也很熟悉。但是預設配置和格式雖然可讀,但是難以計算。比如,設定 bu...

Nginx 日誌分享

nginx 日誌對於大部分人來說是個未被發掘的寶藏,總結之前做某日誌分析系統的經驗,和大家分享一下 nginx 日誌的純手工分析方式。預設的格式 相信大部分用過 nginx 的人對預設 nginx 日誌格式配置都很熟悉,對日誌的內容也很熟悉。但是預設配置和格式雖然可讀,但是難以計算。比如,設定 bu...