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
#vi /etc/yum.repos.d/centos.21andy.com.repo
放入如下内容
[21Andy.com]
name=21Andy.com PackagesforEnterprise Linux5-$basearchbaseurl=http://www.21andy.com/centos/5/$basearch/enabled=1gpgcheck=0protect=1
启用 EPEL repo
i386
rpm -ihv
http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
x86_64
rpm -ihv
http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
接着导入key
rpm--import/etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL
好了,一键安装
#yum install nginx php-fpm mysql-server
如果 nginx 你要用 0.7.65 最新稳定版,把yum -y install nginx换成yum -y install nginx-stable就可以了
更完整的安装
yum-y update
yum-ymysql-server
service mysqld start
mysqladmin-u root password root
service mysqld stop
yum-y install nginx php-fpm
php-cli php-pdo php-mysqlphp-mcrypt php-mbstring
php-gd php-tidy php-xml php-xmlrpc
php-pear php-pecl-memcache php-eaccelerator#APC 和 eAccelerator 有冲突,2选1yum-y install php-pecl-apc
看下我的完整安装,只要一句
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
安装结果,全自动
Dependencies Resolved==========================================================Package Arch Version Repository Size==========================================================Installing:mysqlx86_645.0.89-1.el5 21Andy.com3.5Mmysql-server x86_645.0.89-1.el5 21Andy.com10M
nginx x86_640.8.33-3.el5 21Andy.com422k
php-cli x86_645.3.1-2.el5 21Andy.com2.4M
php-eaccelerator x86_642:0.9.6-1.el5 21Andy.com118k
php-fpm x86_645.3.1-2.el5 21Andy.com1.2M
php-gd x86_645.3.1-2.el5 21Andy.com110k
php-mbstring x86_645.3.1-2.el5 21Andy.com1.1M
php-mcrypt x86_645.3.1-2.el5 21Andy.com27k
php-mysqlx86_645.3.1-2.el5 21Andy.com84k
php-pdo x86_645.3.1-2.el5 21Andy.com91k
php-pear noarch1:1.9.0-1.el5 21Andy.com420k
php-pecl-memcache x86_642.2.5-3.el5 21Andy.com44k
php-tidy x86_645.3.1-2.el5 21Andy.com31k
php-xml x86_645.3.1-2.el5 21Andy.com115k
php-xmlrpc x86_645.3.1-2.el5 21Andy.com48k
Installingfordependencies:gmp x86_644.1.4-10.el5 base201k
libXaw x86_641.0.2-8.1base329k
libXmu x86_641.0.2-5base63k
libXpm x86_643.5.5-3base44k
libedit x86_642.11-2.20080712cvs.el5 epel80k
libmcrypt x86_642.5.8-4.el5.centos extras105k
libtidy x86_640.99.0-14.20070615.el5 epel140k
php-common x86_645.3.1-2.el5 21Andy.com554k
sqlite2 x86_642.8.17-5.el5 21Andy.com165k
t1lib x86_645.1.1-7.el5 epel208k
Updatingfordependencies:libevent x86_641.4.12-1.el5 21Andy.com129k
Transaction Summary==========================================================Install26Package(s)
Update1Package(s)
Remove0Package(s
最后只要 yum -y update 一下,全是最新的
别忘了开机启动
chkconfig--level345mysqld on
chkconfig--level345php-fpm on
chkconfig--level345nginx on
来看看我用虚拟机测试的强大结果
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
fastcgi_param SCRIPT_FILENAME$document_root$fastcgi_script_name;
# vi /etc/nginx/nginx.conf
1.user nobody nobody;2.3.worker_processes8;#这里根据你的CPU和内存配置, 设置2到10都OK4.5.error_log/www/logs/nginx_error.logcrit;6.7.pid/usr/local/nginx/logs/nginx.pid;8.9.#Specifies the value for maximum file descriptors that can be opened by this process.10.worker_rlimit_nofile51200;11.12.events {13.useepoll;14.worker_connections51200;15.}16.17.http {18.includemime.types;19.default_type application/octet-stream;20.21.#charse gb2312; # 默认编码,可以不设置22.23.server_names_hash_bucket_size128;24.client_header_buffer_size 16k;25.large_client_header_buffers416k;26.client_max_body_size 8m;27.28.sendfile on;29.tcp_nopush on;30.31.keepalive_timeout60;32.33.tcp_nodelay on;34.35.fastcgi_connect_timeout300;36.fastcgi_send_timeout300;37.fastcgi_read_timeout300;38.fastcgi_buffer_size 64k;39.fastcgi_buffers464k;40.fastcgi_busy_buffers_size 128k;41.fastcgi_temp_file_write_size 128k;42.43.gzip on;44.gzip_min_length 1k;45.gzip_buffers416k;46.gzip_http_version1.0;47.gzip_comp_level5;48.gzip_types text/plain text/javascript application/x-javascript text/css application/xml;49.gzip_vary on;50.51.#limit_zone crawler $binary_remote_addr 10m;52.server {53.listen80;54.server_name localhost;55.root/www;56.location/status {57.stub_status on;58.access_log off;59.}60.location/{61.#这里是把所有不存在的文件和目录,全都转到 index.php 处理62.try_files$uri$uri//index.php?q=$uri&$args;63.}64.65.#这里分开放到 server.conf 是为了再开 server 的时候方便,统一调用,放到/etc/nginx/ 目录下66.includeserver.conf;67.68.log_format access'$remote_addr - $remote_user [$time_local] "$request"'69.'$status $body_bytes_sent "$http_referer"'70.'"$http_user_agent" $http_x_forwarded_for';71.access_log/www/logs/access.logaccess;72.}73.74.server {75.listen80;76.server_name www.21andy.com 21andy.com*.21andy.com;77.root/www/21andy.com;78.if($host!~*21andy\.com$) {79.return444;80.}81.location/{82.try_files$uri$uri//index.php?q=$uri&$args;83.}84.includeserver.conf;#这里复用了,这段就省了85.access_log/www/logs/21andy.com_access.logaccess;86.}87.}
# vi /etc/nginx/server.conf
1.index index.html index.htm index.php;2.3.#limit_conn crawler 20;4.5.location~/\.ht {6.deny all;7.}8.9.location~.*\.(sqlite|sq3)$ {10.deny all;11.}12.13.location~.*\.php$ {14.fastcgi_pass unix:/tmp/php-cgi.sock;15.#fastcgi_pass 127.0.0.1:9000;16.fastcgi_index index.php;17.includefastcgi_params;18.}19.20.location~.*\.(gif|jpg|jpeg|png|bmp|swf|ico)$ {21.expires 30d;22.access_log off;23.}24.25.location~.*\.(js|css)?$ {26.expires 30d;27.access_log off;28.}
本行以下内容可以略过
php-fpm 也可以用以下设置,但建议用上面的,比较稳定
1.location~\.php$ {2.root/www;3.fastcgi_pass127.0.0.1:9000;4.fastcgi_index index.php;5.#下面这一行要加在 /etc/nginx/fastcgi_params 里6.#fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;7.includefastcgi_params;8.}
不管是使用 php-cgi.sock 或 9000 端口方法,nginx 和 php-fpm 都要同时设置成一样的
nginx 的设置上面已经提过,记得同时修改 php-fpm.conf 相应的地方
# vi /etc/php-fpm.conf
127.0.0.1:9000
或
unix:/tmp/php-cgi.sock