PHP 5.3.1 MySQL 5.0.89 Nginx 0.8.33 或 0.7.65 (可选) 现在,我们可以快速全自动搞定 CentOS + Nginx + PHP-FPM + MySQL 的 安装 了 这个可比网上流传的什么一键 安装 包要好得多,强烈推荐此法 安装 ,适合所有菜鸟和高手 我服务器上全用的源代码编译 安
PHP 5.3.1
MySQL 5.0.89
Nginx 0.8.33 或 0.7.65 (可选)
现在,我们可以快速全自动搞定 CentOS + Nginx + PHP-FPM + MySQL 的安装了
这个可比网上流传的什么一键安装包要好得多,强烈推荐此法安装,适合所有菜鸟和高手
我服务器上全用的源代码编译安装,也好不到哪去,还很费劲
我这个装完已经包含PHP的一些常用扩展, PDO,eaccelerator,memcache,tidy等等
先新建一个 repo
<p><span>#</span><span> vi /etc/yum.repos.d/centos.21andy.com.repo</span></p>
放入如下内容
<p><span>[21Andy</span><span>.</span><span>com]<br>name</span><span>=</span><span>21Andy</span><span>.</span><span>com Packages </span><span>for</span><span> Enterprise Linux </span><span>5</span><span>-</span><span>$basearch</span><span><br>baseurl</span><span>=</span><span>http</span><span>:</span><span>//</span><span>www.21andy.com/centos/5/$basearch/</span><span><br></span><span>enabled</span><span>=</span><span>1</span><span><br>gpgcheck</span><span>=</span><span>0</span><span><br>protect</span><span>=</span><span>1</span></p>
启用 EPEL repo
i386
rpm -ihv
<span>http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm</span>
x86_64
rpm -ihv
<span>http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm</span>
接着导入key
<p><span>rpm </span><span>--</span><span>import </span><span>/</span><span>etc</span><span>/</span><span>pki</span><span>/</span><span>rpm</span><span>-</span><span>gpg</span><span>/</span><span>RPM</span><span>-</span><span>GPG</span><span>-</span><span>KEY</span><span>-</span><span>EPEL</span></p>
好了,一键安装
<p><span>#</span><span> yum install nginx php-fpm mysql-server</span></p>
如果 nginx 你要用 0.7.65 最新稳定版,把yum -y install nginx换成yum -y install nginx-stable就可以了
更完整的安装
<p><span>yum </span><span>-</span><span>y update<br>yum </span><span>-</span><span>y </span><span>mysql</span><span>-</span><span>server<br>service mysqld start<br>mysqladmin </span><span>-</span><span>u root password root<br>service mysqld stop<br>yum </span><span>-</span><span>y install nginx php</span><span>-</span><span>fpm <br>php</span><span>-</span><span>cli php</span><span>-</span><span>pdo php</span><span>-</span><span>mysql</span><span> php</span><span>-</span><span>mcrypt php</span><span>-</span><span>mbstring <br>php</span><span>-</span><span>gd php</span><span>-</span><span>tidy php</span><span>-</span><span>xml php</span><span>-</span><span>xmlrpc <br>php</span><span>-</span><span>pear php</span><span>-</span><span>pecl</span><span>-</span><span>memcache php</span><span>-</span><span>eaccelerator<br></span><span>#</span><span> APC 和 eAccelerator 有冲突,2选1</span><span><br></span><span>yum </span><span>-</span><span>y install php</span><span>-</span><span>pecl</span><span>-</span><span>apc</span></p>
看下我的完整安装,只要一句
yum -y install nginx mysql-server php-fpm php-cli php-pdo php-mysql php-mcrypt php-mbstring php-gd php-tidy php-xml php-xmlrpc php-pear php-pecl-memcache php-eaccelerator
安装结果,全自动
<p><span>Dependencies Resolved<br></span><span>==========================================================</span><span><br>Package Arch Version Repository Size<br></span><span>==========================================================</span><span><br>Installing</span><span>:</span><span><br></span><span>mysql</span><span> x86_64 </span><span>5.0</span><span>.</span><span>89</span><span>-</span><span>1</span><span>.</span><span>el5 21Andy</span><span>.</span><span>com </span><span>3.5</span><span> M<br></span><span>mysql</span><span>-</span><span>server x86_64 </span><span>5.0</span><span>.</span><span>89</span><span>-</span><span>1</span><span>.</span><span>el5 21Andy</span><span>.</span><span>com </span><span>10</span><span> M<br>nginx x86_64 </span><span>0.8</span><span>.</span><span>33</span><span>-</span><span>3</span><span>.</span><span>el5 21Andy</span><span>.</span><span>com </span><span>422</span><span> k<br>php</span><span>-</span><span>cli x86_64 </span><span>5.3</span><span>.</span><span>1</span><span>-</span><span>2</span><span>.</span><span>el5 21Andy</span><span>.</span><span>com </span><span>2.4</span><span> M<br>php</span><span>-</span><span>eaccelerator x86_64 </span><span>2</span><span>:</span><span>0.9</span><span>.</span><span>6</span><span>-</span><span>1</span><span>.</span><span>el5 21Andy</span><span>.</span><span>com </span><span>118</span><span> k<br>php</span><span>-</span><span>fpm x86_64 </span><span>5.3</span><span>.</span><span>1</span><span>-</span><span>2</span><span>.</span><span>el5 21Andy</span><span>.</span><span>com </span><span>1.2</span><span> M<br>php</span><span>-</span><span>gd x86_64 </span><span>5.3</span><span>.</span><span>1</span><span>-</span><span>2</span><span>.</span><span>el5 21Andy</span><span>.</span><span>com </span><span>110</span><span> k<br>php</span><span>-</span><span>mbstring x86_64 </span><span>5.3</span><span>.</span><span>1</span><span>-</span><span>2</span><span>.</span><span>el5 21Andy</span><span>.</span><span>com </span><span>1.1</span><span> M<br>php</span><span>-</span><span>mcrypt x86_64 </span><span>5.3</span><span>.</span><span>1</span><span>-</span><span>2</span><span>.</span><span>el5 21Andy</span><span>.</span><span>com </span><span>27</span><span> k<br>php</span><span>-</span><span>mysql</span><span> x86_64 </span><span>5.3</span><span>.</span><span>1</span><span>-</span><span>2</span><span>.</span><span>el5 21Andy</span><span>.</span><span>com </span><span>84</span><span> k<br>php</span><span>-</span><span>pdo x86_64 </span><span>5.3</span><span>.</span><span>1</span><span>-</span><span>2</span><span>.</span><span>el5 21Andy</span><span>.</span><span>com </span><span>91</span><span> k<br>php</span><span>-</span><span>pear noarch </span><span>1</span><span>:</span><span>1.9</span><span>.</span><span>0</span><span>-</span><span>1</span><span>.</span><span>el5 21Andy</span><span>.</span><span>com </span><span>420</span><span> k<br>php</span><span>-</span><span>pecl</span><span>-</span><span>memcache x86_64 </span><span>2.2</span><span>.</span><span>5</span><span>-</span><span>3</span><span>.</span><span>el5 21Andy</span><span>.</span><span>com </span><span>44</span><span> k<br>php</span><span>-</span><span>tidy x86_64 </span><span>5.3</span><span>.</span><span>1</span><span>-</span><span>2</span><span>.</span><span>el5 21Andy</span><span>.</span><span>com </span><span>31</span><span> k<br>php</span><span>-</span><span>xml x86_64 </span><span>5.3</span><span>.</span><span>1</span><span>-</span><span>2</span><span>.</span><span>el5 21Andy</span><span>.</span><span>com </span><span>115</span><span> k<br>php</span><span>-</span><span>xmlrpc x86_64 </span><span>5.3</span><span>.</span><span>1</span><span>-</span><span>2</span><span>.</span><span>el5 21Andy</span><span>.</span><span>com </span><span>48</span><span> k<br>Installing </span><span>for</span><span> dependencies</span><span>:</span><span><br>gmp x86_64 </span><span>4.1</span><span>.</span><span>4</span><span>-</span><span>10</span><span>.</span><span>el5 base </span><span>201</span><span> k<br>libXaw x86_64 </span><span>1.0</span><span>.</span><span>2</span><span>-</span><span>8.1</span><span> base </span><span>329</span><span> k<br>libXmu x86_64 </span><span>1.0</span><span>.</span><span>2</span><span>-</span><span>5</span><span> base </span><span>63</span><span> k<br>libXpm x86_64 </span><span>3.5</span><span>.</span><span>5</span><span>-</span><span>3</span><span> base </span><span>44</span><span> k<br>libedit x86_64 </span><span>2.11</span><span>-</span><span>2</span><span>.</span><span>20080712cvs</span><span>.</span><span>el5 epel </span><span>80</span><span> k<br>libmcrypt x86_64 </span><span>2.5</span><span>.</span><span>8</span><span>-</span><span>4</span><span>.</span><span>el5</span><span>.</span><span>centos extras </span><span>105</span><span> k<br>libtidy x86_64 </span><span>0.99</span><span>.</span><span>0</span><span>-</span><span>14.20070615</span><span>.</span><span>el5 epel </span><span>140</span><span> k<br>php</span><span>-</span><span>common x86_64 </span><span>5.3</span><span>.</span><span>1</span><span>-</span><span>2</span><span>.</span><span>el5 21Andy</span><span>.</span><span>com </span><span>554</span><span> k<br>sqlite2 x86_64 </span><span>2.8</span><span>.</span><span>17</span><span>-</span><span>5</span><span>.</span><span>el5 21Andy</span><span>.</span><span>com </span><span>165</span><span> k<br>t1lib x86_64 </span><span>5.1</span><span>.</span><span>1</span><span>-</span><span>7</span><span>.</span><span>el5 epel </span><span>208</span><span> k<br>Updating </span><span>for</span><span> dependencies</span><span>:</span><span><br>libevent x86_64 </span><span>1.4</span><span>.</span><span>12</span><span>-</span><span>1</span><span>.</span><span>el5 21Andy</span><span>.</span><span>com </span><span>129</span><span> k<br>Transaction Summary<br></span><span>==========================================================</span><span><br>Install </span><span>26</span><span> Package(s)<br>Update </span><span>1</span><span> Package(s)<br>Remove </span><span>0</span><span> Package(s</span></p>
最后只要 yum -y update 一下,全是最新的
别忘了开机启动
<p><span>chkconfig </span><span>--</span><span>level </span><span>345</span><span> mysqld on<br>chkconfig </span><span>--</span><span>level </span><span>345</span><span> php</span><span>-</span><span>fpm on<br>chkconfig </span><span>--</span><span>level </span><span>345</span><span> nginx on</span></p>
来看看我用虚拟机测试的强大结果
http://www.21andy.com/blog/20100219/1703.html
补充:所有的配置文件都在 /etc 目录下,包括 nginx, php-fpm, mysql 的配置文件,请自行查找设置,以下为我的 nginx 的配置范例
先新建一个 /www 目录,网站和日志也全放在这里
别忘了建日志存放目录,你在配置文件中 access_log 用到的 /www/logs
注意:fastcgi_params 要加入这一行
# vim /etc/nginx/fastcgi_params
<p><span>fastcgi_param SCRIPT_FILENAME </span><span>$document_root$fastcgi_script_name</span><span>;</span></p>
# vi /etc/nginx/nginx.conf
<p><span>1</span><span>.</span><span> user nobody nobody; <br> </span><span>2</span><span>.</span><span> <br> </span><span>3</span><span>.</span><span> worker_processes </span><span>8</span><span>; </span><span>#</span><span>这里根据你的CPU和内存配置, 设置2到10都OK </span><span><br></span><span>4</span><span>.</span><span> <br> </span><span>5</span><span>.</span><span>error_log</span><span>/</span><span>www</span><span>/</span><span>logs</span><span>/</span><span>nginx_error</span><span>.</span><span>log</span><span> crit; <br> </span><span>6</span><span>.</span><span> <br> </span><span>7</span><span>.</span><span> pid </span><span>/</span><span>usr</span><span>/</span><span>local</span><span>/</span><span>nginx</span><span>/</span><span>logs</span><span>/</span><span>nginx</span><span>.</span><span>pid; <br> </span><span>8</span><span>.</span><span> <br> </span><span>9</span><span>.</span><span>#</span><span>Specifies the value for maximum file descriptors that can be opened by this process. </span><span><br></span><span>10</span><span>.</span><span> worker_rlimit_nofile </span><span>51200</span><span>; <br> </span><span>11</span><span>.</span><span> <br> </span><span>12</span><span>.</span><span> events { <br> </span><span>13</span><span>.</span><span>use</span><span> epoll; <br> </span><span>14</span><span>.</span><span> worker_connections </span><span>51200</span><span>; <br> </span><span>15</span><span>.</span><span> } <br> </span><span>16</span><span>.</span><span> <br> </span><span>17</span><span>.</span><span> http { <br> </span><span>18</span><span>.</span><span>include</span><span> mime</span><span>.</span><span>types; <br> </span><span>19</span><span>.</span><span> default_type application</span><span>/</span><span>octet</span><span>-</span><span>stream; <br> </span><span>20</span><span>.</span><span> <br> </span><span>21</span><span>.</span><span>#</span><span>charse gb2312; # 默认编码,可以不设置 </span><span><br></span><span>22</span><span>.</span><span> <br> </span><span>23</span><span>.</span><span> server_names_hash_bucket_size </span><span>128</span><span>; <br> </span><span>24</span><span>.</span><span> client_header_buffer_size 16k; <br> </span><span>25</span><span>.</span><span> large_client_header_buffers </span><span>4</span><span> 16k; <br> </span><span>26</span><span>.</span><span> client_max_body_size 8m; <br> </span><span>27</span><span>.</span><span> <br> </span><span>28</span><span>.</span><span> sendfile on; <br> </span><span>29</span><span>.</span><span> tcp_nopush on; <br> </span><span>30</span><span>.</span><span> <br> </span><span>31</span><span>.</span><span> keepalive_timeout </span><span>60</span><span>; <br> </span><span>32</span><span>.</span><span> <br> </span><span>33</span><span>.</span><span> tcp_nodelay on; <br> </span><span>34</span><span>.</span><span> <br> </span><span>35</span><span>.</span><span> fastcgi_connect_timeout </span><span>300</span><span>; <br> </span><span>36</span><span>.</span><span> fastcgi_send_timeout </span><span>300</span><span>; <br> </span><span>37</span><span>.</span><span> fastcgi_read_timeout </span><span>300</span><span>; <br> </span><span>38</span><span>.</span><span> fastcgi_buffer_size 64k; <br> </span><span>39</span><span>.</span><span> fastcgi_buffers </span><span>4</span><span> 64k; <br> </span><span>40</span><span>.</span><span> fastcgi_busy_buffers_size 128k; <br> </span><span>41</span><span>.</span><span> fastcgi_temp_file_write_size 128k; <br> </span><span>42</span><span>.</span><span> <br> </span><span>43</span><span>.</span><span> gzip on; <br> </span><span>44</span><span>.</span><span> gzip_min_length 1k; <br> </span><span>45</span><span>.</span><span> gzip_buffers </span><span>4</span><span> 16k; <br> </span><span>46</span><span>.</span><span> gzip_http_version </span><span>1.0</span><span>; <br> </span><span>47</span><span>.</span><span> gzip_comp_level </span><span>5</span><span>; <br> </span><span>48</span><span>.</span><span> gzip_types text</span><span>/</span><span>plain text</span><span>/</span><span>javascript application</span><span>/</span><span>x</span><span>-</span><span>javascript text</span><span>/</span><span>css application</span><span>/</span><span>xml; <br> </span><span>49</span><span>.</span><span> gzip_vary on; <br> </span><span>50</span><span>.</span><span> <br> </span><span>51</span><span>.</span><span>#</span><span>limit_zone crawler $binary_remote_addr 10m; </span><span><br></span><span>52</span><span>.</span><span> server { <br> </span><span>53</span><span>.</span><span> listen </span><span>80</span><span>; <br> </span><span>54</span><span>.</span><span> server_name localhost; <br> </span><span>55</span><span>.</span><span> root </span><span>/</span><span>www; <br> </span><span>56</span><span>.</span><span> location </span><span>/</span><span>status { <br> </span><span>57</span><span>.</span><span> stub_status on; <br> </span><span>58</span><span>.</span><span> access_log off; <br> </span><span>59</span><span>.</span><span> } <br> </span><span>60</span><span>.</span><span> location </span><span>/</span><span> { <br> </span><span>61</span><span>.</span><span>#</span><span> 这里是把所有不存在的文件和目录,全都转到 index.php 处理 </span><span><br></span><span>62</span><span>.</span><span> try_files </span><span>$uri</span><span>$uri</span><span>/</span><span>/</span><span>index</span><span>.</span><span>php</span><span>?</span><span>q</span><span>=</span><span>$uri</span><span>&</span><span>$args</span><span>; <br> </span><span>63</span><span>.</span><span> } <br> </span><span>64</span><span>.</span><span> <br> </span><span>65</span><span>.</span><span>#</span><span> 这里分开放到 server.conf 是为了再开 server 的时候方便,统一调用,放到/etc/nginx/ 目录下 </span><span><br></span><span>66</span><span>.</span><span>include</span><span> server</span><span>.</span><span>conf; <br> </span><span>67</span><span>.</span><span> <br> </span><span>68</span><span>.</span><span> log_format access </span><span>'</span><span>$remote_addr - $remote_user [$time_local] "$request" </span><span>'</span><span> <br> </span><span>69</span><span>.</span><span>'</span><span>$status $body_bytes_sent "$http_referer" </span><span>'</span><span> <br> </span><span>70</span><span>.</span><span>'</span><span>"$http_user_agent" $http_x_forwarded_for</span><span>'</span><span>; <br> </span><span>71</span><span>.</span><span> access_log </span><span>/</span><span>www</span><span>/</span><span>logs</span><span>/</span><span>access</span><span>.</span><span>log</span><span> access; <br> </span><span>72</span><span>.</span><span> } <br> </span><span>73</span><span>.</span><span> <br> </span><span>74</span><span>.</span><span> server { <br> </span><span>75</span><span>.</span><span> listen </span><span>80</span><span>; <br> </span><span>76</span><span>.</span><span> server_name www</span><span>.</span><span>21andy</span><span>.</span><span>com 21andy</span><span>.</span><span>com </span><span>*.</span><span>21andy</span><span>.</span><span>com; <br> </span><span>77</span><span>.</span><span> root </span><span>/</span><span>www</span><span>/</span><span>21andy</span><span>.</span><span>com; <br> </span><span>78</span><span>.</span><span>if</span><span> (</span><span>$host</span><span>!~*</span><span> 21andy\</span><span>.</span><span>com$) { <br> </span><span>79</span><span>.</span><span>return</span><span>444</span><span>; <br> </span><span>80</span><span>.</span><span> } <br> </span><span>81</span><span>.</span><span> location </span><span>/</span><span> { <br> </span><span>82</span><span>.</span><span> try_files </span><span>$uri</span><span>$uri</span><span>/</span><span>/</span><span>index</span><span>.</span><span>php</span><span>?</span><span>q</span><span>=</span><span>$uri</span><span>&</span><span>$args</span><span>; <br> </span><span>83</span><span>.</span><span> } <br> </span><span>84</span><span>.</span><span>include</span><span> server</span><span>.</span><span>conf; </span><span>#</span><span> 这里复用了,这段就省了 </span><span><br></span><span>85</span><span>.</span><span> access_log </span><span>/</span><span>www</span><span>/</span><span>logs</span><span>/</span><span>21andy</span><span>.</span><span>com_access</span><span>.</span><span>log</span><span> access; <br> </span><span>86</span><span>.</span><span> } <br> </span><span>87</span><span>.</span><span> } </span></p>
# vi /etc/nginx/server.conf
<p><span>1</span><span>.</span><span> index index</span><span>.</span><span>html index</span><span>.</span><span>htm index</span><span>.</span><span>php; <br> </span><span>2</span><span>.</span><span> <br> </span><span>3</span><span>.</span><span>#</span><span>limit_conn crawler 20; </span><span><br></span><span>4</span><span>.</span><span> <br> </span><span>5</span><span>.</span><span> location </span><span>~</span><span>/</span><span>\</span><span>.</span><span>ht { <br> </span><span>6</span><span>.</span><span> deny all; <br> </span><span>7</span><span>.</span><span> } <br> </span><span>8</span><span>.</span><span> <br> </span><span>9</span><span>.</span><span> location </span><span>~</span><span>.*</span><span>\</span><span>.</span><span>(sqlite</span><span>|</span><span>sq3)$ { <br> </span><span>10</span><span>.</span><span> deny all; <br> </span><span>11</span><span>.</span><span> } <br> </span><span>12</span><span>.</span><span> <br> </span><span>13</span><span>.</span><span> location </span><span>~</span><span>.*</span><span>\</span><span>.</span><span>php$ { <br> </span><span>14</span><span>.</span><span> fastcgi_pass unix</span><span>:/</span><span>tmp</span><span>/</span><span>php</span><span>-</span><span>cgi</span><span>.</span><span>sock; <br> </span><span>15</span><span>.</span><span>#</span><span>fastcgi_pass 127.0.0.1:9000; </span><span><br></span><span>16</span><span>.</span><span> fastcgi_index index</span><span>.</span><span>php; <br> </span><span>17</span><span>.</span><span>include</span><span> fastcgi_params; <br> </span><span>18</span><span>.</span><span> } <br> </span><span>19</span><span>.</span><span> <br> </span><span>20</span><span>.</span><span> location </span><span>~</span><span>.*</span><span>\</span><span>.</span><span>(gif</span><span>|</span><span>jpg</span><span>|</span><span>jpeg</span><span>|</span><span>png</span><span>|</span><span>bmp</span><span>|</span><span>swf</span><span>|</span><span>ico)$ { <br> </span><span>21</span><span>.</span><span> expires 30d; <br> </span><span>22</span><span>.</span><span> access_log off; <br> </span><span>23</span><span>.</span><span> } <br> </span><span>24</span><span>.</span><span> <br> </span><span>25</span><span>.</span><span> location </span><span>~</span><span>.*</span><span>\</span><span>.</span><span>(js</span><span>|</span><span>css)</span><span>?</span><span>$ { <br> </span><span>26</span><span>.</span><span> expires 30d; <br> </span><span>27</span><span>.</span><span> access_log off; <br> </span><span>28</span><span>.</span><span> } </span></p>
本行以下内容可以略过
php-fpm 也可以用以下设置,但建议用上面的,比较稳定
<p><span>1</span><span>.</span><span> location </span><span>~</span><span> \</span><span>.</span><span>php$ { <br> </span><span>2</span><span>.</span><span> root </span><span>/</span><span>www; <br> </span><span>3</span><span>.</span><span> fastcgi_pass </span><span>127.0</span><span>.</span><span>0.1</span><span>:</span><span>9000</span><span>; <br> </span><span>4</span><span>.</span><span> fastcgi_index index</span><span>.</span><span>php; <br> </span><span>5</span><span>.</span><span>#</span><span>下面这一行要加在 /etc/nginx/fastcgi_params 里 </span><span><br></span><span>6</span><span>.</span><span>#</span><span>fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; </span><span><br></span><span>7</span><span>.</span><span>include</span><span> fastcgi_params; <br> </span><span>8</span><span>.</span><span> } </span></p>
不管是使用 php-cgi.sock 或 9000 端口方法,nginx 和 php-fpm 都要同时设置成一样的
nginx 的设置上面已经提过,记得同时修改 php-fpm.conf 相应的地方
# vi /etc/php-fpm.conf
<p><span>127.0</span><span>.</span><span>0.1</span><span>:</span><span>9000</span></p>
或
<p><span>unix</span><span>:/</span><span>tmp</span><span>/</span><span>php</span><span>-</span><span>cgi</span><span>.</span><span>sock</span></p>