zoukankan      html  css  js  c++  java
  • nginx + php + mysql安装、配置、自启动+redis扩展

    用过了apache就想着用用nginx,网上教程其实很多,但是受服务器版本等限制,每个人遇到的问题也不一样,先记录下我的

    一.安装依赖

    yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel  //一键安装四个依赖
    

    二.下载nginx的tar包

    //创建一个文件夹
    cd /usr/local
    mkdir nginx
    cd nginx
    //下载tar包 没有wget命令,可以yum -y install wget进行安装
    wget http://nginx.org/download/nginx-1.13.7.tar.gz 
    //解压
    tar -xvf nginx-1.13.7.tar.gz 

    三.安装nginx

    //进入nginx目录
    cd /usr/local/nginx/nginx-1.13.7
    //执行命令
    ./configure
    //执行make命令,,执行后会告诉你配置文件(根目录/conf/nginx.conf)和日志文件位置(根目录/logs/error.log)
    make
    //执行make install命令
    make install

    四.启动nginx前

    防火墙开通8090端口,用于nginx;且服务器控制台安全组也要开通好:firewall-cmd --zone=public --add-port=8090/tcp --permanent

    sudo vim /usr/local/nginx/conf/nginx.conf

    因为可能apeache占用80端口,apeache端口尽量不要修改,我们选择修改nginx端口。linux 修改路径/usr/local/nginx/conf/nginx.conf,Windows 下 安装目录conf ginx.conf。修改端口为8090,localhost修改为你服务器ip地址。

    检查配置是否正确:sbin目录下:./nginx -t

    五.启动nginx

    启动代码格式:nginx安装目录地址 -c nginx配置文件地址;如:[root@LinuxServer sbin]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

    六.验证,若无法打开关闭防火墙看看是否为防火墙问题

    Nginx虚拟域名配置及测试验证

    //编辑nginx.conf
    sudo vim /usr/local/nginx/conf/nginx.conf
    //增加行,,,在http{}的最下面
    include vhost/*.conf
    //保存退出
    
    //在/usr/local/nginx/conf目录新建vhost文件夹
    mkdir vhost
    //创建每个域名的配置
    sudo vim jimisun.com.conf
    //节点中增加入响应的配置 端口转发  或者访问文件系统
    

      附一下vhost.conf的内容

    server {
                            listen       8090;
                            server_name  ip地址;
    
                            location / {
                                            index  index.html index.htm index.php;
                                            if (!-e $request_filename){
                                                            rewrite ^/(.*) /index.php last;
                                            }
                                    #autoindex  on;
                            }
                            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;
                            }
    
    }
    

      再附一下我本地使用phpstudy的域名站点配置(已经配置好了php7)

    server {
            listen       80;
            server_name  www.local-cps.cn local-cps.cn;
            root   "项目的起始包含index.php文件的文件夹全路径";
            location / {
                index  index.html index.htm index.php;
                #autoindex  on;
            }
            location ~ .php(.*)$ {
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_split_path_info  ^((?U).+.php)(/?.+)$;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                fastcgi_param  PATH_INFO  $fastcgi_path_info;
                fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;
                include        fastcgi_params;
            }
    }
    

    Nginx重启:

      方法一:进入nginx可执行目录sbin下,输入命令./nginx -s reload 即可。(./nginx -t检查配置是否有误)

      方法二:查找当前nginx进程号,然后输入命令:kill -HUP 进程号 实现重启nginx服务

    查看Nginx运行状况:有结果为正在运行,反之没有运行。

    ps -a | grep nginx

    Nginx启动:

      进入nginx可执行目录sbin下,输入命令./nginx  即可。

    chkconfig:检查系统的各种服务。

    设置Nginx开机自启动:

    vi /etc/rc.local

      添加/usr/local/nginx/sbin/nginx即可。

      注意设置执行权限哦chmod 755 rc.local

    PHP7(7.2.12):

    一.下载依赖

    目录/usr/local下新建php文件夹,并下载php软件包
        wget http://am1.php.net/get/php-7.2.12.tar.bz2/from/this/mirror      //注意,小心下载下来的是页面,否则没法解压缩,file 文件名 命令查看
    安装tar及bzip2
        yum install -y tar
        yum -y install bzip2
    解压php压缩包:ps:若wget后的是mirror文件,则tar xjvf mirror即可
    tar xjvf php-7.2.12.tar.bz2 安装php需要的扩展: yum install libxml2 libxml2-devel openssl openssl-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libmcrypt libmcrypt-devel -y

    二.开始安装

    //进入php-7.2.12目录
        cd /usr/local/php/php-7.2.12
    //执行命令,prefix安装到指定位置,,注意,若安装php5.6需要在后面加上--with-mysql
        ./configure --prefix=/usr/local/php720 --with-mysqli --with-pdo-mysql --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir --enable-simplexml --enable-xml --disable-rpath --enable-bcmath --enable-soap --enable-zip --with-curl --enable-fpm --with-fpm-user=nobody --with-fpm-group=nobody --enable-mbstring --enable-sockets --with-gd --with-openssl --with-mhash --enable-opcache --disable-fileinfo 
    //编译安装: 
        make make install

    配置nginx.conf支持php:

      打开nginx配置文件(/usr/local/nginx/conf/nginx.conf),找到localtion模块,在index后面添加index.php,使nginx识别php文件;  

      

    启动php-fpm:

     将php-fpm.conf.default复制为php-fpm.conf

      cd /usr/local/php720/etc

      cp php-fpm.conf.default php-fpm.conf

    然后启动php-fpm

      /usr/local/php720/sbin/php-fpm

    如果启动报错(如下图):

      解决方法:进入到 /usr/local/php720/etc/php-fmp.d下的www.conf.default 复制为www.conf,然后启动php-fpm;

    进入文件夹(如果进不去,就一步步的cd进去; 如果没有这个文件就自己创建个php-fpm.d文件夹,再进到网址下载www.conf文件:https://pan.baidu.com/s/1o8mRYkU)

      cd /usr/local/php720/etc/php-fpm.d

      cp www.conf.default www.conf

    解决后,先把php-fpm进程清除

      pkill php-fpm

    再启动php-fpm

      /usr/local/php720/sbin/php-fpm

    最后在/usr/local/nginx/html下新建文件index.php,输出phpinfo();

      vi index.php

    运行ip,如下

     配置php-fpm自启动:

    vi /etc/rc.local

      添加/usr/local/php7012/sbin/php-fpm即可。

      注意设置执行权限哦chmod 755 rc.local

    安装后若发现php -v 和phpinfo()下的版本不一致,则是因为系统和nginx所有的php.ini目录不一致,具体解决:

    https://blog.csdn.net/feiwutudou/article/details/80049567

    centos6.6下安装mysql(5.7):

    //下载 mysql的repo
      # wget https://dev.mysql.com/get/mysql57-community-release-el6-11.noarch.rpm
    //安装mysql源安装包
      # rpm -ivh mysql57-community-release-el6-11.noarch.rpm
    //安装Mysql
        yum -y install mysql-community-server
    //若报错:Error downloading packages.....No more mirrors to try。原因是下载包失败,清理缓存yum clean all,再yum list,再执行yum -y install mysql-community-server,多试几次,若还是不行,error后再重新执行yum -y install mysql-community-server(我最后就这样搞好的)。ps:因为镜像下载确实慢
    //启动Mysql服务
        service mysqld start 
    //设置开机启动
        [root@localhost ~]# service enable mysqld
        [root@localhost ~]# service daemon-reload
        [root@localhost ~]# chkconfig --list

    之后和centos7步骤一样了。之所以采用el6而不是el7,是因为centos的版本不同,gcc过低,所以导致报错:Requires: libstdc++.so.6(GLIBCXX_3.4.15)

    centos7下安装mysql(5.7):

    https://blog.csdn.net/chenjiayi_yun/article/details/16920967

    一.下载依赖

    //CentOS7的yum源中默认是没有mysql的。所以要先下载mysql的repo源。
    //下载 mysql的repo
      # wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
    //安装mysql源安装包
      # rpm -ivh mysql57-community-release-el7-11.noarch.rpm
    //安装这个包后,会获得两个mysql的yum repo源:/etc/yum.repos.d/mysql-community.repo,/etc/yum.repos.d/mysql-community-source.repo。
    
    //安装Mysql
        yum -y install mysql-community-server
    //启动Mysql服务
        systemctl start mysqld
    //设置开机启动
        [root@localhost ~]# systemctl enable mysqld
        [root@localhost ~]# systemctl daemon-reload
        [root@localhost ~]# chkconfig --list
    

    修改mysql root本地登录密码

      mysql安装完成之后,在/var/log/mysqld.log文件中给root生成了一个临时的默认密码。[root@localhost ~]# more /var/log/mysqld.log,也可使用cat查看

    临时密码:in1N=ERmABRb

    登陆mysql并修改密码:mysql -u root -pin1N=ERmABRb,报错的话可以使用mysql -u root -p即不适用明文登入

    //登入
    $ mysql -u root -pin1N=ERmABRb
    //修改密码为Aaa2019.cn
    mysql>ALTER USER 'root'@'localhost' IDENTIFIED BY 'Aaa2019.cn';
    Query OK, 0 rows affected (0.00 sec)
    //注意, mysql5.7默认密码策略要求密码必须是大小写字母数字特殊字母的组合,至少8位
    

    设置允许远程登录  

    //Mysql默认不允许远程登录,我们需要设置下,并且防火墙开放3306端口;
        mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Aaa2019.cn' WITH GRANT OPTION;
    //返回
        Query OK, 0 rows affected, 1 warning (0.01 sec)
    //退出
        mysql> exit;
    
    
    //设置端口
        [root@localhost ~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
    //返回
        success
    //重启防火墙
        [root@localhost ~]# firewall-cmd --reload
    
    
        
    

      如果是阿里云服务器:须设置安全组配置,开放3306端口,允许远程连接

    赋予文件权限chmod -R 777 *

    查看配置

    # cat /etc/my.cnf

    在这里错误日志的位置都有。

    附mysql7.3.23的安装:

    一.下载依赖

      下载mysql:https://dev.mysql.com/downloads/cluster/7.3.html

      

    wget https://dev.mysql.com/get/Downloads/MySQL-Cluster-7.3/mysql-cluster-gpl-7.3.23-linux-glibc2.12-x86_64.tar.gz
    //解压:
        tar -xvzf mysql-cluster-gpl-7.3.23-linux-glibc2.12-x86_64.tar.gz
    //重命名:
        mv mysql-cluster-gpl-7.3.23-linux-glibc2.12-x86_64 mysql-7.3.23
    //复制命名后的目录
        cp -r mysql-7.3.23 /usr/local/mysql7323
    
    //添加用户组和用户:
        cd /usr/local/mysql7323
        #添加用户组
        groupadd mysql
    //#添加用户mysql 到用户组mysql
        useradd -g mysql mysql
    
    //创建mysql数据目录,新目录不存在则创建:
        mkdir ./data/mysql  或 mkdir /usr/local/mysql7323/data/mysql
    //mysql安装根目录下修改目录权限:
        chown -R mysql:mysql ./
    

    初始化数据库:(注意路径)

      ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql7323 --datadir=/usr/local/mysql7323/data

    问题报错:提示没有安装perl,原因:缺少perl模块中的Data::Dumper

      

      yum -y install autoconf  //安装autoconf库(此包安装时会安装Data:Dumper模块)

     再次执行初始化报错:原因:缺少libaio库文件

      

      解决方法:yum install libaio* -y

      再次执行初始化ok

    //修改权限为root权限:
        chown -R root:root .
        chown -R mysql:mysql data
    
    //添加启动服务:
        cp support-files/mysql.server /etc/init.d/mysql
        #修改启动脚本
        vi /etc/init.d/mysqld
        #修改项:
        basedir=/usr/local/mysql/
        datadir=/usr/local/mysql/data/mysql
    

    启动mysql服务:

      service mysqld start

      报错,提示无权限

      

      解决方法:chmod a+wrx /etc/init.d/mysqld

    centos7下安装mysql5.6:

      https://blog.csdn.net/pengjunlee/article/details/81212250

    redis扩展:  

     

    //先下载phpredis-develop
        cd /tmp
        wget https://codeload.github.com/phpredis/phpredis/zip/develop
    
    //安装unzip、zip解压工具
        yum -y install unzip zip
    
    //解压
        unzip develop
    //解压后会多了个phpredis-develop的目录。进入目录
        cd phpredis-develop
    //安装phpize模块
        yum -y install php-devel
    //执行phpize
        sudo phpize
    //查找php-config路径
        find / -name php-config
        //例如:我的是:/usr/local/php720/bin/php-config
    
    //配置环境
        ./configure --with-php-config=/usr/local/php720/bin/php-config
    //编译安装
        sudo make && make install
        //成功后会告诉你生成的redis.so扩展文件在哪个目录
        //Installing shared extensions:     /usr/local/php720/lib/php/extensions/no-debug-non-zts-20170718/
    

     配置php的redis:

    vim /usr/local/php720/lib/php.ini
        extension= /usr/local/php720/lib/php/extensions/no-debug-non-zts-20170718/redis.so
    
    //ok
    //解决后,先把php-fpm进程清除
        pkill php-fpm
    //再启动php-fpm
        /usr/local/php720/sbin/php-fpm
    
    //防火墙端口:
        firewall-cmd --zone=public --add-port=6379/tcp --permanent
    

      

    注意,linux下php7中若找不到php配置文件php.ini

    解决方法:首先需要说明的是,如果你的php是编译安装的,那么默认是没有php.ini的,你必须自行去源码包里边拷贝。运行phpinfo()命令可以看到php指定的配置文件路径,把配置文件放到这个路径中即可。

     安装redis服务:

     传送

    坑1.

    另附一下以前使用tp3.2框架时的坑

    解决方法:

    if (!-e $request_filename) {   rewrite  ^(.*)$  /index.php?s=$1  last;   break;    }

    坑2.

    若报‘403 Forbidden’,则是因为nginx.conf没有找到指定文件,文件如下图

     若要开启nginx目录浏览功能,只需将autoindex on前面的#去掉即可

    总体来说,nginx确实是首选服务器,抗并发要强于apache(apache是阻塞的,nginx是异步非阻塞);apache模块比较多,稳定,但是配置复杂。相对nginx就简洁,bug比较多了;支持负载均衡;并发量在50000左右;当然还有其他优势和劣势,先这样吧,以后再继续研究

     fileInfo扩展:

    find / -name phpize//找到php安装目录下的phpize的路径
    //在/usr/local/php/php-7.2.12/ext/fileinfo源文件下执行以下操作:
    /usr/local/php-install/bin/phpize
    ./configure --with-php-config=/usr/local/php-install/bin/php-config//为php安装路径
    make && make install
    vim /usr/local/php-install/lib/php.ini
    修改extension=fileInfo前面的分号去掉,保存后重启php-fpm即可

     nginx安装realip模块:

    [root@localhost nginx]#cd nginx-1.13.7
    [root@localhost nginx]#./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_realip_module
    [root@localhost nginx]#make
    [root@localhost nginx]# ./sbin/nginx -t
    依然报错:
    nginx: [emerg] unknown directive "real_ip_header" in /usr/local/nginx/conf/nginx.conf:50
    nginx: configuration file /usr/local/nginx/conf/nginx.conf test failed
    [root@localhost nginx]# ./sbin/nginx -V
    nginx version: nginx/1.13.7
    built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) 
    configure arguments:
    [root@localhost nginx]# cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
    [root@localhost nginx-1.13.7]# cp objs/nginx       /usr/local/nginx/sbin/
    cp:是否覆盖"/usr/local/nginx/sbin/nginx"? y
    cp: 无法创建普通文件"/usr/local/nginx/sbin/nginx": 文本文件忙
    [root@localhost nginx-1.13.7]# pkill nginx
    [root@localhost nginx-1.13.7]# cp objs/nginx       /usr/local/nginx/sbin/
    cp:是否覆盖"/usr/local/nginx/sbin/nginx"? y
    [root@localhost nginx-1.13.7]# /usr/local/nginx/sbin/nginx -V
    nginx version: nginx/1.13.7
    built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) 
    configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_realip_module
    [root@localhost nginx-1.13.7]# cd ..
    [root@localhost nginx]# ./sbin/nginx -t
    nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
    nginx: [emerg] getpwnam("nginx") failed
    nginx: configuration file /usr/local/nginx/conf/nginx.conf test failed
    [root@localhost nginx]# cd nginx-1.13.7
    [root@localhost nginx-1.13.7]#  netstat -tlunp | grep nginx
    [root@localhost nginx-1.13.7]# id nginx
    id: nginx: no such user
    [root@localhost nginx-1.13.7]# useradd -s /sbin/nologin -M nginx
    [root@localhost nginx-1.13.7]# id nginx
    uid=1003(nginx) gid=1003(nginx) 组=1003(nginx)
    [root@localhost nginx-1.13.7]#  netstat -tlunp | grep nginx
    [root@localhost nginx-1.13.7]# cd ..
    [root@localhost nginx]# ./sbin/nginx -t
    nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
    nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

    [root@localhost nginx]# ./sbin/nginx -s reload
    nginx: [error] invalid PID number "" in "/usr/local/nginx/logs/nginx.pid"
    [root@localhost nginx]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
    [root@localhost nginx]# ./sbin/nginx -s reload

     nginx实现负载均衡,简易配置:可以打印phpinfo();不停刷新页面,查看客户端ip和服务器ip

    #虚拟集群负载均衡配置
    upstream web_server{
            server 192.168.0.24;
            server 192.168.0.25;
            keepalive 32;           #与后端服务器保持长连接数
    }
    
    server {
            listen       80;
            server_name  www.xxxxxxx.cn;
            root   localhost;
            location / {
                    proxy_pass http://web_server;
                    proxy_http_version 1.1;         #后端服务器使用HTTP 1.1
                    proxy_set_header Connection ""; #清空客户端Connection消息头
                    proxy_set_header Host $host;    #传递请求中的Host消息头
                    proxy_set_header X-Real-IP $remote_addr;        #传递真实客户端ip
            }
    }

     xdebug扩展安装:

    php5.6.27,linux centos7:

    cd php安装目录下
    mkdir xxdebug
    cd xxdebug
    wget https://xdebug.org/files/xdebug-2.5.0.tgz
    tar -zxf xdebug-2.5.0.tgz
    cd xdebug-2.5.0
    php安装路径/bin/phpize
    有可能会报错没有config.m4
    cp config.m4 /usr/local/php/php56/bin/       即php安装路径下/bin
    php安装路径/bin/phpize
    ./configure --with-php-config=/usr/local/php/php56/bin/php-config
    
    make && make install
    这里安装完后会提示安装到的路径,要记下来,后面配置用,我是这个/usr/local/php/php56/lib/php/extensions/no-debug-non-zts-20131226/
    
    vim /usr/local/php/php56/lib/php.ini    此目录下没有ini文件的,自己到源码包找到ini.de..结尾的,改名复制到这个文件夹就可以了
    添加这行zend_extension=/usr/local/php/php56/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so
    
    pkill php-fpm
    /usr/local/php/php56/sbin/php-fpm
    
    echo phpinfo();就出现xdebug模块就ok

     

  • 相关阅读:
    Fidder
    常见正则表达式使用
    HTML5 Boilerplate
    微信公众号开发--微信机器人
    sublime text插件推荐
    个人博客开发-笔记
    css之图像替换
    关于浮动与清除浮动
    css定位机制
    Java 集合类实现原理
  • 原文地址:https://www.cnblogs.com/two-bees/p/10509651.html
Copyright © 2011-2022 走看看