再跟大家分享乙個我在奇虎這邊做的乙個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...