• centos7下搭建nginx+php7.1+mariadb+memcached+redis


    一.环境准备

    1.首先介绍一下环境,以及我们今天的主角们

    我用的环境是最小化安装的centos7,mariadb(江湖传言mysql被oracle收购后,人们担心像java一样毁在oracle手上于是成了新的分支,但是还是像mysql一样用),

    php7.1.0(版本无所谓,都是7版本),nginx1.10(我们安装的是稳定版而没有一味的追求新),memcached,和redis可以随机选择一个,当然全安装也没有干扰

    2.软件包下载

    1)mariadb软件包(yum安装,编译安装因为boost问题挂掉了而且耗时极其长,放弃了)

    首先添加mariadb的yum源  

    cd /etc/yum.repos.d/ vim /etc/yum.repos.d/MariaDB.repo
    添加下列内容
    
    # MariaDB 10.0 CentOS repository list - created 2015-08-12 10:59 UTC  
    # http://mariadb.org/mariadb/repositories/  
    [mariadb]  
    name = MariaDB  
    baseurl = http://yum.mariadb.org/10.0/centos6-amd64  
    gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB  
    gpgcheck=1   

    2)php7.10软件包

    wget https://downloads.php.net/~davey/php-7.1.0.tar.gz

    3)nginx软件包

    wget http://nginx.org/download/nginx-1.10.1.tar.gz

    nginx还需要下载ngx_http_upstream_consistent_hash(多台缓存服务器的时候使用一致性hash算法需要)

    和ngx_http_redis(支持redis)(--add-dynamic-module=PATH时候等于他们的路径即可)

    cd /usr/local/src/
    #下载 ngx_http_consistent_hash 和
    wget https://codeload.github.com/replay/ngx_http_consistent_hash/zip/master
    
    unzip master

    #解压之后的文件夹名字
    ngx_http_consistent_hash-maste
    wget  http://people.freebsd.org/~osa/ngx_http_redis-0.3.8.tar.gz
    
    tar zxvf ngx_http_redis-0.3.8.tar.gz

    #解压之后的文件夹名字
    ngx_http_redis-0.3.8

     4)memcached软件包(以及php支持memcached的php7版)(需要libevent libevent-devel)

    #memcached
    wget http://memcached.org/files/memcached-1.4.31.tar.gz
    
    #memcache for php7
    wget https://github.com/websupport-sk/pecl-memcache/archive/php7.zip

    5)redis软件包以及redis-php7包

    #redis
    wget http://download.redis.io/releases/redis-3.2.3.tar.gz
    
    #redis for php7
    wget https://codeload.github.com/phpredis/phpredis/zip/php7

    3.安装编译的相关环境以及php等依赖的相关库

    yum update && yum upgrade
    yum groupinstall "Development tools"

    当然下面的代码和上面的有的重复,不用担心,安装过的会略过

    yum -y install make gcc gcc-c++ gcc-g77 flex bison file libtool libtool-libs autoconf kernel-devel libjpeg libjpeg-devel libpng libpng-devel libpng10 libpng10-devel gd gd-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glib2 glib2-devel bzip2 bzip2-devel libevent libevent-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel gettext gettext-devel ncurses-devel gmp-devel pspell-devel unzip libcap lsof libxslt libxslt-devel

    二、软件安装以及配置

    0.新建用户以及文件夹

    #创建群组www(nginx,php),mysql(mysql)
    groupadd www
    groupadd mysql
    #创建一个用户,不允许登陆和不创主目录 
    useradd -s /sbin/false -g www -M www
    useradd -s /sbin/false -g mysql -M mysql

    #创建web目录
    mkdir -R /var/www/html
    chown -R www:www /var/www/

    1.安装mariadb

    yum -y install MariaDB-server MariaDB-client mariadb-devel

    安装完成后,改my.cnf,重启

    mv /etc/my.cnf  /etc/my.cnf.bak   
    cp /usr/share/mysql/my-huge.cnf  /etc/my.cnf
    
    service mysql start  或者   /etc/init.d/mysql restart  重启  |要是提示找不到  那就用service mariadb start

    2.编译安装php7

    当然是先解压文件
    cd /usr/local/src/
    tar  zxvf  php-7.1.0.tar.gz
    cd php-7.1.0
    #需要安装什么就 ./configure --help | grep mysql(这里只是个例子XXX) 看看他的选项是什么 .
    /configure --prefix=/usr/local/php --with-curl --with-freetype-dir --with-gd --with-gettext --with-iconv-dir --with-kerberos --with-libdir=lib64 --with-libxml-dir --with-mysqli --with-openssl --with-pcre-regex --with-pdo-mysql --with-pdo-sqlite --with-pear --with-png-dir
    --with-jpeg-dir
    --with-xmlrpc
     --with-xsl
    --with-zlib --enable-embedded-mysqli --enable-fpm --enable-bcmath --enable-libxml --enable-inline-optimization --enable-gd-native-ttf --enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-xml --enable-zip #提示缺啥就安装什么,或者安装libXXX-devel
    #比如提示我缺少xslt
    #我就试着安装了libXXX libXXX-devel(devel是头文件)

    # yum install libxslt

    # yum install libxslt-devel

    make && make install

    #漫长的等待后成功
    从编译目录中取出php.ini文件(生产环境和开发环境任选其一),注意是lib下,不信事后可查看phpinfo中的Configuration File (php.ini) Path这个选项,将php.ini移入到此位置
    cp php.ini-development  /usr/local/php/lib/php.ini
    
    从编译目录中将php-fpm放入到etc/init.d/目录下
    cp sapi/fpm/init.d.php-fpm  /etc/init.d/php-fpm
    chmod +x /etc/init.d/php-fpm
    
    到php安装目录将两个需要改名的配置文件改改名字
    cd /usr/local/php/etc/
    
    mv php-fpm.conf.default  php-fpm.conf
    
    cd php-fpm.d/
    
    mv www.conf.default www.conf

    #修改www.conf的用户为www

      user = www
      group = www


    #启动
    service php-fpm start

    3.编译安装nginx

    进入/usr/local/src/下的目录,解压nginx文件不再详述#添加模块就是用--add-dynamic-module=模块解压的文件夹

    ./configure --prefix=/usr/local/nginx  
    --add-dynamic-module=/usr/local/src/ngx_http_consistent_hash-master  
    --add-dynamic-module=/usr/local/src/ngx_http_redis-0.3.8  
    --with-http_stub_status_module

    make && make install

     简单配置nginx让其启动,详细配置优化我们专门有一篇文章

    #user改为www
    user www
    
    #添加index.php
     location / {
                root   /var/www/html;
                index  index.php index.html index.htm;
    }
    
    
    #支持php
    
    location ~ .php$ {
                root           /var/www/html;
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  /var/www/html$fastcgi_script_name;
                include        fastcgi_params;
    }

    #保存退出
    #启动
    cd /usr/local/nginx/sbin/
    ./nginx
    #会在/usr/local/nginx/logs/生成一个nginx.pid,以后就可以使用信号量了
    ps aux |grep nginx

    4.编译安装redis

    解压,进入目录不再详述

    #直接编译安装就行make && make install
    
    #为redis建立工作目录
    
    mkdir  /usr/local/redis
    #从编译目录将配置文件,客户端,服务器端复制过去
    cp redis.conf  /usr/local/redis/
    cd  src/
    cp redis-cli  redis-server  /usr/local/redis
    
    #简单配置redis.conf(设置为后台启动)
    cd /usr/local/redis
    vim redis.conf
    daemonize yes
    保存退出

    cd /usr/local/redis
    #启动服务器端
    ./redis-server redis.conf
    #启动客户端,可以进行各种操作了
    ./redis-cli

    让php支持redis(php安装拓展都是千篇一律的,进入加压后的文件夹中执行phpize,然后./configure 指向php-config,结束会告诉你拓展目录是啥复制放到php.ini中)

    /usr/local/php/bin/phpize
    
    ./configure --with-php-config=/usr/loca/php/bin/php-config

    vim /usr/local/php/lib/php.ini

    在差不多最后的地方添加(memcache的也是一样,后面不再详述)

    extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/"   (当然这个目录是编译redis拓展完成后提示的地址)

    [redis]
    extension=redis.so

    5.编译安装memcached(解压进入目录不再详述)

    #因为是yum安装的libevent,不必再--with-libevent指定libevent
    ./configure --prefix=/usr/local/memcached
    make && make install

    #启动(用户www , 后台启动 -d ),www没有的自己建个
    cd /usr/local/memcached/bin
    ./memcached -u www -d

    php支持memcache的拓展(解压进入目录)

    /usr/local/php/bin/phpize
    
    ./configure --with-php-config=/usr/loca/php/bin/php-config

    php.ini中添加
    [memcache]
    extension=memcache.so

    #重启nginx和php-fpm
    service php-fpm restart
    kill -HUP `cat /usr/local/nginx/logs/nginx.pid`

  • 相关阅读:
    JavaScript入门篇 编程练习
    JavaScript入门篇 第三天(认识DOM)
    JavaScript入门篇 第二天(消息对话框+网页弹出)
    JavaScript入门篇 第一天
    网页布局基础 第四次
    本内容中发现无效字符。处理资源 'file:///C:/Users/XDJ/Desktop/1111/press.xml' 时出错。第 5 行,位置: 11 <author>ƽ
    jquery中的each用法以及js中的each方法实现实例
    jQuery获取页面及个元素高度、宽度
    js正则函数match、exec、test、search、replace、split使用介绍集合
    javascript中window.open()与window.location.href的区别
  • 原文地址:https://www.cnblogs.com/ysjChinesePHP/p/5793993.html
Copyright © 2020-2023  润新知