centos6.5安装nginx+php+mysql

RosRvm 8年前

来自: http://my.oschina.net/odison/blog/614371


1.nginx 安装

        查看yum下nginx版本信息

                 

yum list | grep nginx

                               发现版本太低,手动添加nginx的yum仓库:

   

 vi /etc/yum.repos.d/nginx.repo

        内容:

      

[nginx]    name=nginx repo    baseurl=http://nginx.org/packages/centos/$releasever/$basearch/    gpgcheck=0    enabled=1

        编辑保存之后再查看nginx版本

      安装:

yum install -y nginx

      安装完成之后可以通过 service nginx start 来启动服务

        注:

/etc/init.d/nginx start # 启动Nginx服务  /etc/init.d/nginx stop # 停止Nginx服务  /etc/nginx/nginx.conf # Nginx配置文件位置

        nginx的安装到此完成,启动之后可以在浏览器ip访问,会显示nginx的页面

2.安装php、php-fpm

        先下载php5.6版本,下载的源码放在/usr/local/src/ 下

cd /usr/local/src/  wget   tar -zcvf php-5.6.8.tar.gz

        编译php需要一些依赖包:

yum install -y libxml2 libxml2-devel openssl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libmcrypt libmcrypt-devel mcrypt mhash

        configure:

./configure --prefix=/usr/local/php5 --with-config-file-path=/usr/local/php5/etc --enable-fpm --disable-ipv6 --enable-pdo --with-pdo-mysql --with-openssl --with-mcrypt --with-mhash --enable-json --enable-mbstring --with-gd --with-openssl-dir --with-jpeg-dir --with-png-dir --with-zlib-dir --with-freetype-dir --enable-gd-native-ttf --enable-gd-jis-conv --enable-zip

        安装:

make  make install

        安装完成之后设置fpm

cp /usr/local/php5/etc/php-fpm.conf.default /usr/local/php5/etc/php-fpm.conf    vi php-fpm.conf   // 找到如下几行,确保如下几行前没有”;”   pid = run/php-fpm.pid   error_log = log/php-fpm.log   log_level = notice   listen = 127.0.0.1:9000   pm = dynamic   pm.max_children = 50   pm.start_servers = 20   pm.min_spare_servers = 5   pm.max_spare_servers = 35   pm.max_requests = 500

    pm表示使用哪种方式,有两个值可以选择,就是static(静态)或者dynamic(动态)。在更老一些的版本中,dynamic被称作apache-like。这个要注意看配置文件的说明。

下面4个参数的意思分别为:
pm.max_children:静态方式下开启的php-fpm进程数量。
pm.start_servers:动态方式下的起始php-fpm进程数量。
pm.min_spare_servers:动态方式下的最小php-fpm进程数量。
pm.max_spare_servers:动态方式下的最大php-fpm进程数量。

如果dm设置为static,那么其实只有pm.max_children这个参数生效。系统会开启设置数量的php-fpm进程。
如果dm设置为 dynamic,那么pm.max_children参数失效,后面3个参数生效。  
系统会在php-fpm运行开始 的时候启动pm.start_servers个php-fpm进程,
然后根据系统的需求动态在pm.min_spare_servers和 pm.max_spare_servers之间调整php-fpm进程数。

利用php自带的php-fpm管理工具,可以很方便的start,stop,restart
把管理工具从源码包里放到php5/sbin文件夹里,方便使用

cp /usr/local/php-5.6.8/sapi/fpm/init.d.php-fpm /usr/local/php5/sbin/  cd /usr/local/php5/sbin/  chmod 755 init.d.php-fpm  ./init.d.php-fpm start  Starting php-fpm  done

3.安装MYSQL-Server

        (只针对centos 6.5 64)

        略去查看操作系统版本...

cd /usr/local/src/  mkdir mysql-server-5.6.21

        下载三个rpm软件包:
            MySQL-client-5.6.21-1.rhel5.x86_64.rpm   
            MySQL-devel-5.6.21-1.rhel5.x86_64.rpm   
            MySQL-server-5.6.21-1.rhel5.x86_64.rpm

cd mysql-server-5.6.21  wget http://dev.mysql.com/Downloads/MySQL-5.6/MySQL-server-5.6.21-1.rhel5.x86_64.rpm  wget http://dev.mysql.com/Downloads/MySQL-5.6/MySQL-devel-5.6.21-1.rhel5.x86_64.rpm  wget http://dev.mysql.com/Downloads/MySQL-5.6/MySQL-client-5.6.21-1.rhel5.x86_64.rpm

        安装依赖:

yum install -y libaio

        安装mysql

rpm -ivh MySQL-server-5.6.21-1.rhel5.x86_64.rpm  rpm -ivh MySQL-client-5.6.21-1.rhel5.x86_64.rpm   rpm -ivh MySQL-devel-5.6.21-1.rhel5.x86_64.rpm

        修改配置文件

cp /usr/share/mysql/my-default.cnf /etc/my.cnf

        初始化mysql

/usr/bin/mysql_install_db

        启动mysql

service mysql start

        查看进程

ps -ef | grep mysql

    netstat -anpt | grep 3306

        安装过程中会随机生成root密码并保存在/root/.mysql_secret  文件中,用more命令查看

more /root/.mysql_secret

        然后用查询的密码登录mysql

mysql -uroot -p********   #****为你查询到的密码

        修改密码

SET PASSWORD = PASSWORD('123456');   #123456 为你要设置的root密码

        配置mysqld 启动mysql

cp /usr/share/mysql/mysql.server /etc/init.d/mysqld  service mysqld start  chkconfig mysqld on    #设置开机启动

 

 

 

        到此mysql安装完成

 

4.配置nginx支持php

        

cd /etc/nginx/  vi nginx.conf  #打开gzip  gzip    on;

            

配置vhost,假设域名为www.a.com

cd /etc/nginx/conf.d/  vi www.a.com.conf  #内容如下  server {          listen 80;          server_name www.a.com a.com;          #让不带www的域名跳转到带www的域名          if($host != 'www.a.com') {                  rewrite ^(.*)$ http://www.a.com/$1 permanent;          }          location / {                  #开启ssi支持shtml                  ssi on;                  ssi_silent_errors on;                  ssi_types text/shtml;                  index index.shtml index.php index.htm index.html;                  root /mnt/www/www.a.com;                  #框架路由设置                  if ( !-e $request_filename ) {                          rewrite ^(.*)$ /index.php?url=$1 last;                  }          }            location ~\.php$ {                  root /mnt/www/www.a.com;                  fastcgi_pass 127.0.0.1:9000;                  fastcgi_index index.php;                  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;                  include fastcgi_params;          }            location ~\.(jpg|jpeg|png|js|css) {                  root /mnt/www/www.a.com;                  expires 30d;          }    }

        测试一下 配置文件是否有错误

/etc/init.d/nginx configtest  nginx: the configuration file /etc/nginx/nginx.conf syntax is ok  nginx: configuration file /etc/nginx/nginx.conf test is successful

        在数据盘mnt上,新建文件夹/mnt/www/www.a.com,并新建info.php测试文件,内容为

<?php  phpinfo();  ?>

        在浏览器访问www.a.com/info.php,能显示信息则配置完成

 

5.phpMyAdmin 安装配置

5.0 检查并修改php对mysql和mysqli支持

        phpinfo() 输出可以看到当前php对mysql的支持程度,假设在页面输出信息里面并没有找到mysql的支持

cd /usr/local/src/php-5.6.8/ext/mysql  /usr/local/php5/bin/phpize    #执行这句命令生成configure文件  ./configure --with-php-config=/usr/local/php5/bin/php-config --with-mysql=shared --enable-shared

        编译安装 make && make install

        mysqli的编译过程也是类似

cd /usr/local/src/php-5.6.8/ext/mysqli  /usr/local/php5/bin/phpize    #执行这句命令在mysqli目录下生成configure

        此时可以查看目录下是否生成了configure可执行文件

./configure --with-php-config=/usr/local/php5/bin/php-config --enable-embedded-mysqli=shared --enable-shared

        没有错误的话继续

make  make install

        一切正常的话,此时会提示你 mysqli.so 生成,当然也可以全盘搜下

find / -name "mysqli.so"  #拷贝 mysql.so mysqli.so 到 php5/ext/  cd /usr/local/php5/  mkdir ext  cp /usr/local/php5/lib/php/extensions/no-debug-non-zts-20131226/mysqli.so /usr/local/php5/ext/ #mysqli.so 路径为上面命令查找所得  cp /usr/local/php5/lib/php/extensions/no-debug-non-zts-20131226/mysql.so /usr/local/php5/ext/

        切换到php5目录查看php.ini 是否存在,不存在则拷贝源码目录下的

cd /usr/local/php5/etc  vi php.ini  #添加下面内容  extension_dir = "/usr/local/php5/ext";  extension = mysqli.so ;  extension = mysql.so ;

5.1 安装部署phpMyAdmin     

  下载phpMyAdmin (http://www.phpmyadmin.net/home_page/index.php),解压后上传到www目录下(tar上传解压也行),把文件夹重命名为 phpMyAdmin,(方便访问)

 cd /mnt/www/phpMyAdmin  cp config.sample.inc.php config.inc.php   vi config.inc.php  #修改以下内容  $cfg['blowfish_secret'] = 'www.oschina.com';  #这里的内容随意设置,在cookie访问模式下不能为空  /* Authentication type */  $cfg['Servers'][$i]['auth_type'] = 'cookie';  /* Server parameters */  $cfg['Servers'][$i]['host'] = '127.0.0.1';  #重要,这里设置成localhost有可能会出现phpMyAdmin无法访问数据库  $cfg['Servers'][$i]['connect_type'] = 'tcp';  $cfg['Servers'][$i]['compress'] = false;  $cfg['Servers'][$i]['AllowNoPassword'] = false;  $cfg['Servers'][$i]['user'] = 'root';  $cfg['Servers'][$i]['password'] = '111111';  #这里设置数据库的密码

        上面的 host = 127.0.0.1 再强调一遍,设置成localhost有可能会无法访问数据库

        接下来就是继续配置nginx

cd /etc/nginx/conf.d/  vi phpmyadmin.conf
#文件内容  server {      listen       9090;      server_name  localhost;      #charset koi8-r;      #access_log  /var/log/nginx/log/host.access.log  main;      location / {          ssi on;          ssi_silent_errors on;          ssi_types text/shtml;          root   /mnt/www/phpMyAdmin;          index  index.html index.htm index.php;          if ( !-e $request_filename ) {                          rewrite ^(.*)$ /index.php?url=$1 last;          }      }      location ~\.php$ {          root           /mnt/www/phpMyAdmin;          fastcgi_pass   127.0.0.1:9000;          fastcgi_index  index.php;          fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;          include        fastcgi_params;      }      # deny access to .htaccess files, if Apache's document root      # concurs with nginx's one      #      #location ~ /\.ht {      #    deny  all;      #}      location ~\.(jpg|jpeg|png|js|css) {                  root /mnt/www/phpMyAdmin;                  expires 30d;      }  }

        保存退出后,重启nginx服务,重启mysqld服务,即可。