zoukankan      html  css  js  c++  java
  • nginx*实验(三)

    =======================================================================

          张贺,多年互联网行业工作经验,担任过网络工程师、系统集成工程师、LINUX系统运维工程师
    
          笔者微信:zhanghe15069028807,现居济南历下区
    

    =======================================================================

    php-myadmin

    php-fpm

    在192.168.80.11安装php和mariadb,启动之

    //安装php和mariadb
    [root@php-fpm ~]# yum -y install php-fpm php-mysql php-mbstring php-mcrypt mariadb-server
    
    //修改php的配置文件
    [root@php-fpm ~]# vim /etc/php-fpm.d/www.conf 
    listen = 0.0.0.0:9000
    ;listen.allowed_clients = 127.0.0.1 #注释掉
    php_value[session.save_path] = /var/lib/php/session #会话保存路径
    
    //创建会话路径,启动之
    [root@php-fpm ~]# mkdir -p /var/lib/php/session  
    [root@php-fpm ~]# chown apache:apache /var/lib/php/session
    [root@php-fpm ~]# systemctl start php-fpm.service ; ss -tnlp | grep 9000
    LISTEN     0      128          *:9000                     *:*                  
    
    //初始化mariadb设置密码启动之
    [root@php-fpm ~]# vim /etc/my.cnf
    [mysqld]
    skip_name_resolve=ON
    innodb_file_per_table=ON
    
    [root@php-fpm ~]# systemctl restart mariadb
    [root@php-fpm ~]# mysql_secure_installation 
    Disallow root login remotely? [Y/n] n    #这里不要添加成Y了
    [root@php-fpm ~]# mysql -uroot -pcba-123
    

    php-fpm上没有主目录,我们要将phpmyadmin程序放置在哪里呢?先随便找一个地方当主目录/data/apps

    [root@php-fpm ~]# mkdir /data/apps -p
    
    //先来一个测试页
    [root@php-fpm ~]# vim /data/apps/index.php
    <?php
    	phpinfo();
    ?>
    
    //在主目录下放置好phpmyadmin,并做好软链接pma
    [root@php-fpm apps]# ln -sv phpMyAdmin-4.0.5-all-languages pma
    [root@php-fpm apps]# cd pma/
    [root@php-fpm pma]# cp config.sample.inc.php config.inc.php
    [root@php-fpm pma]# vim config.inc.php
    

    nginx代理端

    server {
            listen 80;
            server_name www.zhanghehe.com.cn;
            index index.html index.php;
    
    
            location / {
                    root /data/nginx/html;
            }
    
            location ~* .php$ {
                    fastcgi_pass 192.168.80.11:9000;
                    fastcgi_index index.php;
                    include fastcgi_params;
                    fastcgi_param SCRIPT_FILENAME   /data/apps$fastcgi_script_name;
            }
    }
    

    我们可以找一个客户端访问一下www.zhanghehe.com.cn/bma/index.php,结果是这样的,如下所示:

    
    

    image-20200228164823643

    登录界面倒是加载出来了,但是图片却没有加载出来,这是为什么呢?仔细看我们在nginx代理上的配置,动态请求都让192.168.80.11去处理了,动态请求都是php结尾的,但是图片文件可并不是php结尾的哟,所以对于图片文件的请求根本都没有发送到192.168.80.11这台主机,而是去nginx代理这台主机的主目录/data/nginx/html去找了,但是这台主机的这个目录里面并没有phpmyadmin的图片文件,怎么办?很简单,从192.168.80.11这台主机上复制一台过来便是了,如下所示:

    //注意,这里面的路径最好和php-fpm保持一致。
    [root@n-proxy html]# ls
    index.html  phpMyAdmin-4.0.5-all-languages
    [root@n-proxy html]# pwd
    /data/nginx/html
    [root@n-proxy html]# ln -sv phpMyAdmin-4.0.5-all-languages/ pma
    ‘pma’ -> ‘phpMyAdmin-4.0.5-all-languages/’
    

    我们再次访问图片就会正常加载出来了,输入root,密码就是数据库的密码,就可以登录上数据库了。

    动静分离

    server {
            listen 80;
            server_name www.zhanghehe.com.cn;
            index index.html index.php;
    
    
            location / {
                    proxy_pass http://192.168.80.12;
            }
    
            location ~* .php$ {
                    fastcgi_pass 192.168.80.11:9000;
                    fastcgi_index index.php;
                    include fastcgi_params;
                    fastcgi_param SCRIPT_FILENAME   /data/apps$fastcgi_script_name;
            }
    
    }
    ~  
    
    //注意,这里面的路径最好和php-fpm保持一致。
    [root@n-jingtai html]# ls
    index.html  phpMyAdmin-4.0.5-all-languages
    [root@n-jingtai html]# pwd
    /data/nginx/html
    [root@n-jingtai html]# ln -sv phpMyAdmin-4.0.5-all-languages/ pma
    ‘pma’ -> ‘phpMyAdmin-4.0.5-all-languages/’
    
    //测试一下、
    [root@client ~]# ab -c 100 -n 4000 http://192.168.90.10/index.php
    Requests per second:   500 [#/sec] (mean)
    

    加速

    //http段
    fastcgi_cache_path /data/nginx/fcgicache levels=2:2:2 keys_zone=fcache:10m max_size=2g;
    
    vim /etc/nginx/conf.d/nginx_proxy.conf 
    
    server {
            listen 80;
            server_name www.zhanghehe.com.cn;
            index index.html index.php;
    
    
            location / {
                    root /data/nginx/html;
                    proxy_pass http://192.168.80.12;
            }
    
            location ~* .php$ {
                    fastcgi_pass 192.168.80.11:9000;
                    fastcgi_index index.php;
                    include fastcgi_params;
                    fastcgi_param SCRIPT_FILENAME   /data/apps$fastcgi_script_name;
    
                    fastcgi_cache fcache;
                    fastcgi_cache_key $request_uri;
                    fastcgi_cache_valid 200 302 10m;
                    fastcgi_cache_valid 301 1h;
                    fastcgi_cache_valid any 1m;
            }
    
    }
    
    //测试一下,加了缓存之后效果显著
    [root@client ~]# ab -c 100 -n 4000 http://192.168.90.10/index.php
    Requests per second:   1690 [#/sec] (mean)
    

    再加速

    [root@n-proxy fcgicache]# cat /etc/nginx/conf.d/nginx_proxy.conf
    server {
    	listen 80;
    	server_name www.zhanghehe.com.cn;
    	index index.html index.php;
    location / {
    	root /data/nginx/html;
    	proxy_pass http://192.168.80.12;
    }
    
    location ~* .php$ {
    	fastcgi_pass 192.168.80.11:9000;
    	fastcgi_index index.php;
    	include fastcgi_params;
    	fastcgi_param SCRIPT_FILENAME	/data/apps$fastcgi_script_name;
    	fastcgi_keep_conn on;   #持久连接
    	
    	fastcgi_cache fcache;
    	fastcgi_cache_key $request_uri;
    	fastcgi_cache_valid 200 302 10m;
    	fastcgi_cache_valid 301 1h;
    	fastcgi_cache_valid any 1m;
        }
    
    location ~* ^/(status|ping)$ { #状态页也要定向到后端的php-fpm
    	include fastcgi_params;
    	fastcgi_pass 192.168.80.11:9000;
    	fastcgi_param ACRIPT_FILENAME $fastcgi_script_name;
    	}
    
    }
    
    //再测试,效果明显
    [root@client ~]# ab -c 100 -n 4000 http://192.168.90.10/index.php
    Requests per second:   2000 [#/sec] (mean)
    
  • 相关阅读:
    editActionsForRowAtIndexPath(iOS8) tableview编辑(删除、插入、移动)
    iOS--NSNetService和NSNetServiceBrowser(Bonjour网络编程)
    Hyperledger Fabric创建通道抛错Error: got unexpected status: FORBIDDEN -- Failed to reach implicit threshold of 1 sub-policies, required 1 remaining: permission denied解决方案
    Python作业第一课
    我们都要幸福
    SSRS奇怪报错Could not update a list of fields for the quer.
    有感于审计署计算机中级培训
    python笔记——第二天
    学习python——博客记录第一天
    bzoj1027 合金
  • 原文地址:https://www.cnblogs.com/yizhangheka/p/12380312.html
Copyright © 2011-2022 走看看