【伍哥原创】
v1.0 2012-6-4 初稿
v1.1 2012-6-5 更新,增加php-redis模块的编译安装
【正文】
本文目的
CentOS 6.2 下通过yum安装nginx,mysql,php-fpm,redis。
环境准备
一台安装了CentOS 6.2的机器,可参考教程U盘安装CENTOS 6.2 32位系统(有图有真相)进行安装。
为什么通过yum进行安装?
在linux上安装软件,除了tarball方式以外,就是通过包管理程序来安装了。yum安装一个好处是升级非常的方便。当然tarball也有它的好处,产品环境请尽量使用tarball编译安装。至于选择那种方案就见仁见智。
开始安装
1,如果你不在机器(伍哥实验的机器IP是192.168.1.100)面前,请通过ssh连上服务器,最好使用root身份登录
ssh [email protected]
2,确认你的机器连上网络(如果网络都没有,还能yum吗?)
ping -c4 mirrors.163.com
如果不能ping通,请依次处理:
修改机器的IP配置
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0" HWADDR="00:15:58:1D:43:DA" NM_CONTROLLED="no" ONBOOT="yes" IPADDR=192.168.1.100 NETMASK=255.255.255.0 GATEWAY=192.168.1.1
修改DNS服务器配置
vim /etc/resolv.conf
nameserver 8.8.8.8 nameserver 8.8.4.4
修改网络配置
vim /etc/sysconfig/network
NETWORKING=yes
重启网络
/etc/init.d/network restart
3,配置CentOS-Base.repo的bashurl为 mirrors.163.com,这样yum下载安装包就快很多了
vim /etc/yum.repos.d/CentOS-Base.repo
把所有mirrorlist的行都加上#,把所有baseurl的#去掉,把域名修改为mirrors.163.com,例如:
baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/ (其他类似操作)
4,安装yum-priorities
yum install yum-priorities
5,增加其他的软件库epel和remi,因为remi依赖epel,所以先加入epel,再加入remi
rpm -Uvh http://mirrors.ustc.edu.cn/epel/6/i386/epel-release-6-7.noarch.rpm
接着编辑epel的repo配置文件
vim /etc/yum.repos.d/epel.repo
把所有mirrorlist的行都加上#,把所有baseurl的#去掉,把域名修改为mirrors.ustc.edu.cn,例如:
baseurl=http://mirrors.ustc.edu.cn/epel/6/$basearch (其他类似操作)
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
6,修改epel和remi的repo配置文件的优先级
vim /etc/yum.repos.d/epel.repo
然后每一项都加上priority=10
vim /etc/yum.repos.d/remi.repo
也是每一项都加上priority=10
7,yum安装nginx,mysql,php-fpm及相关模块,redis (一次安装这么多东东,爽!)
分别是nginx,mysql客户端,mysql服务器,php及相关模块,memcache模块,php加速器eaccelerator
yum install nginx mysql mysql-server php php-fpm php-cli php-pdo php-mysql php-mcrypt php-mbstring php-gd php-tidy php-xml php-xmlrpc php-pear php-devel php-pecl-memcache php-eaccelerator
8,增加系统用户web(nginx和php-fpm将以此用户身份运行)和web目录
useradd -r web
mkdir /web
9,配置及启动nginx
vim /etc/nginx/nginx.conf
把里面的user项改为web
vim /etc/nginx/conf.d/default.conf
并修改成
server { listen 80; root /web; #根目录 autoindex on; #当没有index文件时显示目录,在产品环境请设置为off location / { index index.php index.html index.htm; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
提醒:每个配置都必须以分号结束;fastcgi_param应使用$document_root代替hard-code的路径。
把nginx加入为开机启动项目
chkconfig nginx on
启动nginx
/etc/init.d/nginx start
10,启动并配置mysql
mysql比较特别点,需要先启动,然后配置
/etc/init.d/mysqld start
配置root密码
mysql_secure_installation
由于root没有初始密码,所以当提示输入密码时,直接按回车跳过,然后配置root密码,其他都直接按回车使用默认
把mysqld加入为开机启动项目
chkconfig mysqld on
11,启动redis,并安装php-redis模块
把redis加入为开机启动项目
chkconfig redis on
启动redis服务
/etc/init.d/redis start
先把开发工具组相关的包装一下
yum groupinstall “development tools”
然后开始编译安装php-redis模块
cd /tmp
wget https://github.com/nicolasff/phpredis/zipball/master -O php-redis.zip
unzip php-redis.zip
解压后目录是:nicolasff-phpredis-21d6614
cd nicolasff-phpredis-21d6614
phpize
./configure
make
make install
确认一下so文件已经放置到正确目录
ll /usr/lib/php/modules/redis.so
新建redis.ini,然后加入 extension=redis.so,以启用redis extension
vim /etc/php5/fpm/conf.d/redis.ini
12,配置并启动php-fpm
vim /etc/php-fpm.d/www.conf
把里面的user和group项改为web
vim /etc/php.ini
找到display_errors,把off改成on,这个设置是为了方便后面的调试,产品环境请设置为off
找到session.save_handler,把files改成redis
找到session.save_path,改成session.save_path = “tcp://127.0.0.1:6379?timeout=2″
把php-fpm加入为开机启动项目
chkconfig php-fpm on
启动fmp服务
/etc/init.d/php-fpm start
13,通过shell脚本检查各个进程和服务
vim check.sh
增加代码
#!/bin/sh PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin for soft in nginx mysqld php-fpm redis do echo -e "-------------------- stat of $soft --------------------" /etc/init.d/$soft status; echo -e " " ps aux|grep $soft --color=auto; echo -e " " netstat -ntulp|grep $soft --color=auto done
然后执行此脚本
sh check.sh
查看各个进程和服务的状态(注意红色高亮字体哦)
14,安装mysql管理工具phpmyadmin
cd /web
wget http://nchc.dl.sourceforge.net/project/phpmyadmin/phpMyAdmin/3.5.1/phpMyAdmin-3.5.1-english.tar.gz
tar zxvf phpMyAdmin-3.5.1-english.tar.gz
mv phpMyAdmin-3.5.1-english phpmyadmin
chown -R web.web phpmyadmin
cp phpmyadmin/config.sample.inc.php phpmyadmin/config.inc.php
15,打开80端口
vim /etc/sysconfig/iptables
在-A INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT加上一句
-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
然后重启iptables
/etc/init.d/iptables restart
16,访问phpmyadmin
http://192.168.1.100/phpmyadmin/
如果phpmyadmin可以正常操作mysql,则表示系统配置的nginx服务,php-fpm服务,mysql数据库及redis缓存服务一切正常!
在产品环境,请移除phpmyadmin或者把目录全部权限关闭:chmod 0000 phpmyadmin