制作PHP的RPM包详解及实例
<p><strong>制作PHP的RPM包教程</strong></p>
<p>
有时候为了方便源码包的安装,我们需要自己订制软件包的需求,我们会把一些源码包按照我们的需求来做成rpm包,当有了源码包就可以直接编译得到二进制安装包和其他任意包。spec file是制作rpm包最核心的部分,rpm包的制作就是根据spec file来实现的。下面是我以制作php的rpm开始介绍其制作方法。以下操作在CentOS6.6 64位系统进行。</p>
<p>
下面我们以制作php的rpm开始介绍其制作方法。以下操作在CentOS6.6 64位系统进行。</p>
<p>
<strong>安装rpm-build</strong></p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_77695">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain"></code><code class="bash comments"># yum -y install rpm-build</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
<strong>建立工作车间目录</strong></p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_604397">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain"></code><code class="bash comments"># vim ~/.rpmmacros</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash plain">%_topdir </code><code class="bash plain">/root/rpmbuild</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_168306">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain"></code><code class="bash comments"># mkdir -pv ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
在redhat下,rpm包的默认制作路径在/usr/src/redhat下,但CentOS并没有该目录,因此,我们不得不自定义工作目录,这其中包含了6个目录(要求全部大写)</p>
<p>
BUILD:源代码解压以后放的位置<br>
RPMS:制作完成后的rpm包存放目录,为特定平台指定子目录(x86_64)<br>
SOURCES:收集的源文件,源材料,补丁文件等存放位置<br>
SPECS:存放spec文件,作为制作rpm包的领岗文件,以rpm名.spec<br>
SRPMS:src格式的rpm包位置 ,既然是src格式的包,就没有平台的概念了<br>
BuiltRoot:假根,使用install临时安装到这个目录,把这个目录当作根来用的,所以在这个目录下的目录文件,才是真正的目录文件。当打包完成后,在清理阶段,这个目录将被删除</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_805141">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
<div class="line number6 index5 alt1">
6</div>
<div class="line number7 index6 alt2">
7</div>
<div class="line number8 index7 alt1">
8</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain"></code><code class="bash comments"># rpmbuild --showrc | grep topdir #工作车间目录:_topdir /root/rpmbuild</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash plain">-14: _builddir %{_topdir}</code><code class="bash plain">/BUILD</code>
</div>
<div class="line number3 index2 alt2">
<code class="bash plain">-14: _buildrootdir %{_topdir}</code><code class="bash plain">/BUILDROOT</code>
</div>
<div class="line number4 index3 alt1">
<code class="bash plain">-14: _rpmdir %{_topdir}</code><code class="bash plain">/RPMS</code>
</div>
<div class="line number5 index4 alt2">
<code class="bash plain">-14: _sourcedir %{_topdir}</code><code class="bash plain">/SOURCES</code>
</div>
<div class="line number6 index5 alt1">
<code class="bash plain">-14: _specdir %{_topdir}</code><code class="bash plain">/SPECS</code>
</div>
<div class="line number7 index6 alt2">
<code class="bash plain">-14: _srcrpmdir %{_topdir}</code><code class="bash plain">/SRPMS</code>
</div>
<div class="line number8 index7 alt1">
<code class="bash plain">-14: _topdir </code><code class="bash plain">/root/rpmbuild</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
rpmbuild --showrc显示所有的宏,以下划线开头,一个下划线:定义环境的使用情况,二个下划线:通常定义的是命令,为什么要定义宏,因为不同的系统,命令的存放位置可能不同,所以通过宏的定义找到命令的真正存放位置</p>
<p>
<strong>收集源码文件脚本文件</strong></p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_590577">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain"></code><code class="bash comments"># pwd</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash plain">/root/rpmbuild/SOURCES</code>
</div>
<div class="line number3 index2 alt2">
<code class="bash plain"></code><code class="bash comments"># ls</code>
</div>
<div class="line number4 index3 alt1">
<code class="bash plain">php-5.4.45.</code><code class="bash functions">tar</code><code class="bash plain">.gz</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
<strong>编写SPEC文件</strong></p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_962164">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain"></code><code class="bash comments"># pwd </code>
</div>
<div class="line number2 index1 alt1">
<code class="bash plain">/root/rpmbuild/SOURCES</code>
</div>
<div class="line number3 index2 alt2">
<code class="bash plain"></code><code class="bash comments"># vim php.spec #内容如下: </code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_730067">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
<div class="line number6 index5 alt1">
6</div>
<div class="line number7 index6 alt2">
7</div>
<div class="line number8 index7 alt1">
8</div>
<div class="line number9 index8 alt2">
9</div>
<div class="line number10 index9 alt1">
10</div>
<div class="line number11 index10 alt2">
11</div>
<div class="line number12 index11 alt1">
12</div>
<div class="line number13 index12 alt2">
13</div>
<div class="line number14 index13 alt1">
14</div>
<div class="line number15 index14 alt2">
15</div>
<div class="line number16 index15 alt1">
16</div>
<div class="line number17 index16 alt2">
17</div>
<div class="line number18 index17 alt1">
18</div>
<div class="line number19 index18 alt2">
19</div>
<div class="line number20 index19 alt1">
20</div>
<div class="line number21 index20 alt2">
21</div>
<div class="line number22 index21 alt1">
22</div>
<div class="line number23 index22 alt2">
23</div>
<div class="line number24 index23 alt1">
24</div>
<div class="line number25 index24 alt2">
25</div>
<div class="line number26 index25 alt1">
26</div>
<div class="line number27 index26 alt2">
27</div>
<div class="line number28 index27 alt1">
28</div>
<div class="line number29 index28 alt2">
29</div>
<div class="line number30 index29 alt1">
30</div>
<div class="line number31 index30 alt2">
31</div>
<div class="line number32 index31 alt1">
32</div>
<div class="line number33 index32 alt2">
33</div>
<div class="line number34 index33 alt1">
34</div>
<div class="line number35 index34 alt2">
35</div>
<div class="line number36 index35 alt1">
36</div>
<div class="line number37 index36 alt2">
37</div>
<div class="line number38 index37 alt1">
38</div>
<div class="line number39 index38 alt2">
39</div>
<div class="line number40 index39 alt1">
40</div>
<div class="line number41 index40 alt2">
41</div>
<div class="line number42 index41 alt1">
42</div>
<div class="line number43 index42 alt2">
43</div>
<div class="line number44 index43 alt1">
44</div>
<div class="line number45 index44 alt2">
45</div>
<div class="line number46 index45 alt1">
46</div>
<div class="line number47 index46 alt2">
47</div>
<div class="line number48 index47 alt1">
48</div>
<div class="line number49 index48 alt2">
49</div>
<div class="line number50 index49 alt1">
50</div>
<div class="line number51 index50 alt2">
51</div>
<div class="line number52 index51 alt1">
52</div>
<div class="line number53 index52 alt2">
53</div>
<div class="line number54 index53 alt1">
54</div>
<div class="line number55 index54 alt2">
55</div>
<div class="line number56 index55 alt1">
56</div>
<div class="line number57 index56 alt2">
57</div>
<div class="line number58 index57 alt1">
58</div>
<div class="line number59 index58 alt2">
59</div>
<div class="line number60 index59 alt1">
60</div>
<div class="line number61 index60 alt2">
61</div>
<div class="line number62 index61 alt1">
62</div>
<div class="line number63 index62 alt2">
63</div>
<div class="line number64 index63 alt1">
64</div>
<div class="line number65 index64 alt2">
65</div>
<div class="line number66 index65 alt1">
66</div>
<div class="line number67 index66 alt2">
67</div>
<div class="line number68 index67 alt1">
68</div>
<div class="line number69 index68 alt2">
69</div>
<div class="line number70 index69 alt1">
70</div>
<div class="line number71 index70 alt2">
71</div>
<div class="line number72 index71 alt1">
72</div>
<div class="line number73 index72 alt2">
73</div>
<div class="line number74 index73 alt1">
74</div>
<div class="line number75 index74 alt2">
75</div>
<div class="line number76 index75 alt1">
76</div>
<div class="line number77 index76 alt2">
77</div>
<div class="line number78 index77 alt1">
78</div>
<div class="line number79 index78 alt2">
79</div>
<div class="line number80 index79 alt1">
80</div>
<div class="line number81 index80 alt2">
81</div>
<div class="line number82 index81 alt1">
82</div>
<div class="line number83 index82 alt2">
83</div>
<div class="line number84 index83 alt1">
84</div>
<div class="line number85 index84 alt2">
85</div>
<div class="line number86 index85 alt1">
86</div>
<div class="line number87 index86 alt2">
87</div>
<div class="line number88 index87 alt1">
88</div>
<div class="line number89 index88 alt2">
89</div>
<div class="line number90 index89 alt1">
90</div>
<div class="line number91 index90 alt2">
91</div>
<div class="line number92 index91 alt1">
92</div>
<div class="line number93 index92 alt2">
93</div>
<div class="line number94 index93 alt1">
94</div>
<div class="line number95 index94 alt2">
95</div>
<div class="line number96 index95 alt1">
96</div>
<div class="line number97 index96 alt2">
97</div>
<div class="line number98 index97 alt1">
98</div>
<div class="line number99 index98 alt2">
99</div>
<div class="line number100 index99 alt1">
100</div>
<div class="line number101 index100 alt2">
101</div>
<div class="line number102 index101 alt1">
102</div>
<div class="line number103 index102 alt2">
103</div>
<div class="line number104 index103 alt1">
104</div>
<div class="line number105 index104 alt2">
105</div>
<div class="line number106 index105 alt1">
106</div>
<div class="line number107 index106 alt2">
107</div>
<div class="line number108 index107 alt1">
108</div>
<div class="line number109 index108 alt2">
109</div>
<div class="line number110 index109 alt1">
110</div>
<div class="line number111 index110 alt2">
111</div>
<div class="line number112 index111 alt1">
112</div>
<div class="line number113 index112 alt2">
113</div>
<div class="line number114 index113 alt1">
114</div>
<div class="line number115 index114 alt2">
115</div>
<div class="line number116 index115 alt1">
116</div>
<div class="line number117 index116 alt2">
117</div>
<div class="line number118 index117 alt1">
118</div>
<div class="line number119 index118 alt2">
119</div>
<div class="line number120 index119 alt1">
120</div>
<div class="line number121 index120 alt2">
121</div>
<div class="line number122 index121 alt1">
122</div>
<div class="line number123 index122 alt2">
123</div>
<div class="line number124 index123 alt1">
124</div>
<div class="line number125 index124 alt2">
125</div>
<div class="line number126 index125 alt1">
126</div>
<div class="line number127 index126 alt2">
127</div>
<div class="line number128 index127 alt1">
128</div>
<div class="line number129 index128 alt2">
129</div>
<div class="line number130 index129 alt1">
130</div>
<div class="line number131 index130 alt2">
131</div>
<div class="line number132 index131 alt1">
132</div>
<div class="line number133 index132 alt2">
133</div>
<div class="line number134 index133 alt1">
134</div>
<div class="line number135 index134 alt2">
135</div>
<div class="line number136 index135 alt1">
136</div>
<div class="line number137 index136 alt2">
137</div>
<div class="line number138 index137 alt1">
138</div>
<div class="line number139 index138 alt2">
139</div>
<div class="line number140 index139 alt1">
140</div>
<div class="line number141 index140 alt2">
141</div>
<div class="line number142 index141 alt1">
142</div>
<div class="line number143 index142 alt2">
143</div>
<div class="line number144 index143 alt1">
144</div>
<div class="line number145 index144 alt2">
145</div>
<div class="line number146 index145 alt1">
146</div>
<div class="line number147 index146 alt2">
147</div>
<div class="line number148 index147 alt1">
148</div>
<div class="line number149 index148 alt2">
149</div>
<div class="line number150 index149 alt1">
150</div>
<div class="line number151 index150 alt2">
151</div>
<div class="line number152 index151 alt1">
152</div>
<div class="line number153 index152 alt2">
153</div>
<div class="line number154 index153 alt1">
154</div>
<div class="line number155 index154 alt2">
155</div>
<div class="line number156 index155 alt1">
156</div>
<div class="line number157 index156 alt2">
157</div>
<div class="line number158 index157 alt1">
158</div>
<div class="line number159 index158 alt2">
159</div>
<div class="line number160 index159 alt1">
160</div>
<div class="line number161 index160 alt2">
161</div>
<div class="line number162 index161 alt1">
162</div>
<div class="line number163 index162 alt2">
163</div>
<div class="line number164 index163 alt1">
164</div>
<div class="line number165 index164 alt2">
165</div>
<div class="line number166 index165 alt1">
166</div>
<div class="line number167 index166 alt2">
167</div>
<div class="line number168 index167 alt1">
168</div>
<div class="line number169 index168 alt2">
169</div>
<div class="line number170 index169 alt1">
170</div>
<div class="line number171 index170 alt2">
171</div>
<div class="line number172 index171 alt1">
172</div>
<div class="line number173 index172 alt2">
173</div>
<div class="line number174 index173 alt1">
174</div>
<div class="line number175 index174 alt2">
175</div>
<div class="line number176 index175 alt1">
176</div>
<div class="line number177 index176 alt2">
177</div>
<div class="line number178 index177 alt1">
178</div>
<div class="line number179 index178 alt2">
179</div>
<div class="line number180 index179 alt1">
180</div>
<div class="line number181 index180 alt2">
181</div>
<div class="line number182 index181 alt1">
182</div>
<div class="line number183 index182 alt2">
183</div>
<div class="line number184 index183 alt1">
184</div>
<div class="line number185 index184 alt2">
185</div>
<div class="line number186 index185 alt1">
186</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain">%define _user www</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash plain">%define _group www</code>
</div>
<div class="line number3 index2 alt2">
<code class="bash plain">%define _prefix </code><code class="bash plain">/usr/local/php</code>
</div>
<div class="line number4 index3 alt1">
<code class="bash plain">Name: php </code><code class="bash comments">#软件包名称</code>
</div>
<div class="line number5 index4 alt2">
<code class="bash plain">Version: 5.4.45 </code><code class="bash comments">#版本号(不能使用-)</code>
</div>
<div class="line number6 index5 alt1">
<code class="bash plain">Release: 1%{?dist} </code><code class="bash comments">#release号,对应下面的changelog,如php-5.4.45-1.el6.x86_64.rpm</code>
</div>
<div class="line number7 index6 alt2">
<code class="bash plain">Summary: PHP is a server-side scripting language </code><code class="bash keyword">for</code> <code class="bash plain">creating dynamic Web pages </code><code class="bash comments">#简要描述信息,最好不要超过50个字符,如要详述,使用下面的%description</code>
</div>
<div class="line number8 index7 alt1">
<code class="bash plain">Group: Development</code><code class="bash plain">/Languages</code> <code class="bash comments">#要全用这里面的一个组:less /usr/share/doc/rpm-version/GROUPS</code>
</div>
<div class="line number9 index8 alt2">
<code class="bash plain">License: GPLv2 </code><code class="bash comments">#软件授权方式</code>
</div>
<div class="line number10 index9 alt1">
<code class="bash plain">URL: http:</code><code class="bash plain">//www</code><code class="bash plain">.php.net </code><code class="bash comments">#源码相关网站</code>
</div>
<div class="line number11 index10 alt2">
<code class="bash plain">Packager: yeho <lj2007331@gmail.com> </code><code class="bash comments">#打包人的信息</code>
</div>
<div class="line number12 index11 alt1">
<code class="bash plain">Vendor: OneinStack </code><code class="bash comments">#发行商或打包组织的信息</code>
</div>
<div class="line number13 index12 alt2">
<code class="bash plain">Source0: %{name}-%{version}.</code><code class="bash functions">tar</code><code class="bash plain">.gz </code><code class="bash comments">#源代码包,可以带多个用Source1、Source2等源,后面也可以用%{source1}、%{source2}引用</code>
</div>
<div class="line number14 index13 alt1">
<code class="bash plain">BuildRoot: %_topdir</code><code class="bash plain">/BUILDROOT</code> <code class="bash comments">#安装或编译时使用的“虚拟目录”</code>
</div>
<div class="line number15 index14 alt2">
<code class="bash plain">Requires: libmcrypt</code>
</div>
<div class="line number16 index15 alt1">
<code class="bash plain">Requires: mhash</code>
</div>
<div class="line number17 index16 alt2">
<code class="bash plain">Requires: mcrypt</code>
</div>
<div class="line number18 index17 alt1">
<code class="bash plain">Requires: libiconv </code><code class="bash comments">#定义php依赖的包,需要yum安装(此处使用epel源)</code>
</div>
<div class="line number19 index18 alt2">
<code class="bash plain">%description </code><code class="bash comments">#软件包详述</code>
</div>
<div class="line number20 index19 alt1">
<code class="bash plain">PHP is a widely-used general-purpose scripting language that is especially suited </code><code class="bash keyword">for</code> <code class="bash plain">Web development and can be embedded into HTML.</code>
</div>
<div class="line number21 index20 alt2">
<code class="bash plain">%prep </code><code class="bash comments">#软件编译之前的处理,如解压</code>
</div>
<div class="line number22 index21 alt1">
<code class="bash plain">%setup -q </code><code class="bash comments">#这个宏的作用静默模式解压并cd</code>
</div>
<div class="line number23 index22 alt2">
<code class="bash plain">%build </code><code class="bash comments">#开始编译软件</code>
</div>
<div class="line number24 index23 alt1">
<code class="bash plain">%configure --prefix=%{_prefix} --with-config-</code><code class="bash functions">file</code><code class="bash plain">-path=%{_prefix}</code><code class="bash plain">/etc</code> <code class="bash plain">\</code>
</div>
<div class="line number25 index24 alt2">
<code class="bash plain">--with-fpm-user=%{_user} --with-fpm-group=%{_group} --</code><code class="bash functions">enable</code><code class="bash plain">-fpm --</code><code class="bash functions">enable</code><code class="bash plain">-fileinfo \</code>
</div>
<div class="line number26 index25 alt1">
<code class="bash plain">--with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd \</code>
</div>
<div class="line number27 index26 alt2">
<code class="bash plain">--with-iconv-</code><code class="bash functions">dir</code><code class="bash plain">=</code><code class="bash plain">/usr/local</code> <code class="bash plain">--with-freetype-</code><code class="bash functions">dir</code> <code class="bash plain">--with-jpeg-</code><code class="bash functions">dir</code> <code class="bash plain">--with-png-</code><code class="bash functions">dir</code> <code class="bash plain">--with-zlib \</code>
</div>
<div class="line number28 index27 alt1">
<code class="bash plain">--with-libxml-</code><code class="bash functions">dir</code><code class="bash plain">=</code><code class="bash plain">/usr</code> <code class="bash plain">--</code><code class="bash functions">enable</code><code class="bash plain">-xml --disable-rpath --</code><code class="bash functions">enable</code><code class="bash plain">-bcmath --</code><code class="bash functions">enable</code><code class="bash plain">-shmop --</code><code class="bash functions">enable</code><code class="bash plain">-exif \</code>
</div>
<div class="line number29 index28 alt2">
<code class="bash plain">--</code><code class="bash functions">enable</code><code class="bash plain">-sysvsem --</code><code class="bash functions">enable</code><code class="bash plain">-inline-optimization --with-curl --</code><code class="bash functions">enable</code><code class="bash plain">-mbregex --</code><code class="bash functions">enable</code><code class="bash plain">-inline-optimization \</code>
</div>
<div class="line number30 index29 alt1">
<code class="bash plain">--</code><code class="bash functions">enable</code><code class="bash plain">-mbstring --with-mcrypt --with-gd --</code><code class="bash functions">enable</code><code class="bash plain">-gd-native-ttf --with-openssl \</code>
</div>
<div class="line number31 index30 alt2">
<code class="bash plain">--with-mhash --</code><code class="bash functions">enable</code><code class="bash plain">-pcntl --</code><code class="bash functions">enable</code><code class="bash plain">-sockets --with-xmlrpc --</code><code class="bash functions">enable</code><code class="bash plain">-</code><code class="bash functions">ftp</code> <code class="bash plain">--</code><code class="bash functions">enable</code><code class="bash plain">-calendar \</code>
</div>
<div class="line number32 index31 alt1">
<code class="bash plain">--with-gettext --</code><code class="bash functions">enable</code><code class="bash plain">-zip --</code><code class="bash functions">enable</code><code class="bash plain">-soap --disable-ipv6 --disable-debug</code>
</div>
<div class="line number33 index32 alt2">
<code class="bash functions">make</code> <code class="bash plain">ZEND_EXTRA_LIBS=</code><code class="bash string">'-liconv'</code> <code class="bash plain">%{?_smp_mflags} </code><code class="bash comments">#%{?_smp_mflags} 的意思是:如果就多处理器的话make时并行编译</code>
</div>
<div class="line number34 index33 alt1">
<code class="bash plain">%</code><code class="bash functions">install</code> <code class="bash comments">#开始安装软件,如make install</code>
</div>
<div class="line number35 index34 alt2">
<code class="bash functions">rm</code> <code class="bash plain">-rf %{buildroot}</code>
</div>
<div class="line number36 index35 alt1">
<code class="bash functions">make</code> <code class="bash plain">INSTALL_ROOT=%{buildroot} </code><code class="bash functions">install</code>
</div>
<div class="line number37 index36 alt2">
<code class="bash functions">rm</code> <code class="bash plain">-rf %{buildroot}/{.channels,.depdb,.depdblock,.filemap,.lock,.registry}</code>
</div>
<div class="line number38 index37 alt1">
<code class="bash plain">%{__install} -p -D -m 0755 sapi</code><code class="bash plain">/fpm/init</code><code class="bash plain">.d.php-fpm %{buildroot}</code><code class="bash plain">/etc/init</code><code class="bash plain">.d</code><code class="bash plain">/php-fpm</code>
</div>
<div class="line number39 index38 alt2">
<code class="bash plain">%{__install} -p -D -m 0644 php.ini-production %{buildroot}/%{_prefix}</code><code class="bash plain">/etc/php</code><code class="bash plain">.ini</code>
</div>
<div class="line number40 index39 alt1">
<code class="bash comments">#rpm安装前执行的脚本</code>
</div>
<div class="line number41 index40 alt2">
<code class="bash plain">%pre</code>
</div>
<div class="line number42 index41 alt1">
<code class="bash functions">echo</code> <code class="bash string">'/usr/local/lib'</code> <code class="bash plain">> </code><code class="bash plain">/etc/ld</code><code class="bash plain">.so.conf.d</code><code class="bash plain">/local</code><code class="bash plain">.conf</code>
</div>
<div class="line number43 index42 alt2">
<code class="bash plain">/sbin/ldconfig</code>
</div>
<div class="line number44 index43 alt1">
<code class="bash keyword">if</code> <code class="bash plain">[ $1 == 1 -a -z </code><code class="bash string">"`grep ^%{_user} /etc/passwd`"</code> <code class="bash plain">]; </code><code class="bash keyword">then</code> <code class="bash comments"># $1有3个值,代表动作,安装类型,处理类型</code>
</div>
<div class="line number45 index44 alt2">
<code class="bash spaces"> </code><code class="bash plain">groupadd %{_group} -g 10000 </code><code class="bash comments"># 1:表示安装</code>
</div>
<div class="line number46 index45 alt1">
<code class="bash spaces"> </code><code class="bash functions">useradd</code> <code class="bash plain">-u 10000 -g 10000 -m %{_user} </code><code class="bash comments"># 2:表示升级</code>
</div>
<div class="line number47 index46 alt2">
<code class="bash keyword">fi</code> <code class="bash comments"># 0:表示卸载</code>
</div>
<div class="line number48 index47 alt1">
<code class="bash comments">#rpm安装后执行的脚本</code>
</div>
<div class="line number49 index48 alt2">
<code class="bash plain">%post</code>
</div>
<div class="line number50 index49 alt1">
<code class="bash keyword">if</code> <code class="bash plain">[ $1 == 1 ];</code><code class="bash keyword">then</code>
</div>
<div class="line number51 index50 alt2">
<code class="bash spaces"> </code><code class="bash plain">[ -z </code><code class="bash string">"`grep ^'export PATH=' /etc/profile`"</code> <code class="bash plain">] && </code><code class="bash functions">echo</code> <code class="bash string">"export PATH=%{_prefix}/bin:\$PATH"</code> <code class="bash plain">>> </code><code class="bash plain">/etc/profile</code>
</div>
<div class="line number52 index51 alt1">
<code class="bash spaces"> </code><code class="bash plain">[ -n </code><code class="bash string">"`grep ^'export PATH=' /etc/profile`"</code> <code class="bash plain">-a -z </code><code class="bash string">"`grep '%{_prefix}' /etc/profile`"</code> <code class="bash plain">] && </code><code class="bash functions">sed</code> <code class="bash plain">-i </code><code class="bash string">"s@^export PATH=\(.*\)@export PATH=%{_prefix}/bin:\1@"</code> <code class="bash plain">/etc/profile</code>
</div>
<div class="line number53 index52 alt2">
<code class="bash spaces"> </code><code class="bash plain">/sbin/chkconfig</code> <code class="bash plain">--add php-fpm</code>
</div>
<div class="line number54 index53 alt1">
<code class="bash spaces"> </code><code class="bash plain">/sbin/chkconfig</code> <code class="bash plain">php-fpm on</code>
</div>
<div class="line number55 index54 alt2">
<code class="bash spaces"> </code><code class="bash plain">Mem=`</code><code class="bash functions">free</code> <code class="bash plain">-m | </code><code class="bash functions">awk</code> <code class="bash string">'/Mem:/{print $2}'</code><code class="bash plain">` </code><code class="bash comments">#下面主要是参数的优化</code>
</div>
<div class="line number56 index55 alt1">
<code class="bash spaces"> </code><code class="bash keyword">if</code> <code class="bash plain">[ $Mem -</code><code class="bash keyword">le</code> <code class="bash plain">640 ];</code><code class="bash keyword">then</code>
</div>
<div class="line number57 index56 alt2">
<code class="bash spaces"> </code><code class="bash plain">Mem_level=512M</code>
</div>
<div class="line number58 index57 alt1">
<code class="bash spaces"> </code><code class="bash plain">Memory_limit=64</code>
</div>
<div class="line number59 index58 alt2">
<code class="bash spaces"> </code><code class="bash keyword">elif</code> <code class="bash plain">[ $Mem -gt 640 -a $Mem -</code><code class="bash keyword">le</code> <code class="bash plain">1280 ];</code><code class="bash keyword">then</code>
</div>
<div class="line number60 index59 alt1">
<code class="bash spaces"> </code><code class="bash plain">Mem_level=1G</code>
</div>
<div class="line number61 index60 alt2">
<code class="bash spaces"> </code><code class="bash plain">Memory_limit=128</code>
</div>
<div class="line number62 index61 alt1">
<code class="bash spaces"> </code><code class="bash keyword">elif</code> <code class="bash plain">[ $Mem -gt 1280 -a $Mem -</code><code class="bash keyword">le</code> <code class="bash plain">2500 ];</code><code class="bash keyword">then</code>
</div>
<div class="line number63 index62 alt2">
<code class="bash spaces"> </code><code class="bash plain">Mem_level=2G</code>
</div>
<div class="line number64 index63 alt1">
<code class="bash spaces"> </code><code class="bash plain">Memory_limit=192</code>
</div>
<div class="line number65 index64 alt2">
<code class="bash spaces"> </code><code class="bash keyword">elif</code> <code class="bash plain">[ $Mem -gt 2500 -a $Mem -</code><code class="bash keyword">le</code> <code class="bash plain">3500 ];</code><code class="bash keyword">then</code>
</div>
<div class="line number66 index65 alt1">
<code class="bash spaces"> </code><code class="bash plain">Mem_level=3G</code>
</div>
<div class="line number67 index66 alt2">
<code class="bash spaces"> </code><code class="bash plain">Memory_limit=256</code>
</div>
<div class="line number68 index67 alt1">
<code class="bash spaces"> </code><code class="bash keyword">elif</code> <code class="bash plain">[ $Mem -gt 3500 -a $Mem -</code><code class="bash keyword">le</code> <code class="bash plain">4500 ];</code><code class="bash keyword">then</code>
</div>
<div class="line number69 index68 alt2">
<code class="bash spaces"> </code><code class="bash plain">Mem_level=4G</code>
</div>
<div class="line number70 index69 alt1">
<code class="bash spaces"> </code><code class="bash plain">Memory_limit=320</code>
</div>
<div class="line number71 index70 alt2">
<code class="bash spaces"> </code><code class="bash keyword">elif</code> <code class="bash plain">[ $Mem -gt 4500 -a $Mem -</code><code class="bash keyword">le</code> <code class="bash plain">8000 ];</code><code class="bash keyword">then</code>
</div>
<div class="line number72 index71 alt1">
<code class="bash spaces"> </code><code class="bash plain">Mem_level=6G</code>
</div>
<div class="line number73 index72 alt2">
<code class="bash spaces"> </code><code class="bash plain">Memory_limit=384</code>
</div>
<div class="line number74 index73 alt1">
<code class="bash spaces"> </code><code class="bash keyword">elif</code> <code class="bash plain">[ $Mem -gt 8000 ];</code><code class="bash keyword">then</code>
</div>
<div class="line number75 index74 alt2">
<code class="bash spaces"> </code><code class="bash plain">Mem_level=8G</code>
</div>
<div class="line number76 index75 alt1">
<code class="bash spaces"> </code><code class="bash plain">Memory_limit=448</code>
</div>
<div class="line number77 index76 alt2">
<code class="bash spaces"> </code><code class="bash keyword">fi</code>
</div>
<div class="line number78 index77 alt1">
<code class="bash spaces"> </code><code class="bash functions">sed</code> <code class="bash plain">-i </code><code class="bash string">"s@^memory_limit.*@memory_limit = ${Memory_limit}M@"</code> <code class="bash plain">%{_prefix}</code><code class="bash plain">/etc/php</code><code class="bash plain">.ini</code>
</div>
<div class="line number79 index78 alt2">
<code class="bash spaces"> </code><code class="bash functions">sed</code> <code class="bash plain">-i </code><code class="bash string">'s@^output_buffering =@output_buffering = On\noutput_buffering =@'</code> <code class="bash plain">%{_prefix}</code><code class="bash plain">/etc/php</code><code class="bash plain">.ini</code>
</div>
<div class="line number80 index79 alt1">
<code class="bash spaces"> </code><code class="bash functions">sed</code> <code class="bash plain">-i </code><code class="bash string">'s@^;cgi.fix_pathinfo.*@cgi.fix_pathinfo=0@'</code> <code class="bash plain">%{_prefix}</code><code class="bash plain">/etc/php</code><code class="bash plain">.ini</code>
</div>
<div class="line number81 index80 alt2">
<code class="bash spaces"> </code><code class="bash functions">sed</code> <code class="bash plain">-i </code><code class="bash string">'s@^short_open_tag = Off@short_open_tag = On@'</code> <code class="bash plain">%{_prefix}</code><code class="bash plain">/etc/php</code><code class="bash plain">.ini</code>
</div>
<div class="line number82 index81 alt1">
<code class="bash spaces"> </code><code class="bash functions">sed</code> <code class="bash plain">-i </code><code class="bash string">'s@^expose_php = On@expose_php = Off@'</code> <code class="bash plain">%{_prefix}</code><code class="bash plain">/etc/php</code><code class="bash plain">.ini</code>
</div>
<div class="line number83 index82 alt2">
<code class="bash spaces"> </code><code class="bash functions">sed</code> <code class="bash plain">-i </code><code class="bash string">'s@^request_order.*@request_order = "CGP"@'</code> <code class="bash plain">%{_prefix}</code><code class="bash plain">/etc/php</code><code class="bash plain">.ini</code>
</div>
<div class="line number84 index83 alt1">
<code class="bash spaces"> </code><code class="bash functions">sed</code> <code class="bash plain">-i </code><code class="bash string">'s@^;date.timezone.*@date.timezone = Asia/Shanghai@'</code> <code class="bash plain">%{_prefix}</code><code class="bash plain">/etc/php</code><code class="bash plain">.ini</code>
</div>
<div class="line number85 index84 alt2">
<code class="bash spaces"> </code><code class="bash functions">sed</code> <code class="bash plain">-i </code><code class="bash string">'s@^post_max_size.*@post_max_size = 50M@'</code> <code class="bash plain">%{_prefix}</code><code class="bash plain">/etc/php</code><code class="bash plain">.ini</code>
</div>
<div class="line number86 index85 alt1">
<code class="bash spaces"> </code><code class="bash functions">sed</code> <code class="bash plain">-i </code><code class="bash string">'s@^upload_max_filesize.*@upload_max_filesize = 50M@'</code> <code class="bash plain">%{_prefix}</code><code class="bash plain">/etc/php</code><code class="bash plain">.ini</code>
</div>
<div class="line number87 index86 alt2">
<code class="bash spaces"> </code><code class="bash functions">sed</code> <code class="bash plain">-i </code><code class="bash string">'s@^;upload_tmp_dir.*@upload_tmp_dir = /tmp@'</code> <code class="bash plain">%{_prefix}</code><code class="bash plain">/etc/php</code><code class="bash plain">.ini</code>
</div>
<div class="line number88 index87 alt1">
<code class="bash spaces"> </code><code class="bash functions">sed</code> <code class="bash plain">-i </code><code class="bash string">'s@^max_execution_time.*@max_execution_time = 5@'</code> <code class="bash plain">%{_prefix}</code><code class="bash plain">/etc/php</code><code class="bash plain">.ini</code>
</div>
<div class="line number89 index88 alt2">
<code class="bash spaces"> </code><code class="bash functions">sed</code> <code class="bash plain">-i </code><code class="bash string">'s@^disable_functions.*@disable_functions = passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket,popen@'</code> <code class="bash plain">%{_prefix}</code><code class="bash plain">/etc/php</code><code class="bash plain">.ini</code>
</div>
<div class="line number90 index89 alt1">
<code class="bash spaces"> </code><code class="bash functions">sed</code> <code class="bash plain">-i </code><code class="bash string">'s@^session.cookie_httponly.*@session.cookie_httponly = 1@'</code> <code class="bash plain">%{_prefix}</code><code class="bash plain">/etc/php</code><code class="bash plain">.ini</code>
</div>
<div class="line number91 index90 alt2">
<code class="bash spaces"> </code><code class="bash functions">sed</code> <code class="bash plain">-i </code><code class="bash string">'s@^mysqlnd.collect_memory_statistics.*@mysqlnd.collect_memory_statistics = On@'</code> <code class="bash plain">%{_prefix}</code><code class="bash plain">/etc/php</code><code class="bash plain">.ini</code>
</div>
<div class="line number92 index91 alt1">
<code class="bash spaces"> </code><code class="bash functions">cat</code> <code class="bash plain">> %{_prefix}</code><code class="bash plain">/etc/php-fpm</code><code class="bash plain">.conf <<EOF</code>
</div>
<div class="line number93 index92 alt2">
<code class="bash plain">;;;;;;;;;;;;;;;;;;;;;</code>
</div>
<div class="line number94 index93 alt1">
<code class="bash plain">; FPM Configuration ;</code>
</div>
<div class="line number95 index94 alt2">
<code class="bash plain">;;;;;;;;;;;;;;;;;;;;;</code>
</div>
<div class="line number96 index95 alt1">
<code class="bash plain">;;;;;;;;;;;;;;;;;;</code>
</div>
<div class="line number97 index96 alt2">
<code class="bash plain">; Global Options ;</code>
</div>
<div class="line number98 index97 alt1">
<code class="bash plain">;;;;;;;;;;;;;;;;;;</code>
</div>
<div class="line number99 index98 alt2">
<code class="bash plain"></code>
</div>
<div class="line number100 index99 alt1">
<code class="bash plain">pid = run</code><code class="bash plain">/php-fpm</code><code class="bash plain">.pid</code>
</div>
<div class="line number101 index100 alt2">
<code class="bash plain">error_log = log</code><code class="bash plain">/php-fpm</code><code class="bash plain">.log</code>
</div>
<div class="line number102 index101 alt1">
<code class="bash plain">log_level = warning</code>
</div>
<div class="line number103 index102 alt2">
<code class="bash plain">emergency_restart_threshold = 30</code>
</div>
<div class="line number104 index103 alt1">
<code class="bash plain">emergency_restart_interval = 60s</code>
</div>
<div class="line number105 index104 alt2">
<code class="bash plain">process_control_timeout = 10s</code>
</div>
<div class="line number106 index105 alt1">
<code class="bash plain">daemonize = </code><code class="bash functions">yes</code>
</div>
<div class="line number107 index106 alt2">
<code class="bash plain">;;;;;;;;;;;;;;;;;;;;</code>
</div>
<div class="line number108 index107 alt1">
<code class="bash plain">; Pool Definitions ;</code>
</div>
<div class="line number109 index108 alt2">
<code class="bash plain">;;;;;;;;;;;;;;;;;;;;</code>
</div>
<div class="line number110 index109 alt1">
<code class="bash plain">[%{_user}]</code>
</div>
<div class="line number111 index110 alt2">
<code class="bash plain">;listen = </code><code class="bash plain">/dev/shm/php-cgi</code><code class="bash plain">.sock</code>
</div>
<div class="line number112 index111 alt1">
<code class="bash plain">listen = 127.0.0.1:9000</code>
</div>
<div class="line number113 index112 alt2">
<code class="bash plain">listen.backlog = -1</code>
</div>
<div class="line number114 index113 alt1">
<code class="bash plain">listen.allowed_clients = 127.0.0.1</code>
</div>
<div class="line number115 index114 alt2">
<code class="bash plain">listen.owner = %{_user}</code>
</div>
<div class="line number116 index115 alt1">
<code class="bash plain">listen.group = %{_group}</code>
</div>
<div class="line number117 index116 alt2">
<code class="bash plain">listen.mode = 0666</code>
</div>
<div class="line number118 index117 alt1">
<code class="bash plain">user = %{_user}</code>
</div>
<div class="line number119 index118 alt2">
<code class="bash plain">group = %{_group}</code>
</div>
<div class="line number120 index119 alt1">
<code class="bash plain">pm = dynamic</code>
</div>
<div class="line number121 index120 alt2">
<code class="bash plain">pm.max_children = 12</code>
</div>
<div class="line number122 index121 alt1">
<code class="bash plain">pm.start_servers = 8</code>
</div>
<div class="line number123 index122 alt2">
<code class="bash plain">pm.min_spare_servers = 6</code>
</div>
<div class="line number124 index123 alt1">
<code class="bash plain">pm.max_spare_servers = 12</code>
</div>
<div class="line number125 index124 alt2">
<code class="bash plain">pm.max_requests = 2048</code>
</div>
<div class="line number126 index125 alt1">
<code class="bash plain">pm.process_idle_timeout = 10s</code>
</div>
<div class="line number127 index126 alt2">
<code class="bash plain">request_terminate_timeout = 120</code>
</div>
<div class="line number128 index127 alt1">
<code class="bash plain">request_slowlog_timeout = 0</code>
</div>
<div class="line number129 index128 alt2">
<code class="bash plain">slowlog = log</code><code class="bash plain">/slow</code><code class="bash plain">.log</code>
</div>
<div class="line number130 index129 alt1">
<code class="bash plain">rlimit_files = 51200</code>
</div>
<div class="line number131 index130 alt2">
<code class="bash plain">rlimit_core = 0</code>
</div>
<div class="line number132 index131 alt1">
<code class="bash plain">catch_workers_output = </code><code class="bash functions">yes</code>
</div>
<div class="line number133 index132 alt2">
<code class="bash plain">;</code><code class="bash functions">env</code><code class="bash plain"> = $HOSTNAME</code>
</div>
<div class="line number134 index133 alt1">
<code class="bash functions">env</code><code class="bash plain"> = </code><code class="bash plain">/usr/local/bin</code><code class="bash plain">:</code><code class="bash plain">/usr/bin</code><code class="bash plain">:</code><code class="bash plain">/bin</code>
</div>
<div class="line number135 index134 alt2">
<code class="bash functions">env</code><code class="bash plain"> = </code><code class="bash plain">/tmp</code>
</div>
<div class="line number136 index135 alt1">
<code class="bash functions">env</code><code class="bash plain"> = </code><code class="bash plain">/tmp</code>
</div>
<div class="line number137 index136 alt2">
<code class="bash functions">env</code><code class="bash plain"> = </code><code class="bash plain">/tmp</code>
</div>
<div class="line number138 index137 alt1">
<code class="bash plain">EOF</code>
</div>
<div class="line number139 index138 alt2">
<code class="bash spaces"> </code><code class="bash keyword">if</code> <code class="bash plain">[ $Mem -</code><code class="bash keyword">le</code> <code class="bash plain">3000 ];</code><code class="bash keyword">then</code>
</div>
<div class="line number140 index139 alt1">
<code class="bash spaces"> </code><code class="bash functions">sed</code> <code class="bash plain">-i </code><code class="bash string">"s@^pm.max_children.*@pm.max_children = $(($Mem/2/20))@"</code> <code class="bash plain">%{_prefix}</code><code class="bash plain">/etc/php-fpm</code><code class="bash plain">.conf</code>
</div>
<div class="line number141 index140 alt2">
<code class="bash spaces"> </code><code class="bash functions">sed</code> <code class="bash plain">-i </code><code class="bash string">"s@^pm.start_servers.*@pm.start_servers = $(($Mem/2/30))@"</code> <code class="bash plain">%{_prefix}</code><code class="bash plain">/etc/php-fpm</code><code class="bash plain">.conf</code>
</div>
<div class="line number142 index141 alt1">
<code class="bash spaces"> </code><code class="bash functions">sed</code> <code class="bash plain">-i </code><code class="bash string">"s@^pm.min_spare_servers.*@pm.min_spare_servers = $(($Mem/2/40))@"</code> <code class="bash plain">%{_prefix}</code><code class="bash plain">/etc/php-fpm</code><code class="bash plain">.conf</code>
</div>
<div class="line number143 index142 alt2">
<code class="bash spaces"> </code><code class="bash functions">sed</code> <code class="bash plain">-i </code><code class="bash string">"s@^pm.max_spare_servers.*@pm.max_spare_servers = $(($Mem/2/20))@"</code> <code class="bash plain">%{_prefix}</code><code class="bash plain">/etc/php-fpm</code><code class="bash plain">.conf</code>
</div>
<div class="line number144 index143 alt1">
<code class="bash spaces"> </code><code class="bash keyword">elif</code> <code class="bash plain">[ $Mem -gt 3000 -a $Mem -</code><code class="bash keyword">le</code> <code class="bash plain">4500 ];</code><code class="bash keyword">then</code>
</div>
<div class="line number145 index144 alt2">
<code class="bash spaces"> </code><code class="bash functions">sed</code> <code class="bash plain">-i </code><code class="bash string">"s@^pm.max_children.*@pm.max_children = 80@"</code> <code class="bash plain">%{_prefix}</code><code class="bash plain">/etc/php-fpm</code><code class="bash plain">.conf</code>
</div>
<div class="line number146 index145 alt1">
<code class="bash spaces"> </code><code class="bash functions">sed</code> <code class="bash plain">-i </code><code class="bash string">"s@^pm.start_servers.*@pm.start_servers = 50@"</code> <code class="bash plain">%{_prefix}</code><code class="bash plain">/etc/php-fpm</code><code class="bash plain">.conf</code>
</div>
<div class="line number147 index146 alt2">
<code class="bash spaces"> </code><code class="bash functions">sed</code> <code class="bash plain">-i </code><code class="bash string">"s@^pm.min_spare_servers.*@pm.min_spare_servers = 40@"</code> <code class="bash plain">%{_prefix}</code><code class="bash plain">/etc/php-fpm</code><code class="bash plain">.conf</code>
</div>
<div class="line number148 index147 alt1">
<code class="bash spaces"> </code><code class="bash functions">sed</code> <code class="bash plain">-i </code><code class="bash string">"s@^pm.max_spare_servers.*@pm.max_spare_servers = 80@"</code> <code class="bash plain">%{_prefix}</code><code class="bash plain">/etc/php-fpm</code><code class="bash plain">.conf</code>
</div>
<div class="line number149 index148 alt2">
<code class="bash spaces"> </code><code class="bash keyword">elif</code> <code class="bash plain">[ $Mem -gt 4500 -a $Mem -</code><code class="bash keyword">le</code> <code class="bash plain">6500 ];</code><code class="bash keyword">then</code>
</div>
<div class="line number150 index149 alt1">
<code class="bash spaces"> </code><code class="bash functions">sed</code> <code class="bash plain">-i </code><code class="bash string">"s@^pm.max_children.*@pm.max_children = 90@"</code> <code class="bash plain">%{_prefix}</code><code class="bash plain">/etc/php-fpm</code><code class="bash plain">.conf</code>
</div>
<div class="line number151 index150 alt2">
<code class="bash spaces"> </code><code class="bash functions">sed</code> <code class="bash plain">-i </code><code class="bash string">"s@^pm.start_servers.*@pm.start_servers = 60@"</code> <code class="bash plain">%{_prefix}</code><code class="bash plain">/etc/php-fpm</code><code class="bash plain">.conf</code>
</div>
<div class="line number152 index151 alt1">
<code class="bash spaces"> </code><code class="bash functions">sed</code> <code class="bash plain">-i </code><code class="bash string">"s@^pm.min_spare_servers.*@pm.min_spare_servers = 50@"</code> <code class="bash plain">%{_prefix}</code><code class="bash plain">/etc/php-fpm</code><code class="bash plain">.conf</code>
</div>
<div class="line number153 index152 alt2">
<code class="bash spaces"> </code><code class="bash functions">sed</code> <code class="bash plain">-i </code><code class="bash string">"s@^pm.max_spare_servers.*@pm.max_spare_servers = 90@"</code> <code class="bash plain">%{_prefix}</code><code class="bash plain">/etc/php-fpm</code><code class="bash plain">.conf</code>
</div>
<div class="line number154 index153 alt1">
<code class="bash spaces"> </code><code class="bash keyword">elif</code> <code class="bash plain">[ $Mem -gt 6500 -a $Mem -</code><code class="bash keyword">le</code> <code class="bash plain">8500 ];</code><code class="bash keyword">then</code>
</div>
<div class="line number155 index154 alt2">
<code class="bash spaces"> </code><code class="bash functions">sed</code> <code class="bash plain">-i </code><code class="bash string">"s@^pm.max_children.*@pm.max_children = 100@"</code> <code class="bash plain">%{_prefix}</code><code class="bash plain">/etc/php-fpm</code><code class="bash plain">.conf</code>
</div>
<div class="line number156 index155 alt1">
<code class="bash spaces"> </code><code class="bash functions">sed</code> <code class="bash plain">-i </code><code class="bash string">"s@^pm.start_servers.*@pm.start_servers = 70@"</code> <code class="bash plain">%{_prefix}</code><code class="bash plain">/etc/php-fpm</code><code class="bash plain">.conf</code>
</div>
<div class="line number157 index156 alt2">
<code class="bash spaces"> </code><code class="bash functions">sed</code> <code class="bash plain">-i </code><code class="bash string">"s@^pm.min_spare_servers.*@pm.min_spare_servers = 60@"</code> <code class="bash plain">%{_prefix}</code><code class="bash plain">/etc/php-fpm</code><code class="bash plain">.conf</code>
</div>
<div class="line number158 index157 alt1">
<code class="bash spaces"> </code><code class="bash functions">sed</code> <code class="bash plain">-i </code><code class="bash string">"s@^pm.max_spare_servers.*@pm.max_spare_servers = 100@"</code> <code class="bash plain">%{_prefix}</code><code class="bash plain">/etc/php-fpm</code><code class="bash plain">.conf</code>
</div>
<div class="line number159 index158 alt2">
<code class="bash spaces"> </code><code class="bash keyword">elif</code> <code class="bash plain">[ $Mem -gt 8500 ];</code><code class="bash keyword">then</code>
</div>
<div class="line number160 index159 alt1">
<code class="bash spaces"> </code><code class="bash functions">sed</code> <code class="bash plain">-i </code><code class="bash string">"s@^pm.max_children.*@pm.max_children = 120@"</code> <code class="bash plain">%{_prefix}</code><code class="bash plain">/etc/php-fpm</code><code class="bash plain">.conf</code>
</div>
<div class="line number161 index160 alt2">
<code class="bash spaces"> </code><code class="bash functions">sed</code> <code class="bash plain">-i </code><code class="bash string">"s@^pm.start_servers.*@pm.start_servers = 80@"</code> <code class="bash plain">%{_prefix}</code><code class="bash plain">/etc/php-fpm</code><code class="bash plain">.conf</code>
</div>
<div class="line number162 index161 alt1">
<code class="bash spaces"> </code><code class="bash functions">sed</code> <code class="bash plain">-i </code><code class="bash string">"s@^pm.min_spare_servers.*@pm.min_spare_servers = 70@"</code> <code class="bash plain">%{_prefix}</code><code class="bash plain">/etc/php-fpm</code><code class="bash plain">.conf</code>
</div>
<div class="line number163 index162 alt2">
<code class="bash spaces"> </code><code class="bash functions">sed</code> <code class="bash plain">-i </code><code class="bash string">"s@^pm.max_spare_servers.*@pm.max_spare_servers = 120@"</code> <code class="bash plain">%{_prefix}</code><code class="bash plain">/etc/php-fpm</code><code class="bash plain">.conf</code>
</div>
<div class="line number164 index163 alt1">
<code class="bash spaces"> </code><code class="bash keyword">fi</code>
</div>
<div class="line number165 index164 alt2">
<code class="bash keyword">fi</code>
</div>
<div class="line number166 index165 alt1">
<code class="bash comments">#rpm卸载前执行的脚本</code>
</div>
<div class="line number167 index166 alt2">
<code class="bash plain">%preun</code>
</div>
<div class="line number168 index167 alt1">
<code class="bash keyword">if</code> <code class="bash plain">[ $1 == 0 ];</code><code class="bash keyword">then</code>
</div>
<div class="line number169 index168 alt2">
<code class="bash spaces"> </code><code class="bash plain">/etc/init</code><code class="bash plain">.d</code><code class="bash plain">/php-fpm</code> <code class="bash plain">stop > </code><code class="bash plain">/dev/null</code> <code class="bash plain">2>&1</code>
</div>
<div class="line number170 index169 alt1">
<code class="bash spaces"> </code><code class="bash plain">/sbin/chkconfig</code> <code class="bash plain">--del php-fpm</code>
</div>
<div class="line number171 index170 alt2">
<code class="bash spaces"> </code><code class="bash keyword">if</code> <code class="bash plain">[ -e </code><code class="bash string">'/etc/profile.d/custom_profile_new.sh'</code> <code class="bash plain">];</code><code class="bash keyword">then</code>
</div>
<div class="line number172 index171 alt1">
<code class="bash spaces"> </code><code class="bash functions">sed</code> <code class="bash plain">-i </code><code class="bash string">'s@%{_prefix}/bin:@@'</code> <code class="bash plain">/etc/profile</code><code class="bash plain">.d</code><code class="bash plain">/custom_profile_new</code><code class="bash plain">.sh</code>
</div>
<div class="line number173 index172 alt2">
<code class="bash spaces"> </code><code class="bash keyword">else</code>
</div>
<div class="line number174 index173 alt1">
<code class="bash spaces"> </code><code class="bash functions">sed</code> <code class="bash plain">-i </code><code class="bash string">'s@%{_prefix}/bin:@@'</code> <code class="bash plain">/etc/profile</code>
</div>
<div class="line number175 index174 alt2">
<code class="bash spaces"> </code><code class="bash keyword">fi</code>
</div>
<div class="line number176 index175 alt1">
<code class="bash keyword">fi</code>
</div>
<div class="line number177 index176 alt2">
<code class="bash comments">#%postun rpm卸载后执行的脚本</code>
</div>
<div class="line number178 index177 alt1">
<code class="bash plain">%clean </code><code class="bash comments">#clean的主要作用就是删除BUILD</code>
</div>
<div class="line number179 index178 alt2">
<code class="bash functions">rm</code> <code class="bash plain">-rf %{buildroot}</code>
</div>
<div class="line number180 index179 alt1">
<code class="bash plain">%files </code><code class="bash comments">#指定哪些文件需要被打包,如/usr/local/php</code>
</div>
<div class="line number181 index180 alt2">
<code class="bash plain">%defattr(-,root,root,-)</code>
</div>
<div class="line number182 index181 alt1">
<code class="bash plain">%{_prefix}</code>
</div>
<div class="line number183 index182 alt2">
<code class="bash plain">%attr(0755,root,root) </code><code class="bash plain">/etc/init</code><code class="bash plain">.d</code><code class="bash plain">/php-fpm</code>
</div>
<div class="line number184 index183 alt1">
<code class="bash plain">%changelog </code><code class="bash comments">#日志改变段, 这一段主要描述软件的开发记录</code>
</div>
<div class="line number185 index184 alt2">
<code class="bash plain">* Sat Oct 24 2015 yeho <lj2007331@gmail.com> 5.4.45-1</code>
</div>
<div class="line number186 index185 alt1">
<code class="bash plain">- Initial version</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
<strong>下面是php-redis.spec</strong></p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_904362">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
<div class="line number6 index5 alt1">
6</div>
<div class="line number7 index6 alt2">
7</div>
<div class="line number8 index7 alt1">
8</div>
<div class="line number9 index8 alt2">
9</div>
<div class="line number10 index9 alt1">
10</div>
<div class="line number11 index10 alt2">
11</div>
<div class="line number12 index11 alt1">
12</div>
<div class="line number13 index12 alt2">
13</div>
<div class="line number14 index13 alt1">
14</div>
<div class="line number15 index14 alt2">
15</div>
<div class="line number16 index15 alt1">
16</div>
<div class="line number17 index16 alt2">
17</div>
<div class="line number18 index17 alt1">
18</div>
<div class="line number19 index18 alt2">
19</div>
<div class="line number20 index19 alt1">
20</div>
<div class="line number21 index20 alt2">
21</div>
<div class="line number22 index21 alt1">
22</div>
<div class="line number23 index22 alt2">
23</div>
<div class="line number24 index23 alt1">
24</div>
<div class="line number25 index24 alt2">
25</div>
<div class="line number26 index25 alt1">
26</div>
<div class="line number27 index26 alt2">
27</div>
<div class="line number28 index27 alt1">
28</div>
<div class="line number29 index28 alt2">
29</div>
<div class="line number30 index29 alt1">
30</div>
<div class="line number31 index30 alt2">
31</div>
<div class="line number32 index31 alt1">
32</div>
<div class="line number33 index32 alt2">
33</div>
<div class="line number34 index33 alt1">
34</div>
<div class="line number35 index34 alt2">
35</div>
<div class="line number36 index35 alt1">
36</div>
<div class="line number37 index36 alt2">
37</div>
<div class="line number38 index37 alt1">
38</div>
<div class="line number39 index38 alt2">
39</div>
<div class="line number40 index39 alt1">
40</div>
<div class="line number41 index40 alt2">
41</div>
<div class="line number42 index41 alt1">
42</div>
<div class="line number43 index42 alt2">
43</div>
<div class="line number44 index43 alt1">
44</div>
<div class="line number45 index44 alt2">
45</div>
<div class="line number46 index45 alt1">
46</div>
<div class="line number47 index46 alt2">
47</div>
<div class="line number48 index47 alt1">
48</div>
<div class="line number49 index48 alt2">
49</div>
<div class="line number50 index49 alt1">
50</div>
<div class="line number51 index50 alt2">
51</div>
<div class="line number52 index51 alt1">
52</div>
<div class="line number53 index52 alt2">
53</div>
<div class="line number54 index53 alt1">
54</div>
<div class="line number55 index54 alt2">
55</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain"></code><code class="bash comments"># pwd</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash plain">/root/rpmbuild/SOURCES</code>
</div>
<div class="line number3 index2 alt2">
<code class="bash plain"></code><code class="bash comments"># ls</code>
</div>
<div class="line number4 index3 alt1">
<code class="bash plain">redis-2.2.7.tgz</code>
</div>
<div class="line number5 index4 alt2">
<code class="bash plain"></code><code class="bash comments"># cd ../SPEC</code>
</div>
<div class="line number6 index5 alt1">
<code class="bash plain"></code><code class="bash comments"># vim php-redis.spec</code>
</div>
<div class="line number7 index6 alt2">
<code class="bash plain">%global php_extdir %(</code><code class="bash plain">/usr/local/php/bin/php-config</code> <code class="bash plain">--extension-</code><code class="bash functions">dir</code> <code class="bash plain">2></code><code class="bash plain">/dev/null</code> <code class="bash plain">|| </code><code class="bash functions">echo</code> <code class="bash string">"undefined"</code><code class="bash plain">)</code>
</div>
<div class="line number8 index7 alt1">
<code class="bash plain">Name: php-redis</code>
</div>
<div class="line number9 index8 alt2">
<code class="bash plain">Version: 2.2.7</code>
</div>
<div class="line number10 index9 alt1">
<code class="bash plain">Release: 1%{?dist}</code>
</div>
<div class="line number11 index10 alt2">
<code class="bash plain">Summary: The phpredis extension provides an API </code><code class="bash keyword">for</code> <code class="bash plain">communicating with the Redis key-value store.</code>
</div>
<div class="line number12 index11 alt1">
<code class="bash plain">Group: Development</code><code class="bash plain">/Languages</code>
</div>
<div class="line number13 index12 alt2">
<code class="bash plain">License: PHP</code>
</div>
<div class="line number14 index13 alt1">
<code class="bash plain">URL: http:</code><code class="bash plain">//pecl</code><code class="bash plain">.php.net</code><code class="bash plain">/package/redis</code>
</div>
<div class="line number15 index14 alt2">
<code class="bash plain">Source0: redis-%{version}.tgz</code>
</div>
<div class="line number16 index15 alt1">
<code class="bash plain">BuildRoot: %_topdir</code><code class="bash plain">/BUILDROOT</code>
</div>
<div class="line number17 index16 alt2">
<code class="bash plain">Requires: php</code>
</div>
<div class="line number18 index17 alt1">
<code class="bash plain">BuildRequires: php >= 5.4.40</code>
</div>
<div class="line number19 index18 alt2">
<code class="bash plain">%description</code>
</div>
<div class="line number20 index19 alt1">
<code class="bash plain">The phpredis extension provides an API </code><code class="bash keyword">for</code> <code class="bash plain">communicating with the Redis key-value store.</code>
</div>
<div class="line number21 index20 alt2">
<code class="bash plain">%prep</code>
</div>
<div class="line number22 index21 alt1">
<code class="bash plain">%setup -q -n redis-%{version}</code>
</div>
<div class="line number23 index22 alt2">
<code class="bash plain">%build</code>
</div>
<div class="line number24 index23 alt1">
<code class="bash plain">/usr/local/php/bin/phpize</code>
</div>
<div class="line number25 index24 alt2">
<code class="bash plain">%configure</code>
</div>
<div class="line number26 index25 alt1">
<code class="bash functions">make</code> <code class="bash plain">%{?_smp_mflags}</code>
</div>
<div class="line number27 index26 alt2">
<code class="bash plain">%</code><code class="bash functions">install</code>
</div>
<div class="line number28 index27 alt1">
<code class="bash functions">rm</code> <code class="bash plain">-rf %{buildroot}</code>
</div>
<div class="line number29 index28 alt2">
<code class="bash functions">mkdir</code> <code class="bash plain">-p %{buildroot}%{php_extdir}</code>
</div>
<div class="line number30 index29 alt1">
<code class="bash functions">make</code> <code class="bash functions">install</code> <code class="bash plain">INSTALL_ROOT=%{buildroot}</code>
</div>
<div class="line number31 index30 alt2">
<code class="bash functions">find</code> <code class="bash plain">%{buildroot} -name redis.so -</code><code class="bash functions">exec</code> <code class="bash plain">/bin/mv</code> <code class="bash plain">{} %{buildroot}%{php_extdir} \;</code>
</div>
<div class="line number32 index31 alt1">
<code class="bash comments">#rpm安装后执行的脚本</code>
</div>
<div class="line number33 index32 alt2">
<code class="bash plain">%post</code>
</div>
<div class="line number34 index33 alt1">
<code class="bash keyword">if</code> <code class="bash plain">[ $1 == 1 ];</code><code class="bash keyword">then</code>
</div>
<div class="line number35 index34 alt2">
<code class="bash spaces"> </code><code class="bash plain">[ -z </code><code class="bash string">"`grep '^extension_dir' /usr/local/php/etc/php.ini`"</code> <code class="bash plain">] && </code><code class="bash functions">echo</code> <code class="bash string">"extension_dir = \"%{php_extdir}\""</code> <code class="bash plain">>> </code><code class="bash plain">/usr/local/php/etc/php</code><code class="bash plain">.ini</code>
</div>
<div class="line number36 index35 alt1">
<code class="bash spaces"> </code><code class="bash functions">sed</code> <code class="bash plain">-i </code><code class="bash string">'s@^extension_dir\(.*\)@extension_dir\1\nextension = "redis.so"@'</code> <code class="bash plain">/usr/local/php/etc/php</code><code class="bash plain">.ini</code>
</div>
<div class="line number37 index36 alt2">
<code class="bash keyword">fi</code>
</div>
<div class="line number38 index37 alt1">
<code class="bash comments">#rpm卸载前执行的脚本</code>
</div>
<div class="line number39 index38 alt2">
<code class="bash plain">%preun</code>
</div>
<div class="line number40 index39 alt1">
<code class="bash keyword">if</code> <code class="bash plain">[ $1 == 0 ];</code><code class="bash keyword">then</code>
</div>
<div class="line number41 index40 alt2">
<code class="bash spaces"> </code><code class="bash plain">/etc/init</code><code class="bash plain">.d</code><code class="bash plain">/php-fpm</code> <code class="bash plain">stop > </code><code class="bash plain">/dev/null</code> <code class="bash plain">2>&1</code>
</div>
<div class="line number42 index41 alt1">
<code class="bash spaces"> </code><code class="bash functions">sed</code> <code class="bash plain">-i </code><code class="bash string">'/redis.so/d'</code> <code class="bash plain">/usr/local/php/etc/php</code><code class="bash plain">.ini</code>
</div>
<div class="line number43 index42 alt2">
<code class="bash keyword">fi</code>
</div>
<div class="line number44 index43 alt1">
<code class="bash comments">#%postun rpm卸载后执行的脚本</code>
</div>
<div class="line number45 index44 alt2">
<code class="bash keyword">if</code> <code class="bash plain">[ $1 == 0 ];</code><code class="bash keyword">then</code>
</div>
<div class="line number46 index45 alt1">
<code class="bash spaces"> </code><code class="bash plain">/etc/init</code><code class="bash plain">.d</code><code class="bash plain">/php-fpm</code> <code class="bash plain">start > </code><code class="bash plain">/dev/null</code> <code class="bash plain">2>&1</code>
</div>
<div class="line number47 index46 alt2">
<code class="bash keyword">fi</code>
</div>
<div class="line number48 index47 alt1">
<code class="bash plain">%clean</code>
</div>
<div class="line number49 index48 alt2">
<code class="bash functions">rm</code> <code class="bash plain">-rf %{buildroot}</code>
</div>
<div class="line number50 index49 alt1">
<code class="bash plain">%files</code>
</div>
<div class="line number51 index50 alt2">
<code class="bash plain">%defattr(-,root,root,-)</code>
</div>
<div class="line number52 index51 alt1">
<code class="bash plain">%{php_extdir}</code><code class="bash plain">/redis</code><code class="bash plain">.so</code>
</div>
<div class="line number53 index52 alt2">
<code class="bash plain">%changelog</code>
</div>
<div class="line number54 index53 alt1">
<code class="bash plain">* Sat Oct 24 2015 yeho <lj2007331@gmail.com> 2.2.7-1</code>
</div>
<div class="line number55 index54 alt2">
<code class="bash plain">- Initial version</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
<strong>编译rpm包</strong></p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_552343">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain"></code><code class="bash comments"># rpmbuild -bb php.spec 制作php rpm二进制包</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash plain"></code><code class="bash comments"># rpmbuild -bb php-redis.spec 制作php-redis rpm二进制包</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!</p>
頁:
[1]