20171009 LAMP(一)

作者: 哈喽别样 | 来源:发表于2017-10-16 23:08 被阅读10次
    • LAMP介绍
    • php详细使用
    • CentOS 7环境下部署phpmyadmin
    • CentOS 7环境下部署wordpress
    • php加速器
    • php的fastcgi模式

    一、LAMP介绍

    (一)LAMP的含义:

    • L: linux
    • A: apache httpd
    • M: mysql, mariadb
    • P: php, python

    (二)Web资源类型

    • 静态资源:原始形式与响应内容一致
    • 动态资源:原始形式通常为程序文件,需要在服务器端执行之后,将执行结果返回给客户端

    (三)Web相关语言

    • 客户端技术:javascript, html,处理静态资源
    • 服务器端技术:php, jsp, python,处理动态资源

    (四)LAMP工作原理

    • 当客户端请求静态资源时,web服务器直接把静态资源返回客户端

    • 当客户端请求动态资源时,httpd的php模块会进行动态运算,如果过程需要数据库的数据作为运算参数时,php连接数据库取得相应数据,运算的结果转换为静态资源由web服务器返回客户端

    • CGI(Common Gateway Interface):httpd程序与php之间数据传输的标准

    (五)php

    • php是一种脚本编程语言,同时也是一种可以嵌入到html中的嵌入式web程序语言

    • Zend Engine:开源的、php脚本语言的解释器

    • Opcode:php脚本编译后的中间语言,顺次执行opcode,每次执行一条,实现php脚本的解释执行

    二、php详细使用

    (一)php的配置

    • 配置文件:/etc/php.ini, /etc/php.d/*.ini

    • 配置文件在php解释器启动时被读取

    • 对配置文件的修改生效方法
      Modules:重启httpd服务
      FastCGI:重启php-fpm服务

    • /etc/php.ini配置文件格式
      [foo]:Section Header
      directive = value
      注释符:使用分号";"

    • 常用设置:

      • max_execution_time = 30:最长执行时间30s
      • memory_limit = 128M:生产不够,可调大
      • display_errors = off:调试使用,不要打开,否则可能暴露重要信息
      • display_startup_errors = off:建议关闭
      • post_max_size = 8M:最大上传数据大小,生产可能临时要调大,比下面项要大
      • upload_max_filesize = 2M:最大上传文件大小,生产可能要调大
      • max_file_uploads = 20:同时上传最多文件数
      • date.timezone = Asia/Shanghai:指定时区
      • short_open_tag = on:开启短标签,如<? phpinfo();?>

    (二)php语言的使用

    (1)httpd与php结合的方式
    • CGI
    • FastCGI
    • MPM:将php编译为httpd的模块,默认方式
      prefork: libphp5.so
      event, worker: libphp5-zts.so
    (2)安装LAMP
    • CentOS 6:
      yum install httpd, php, php-mysql, mysql-server
      service httpd start
      service mysqld start

    • CentOS 7:
      yum install httpd, php, php-mysql, mariadb-server
      systemctl start httpd.service
      systemctl start mariadb.service

    • 注意:要使用prefork模型

    (3)php代码:
    • 格式1:php代码嵌入html代码中
    <h1>
    <?php echo "hello world"?>
    </h1>
    
    • 格式2:html代码嵌入php代码中
    <?php
    echo "<h1>hello world</h1>"
    ?>
    
    • 实验:测试php
    vim /var/www/html/index.php
    <h1>
    <?php echo "hello php1!"?>
    </h1>
    <br />     //空行
    <?php
    echo "<h1>hello php2!</h1>"
    ?>
    <br />     //空行
    <?php
    echo date("y/m/d");      //显示当前年月日
    phpinfo();               //显示php相关信息
    ?>
    
    vim /etc/httpd/conf/httpd.conf
    <IfModule dir_module>
        DirectoryIndex index.php index.html      //设置为默认php文件优先级高
    </IfModule>
    
    systemctl reload httpd
    
    (4)使用mysql扩展连接数据库
    vim /var/www/html/index1.php
    <?php
    $conn = mysql_connect('192.168.136.130','testuser','centos');
    if ($conn)
      echo "OK";
    else
      echo "Failure";
    mysql_close();
    echo date("y/m/d");
    phpinfo();
    ?>
    
    (5)使用mysqli扩展连接数据库
    vim /var/www/html/index2.php
    <?php
    $mysqli=new mysqli("192.168.136.130","testuser","centos");
    if(mysqli_connect_errno()){
      echo "连接数据库失败!";
      $mysqli=null;
      exit;
    }
    echo "连接数据库成功!";
    $mysqli->close();
    echo date("y/m/d");
    phpinfo();
    ?>
    

    三、CentOS 7环境下部署phpmyadmin

    (一)安装相应的LAMP程序

    yum install httpd php php-mysql mariadb-server
    systemctl start httpd
    systemctl start mariadb
    mysql_secure_installation
    

    (二)安装配置phpmyadmin

    • 下载并解压安装包
      tar xvf phpMyAdmin-4.0.10.20-all-languages.tar.xz -C /var/www/html/

    • 配置phpmyadmin

    cd /var/www/html/
    ln -s phpMyAdmin-4.0.10.20-all-languages phpadmin     //用软链接起一个短名字
    cd phpadmin/
    cp config.sample.inc.php config.inc.php               //参考模板配置文件修改
    vim config.inc.php
    $cfg['blowfish_secret'] = 'a8b7hajldjslc6d';          //可以修改此处密码
    
    • 根据提示,安装缺失软件包
    yum install php-mbstring
    systemctl reload httpd
    
    • 刷新浏览器,成功显示登录界面
    • 输入本机数据库的用户名和密码即可登录进入

    四、CentOS 7环境下部署wordpress

    • 本实验需要两台主机:
      主机1:负责提供web服务和php, IP:192.168.136.130
      主机2:负责数据库,IP:192.168.136.230

    (一)安装相关程序

    • 主机1:安装httpd和php相关程序
    yum install httpd php php-mysql 
    systemctl start httpd
    
    • 主机2:安装mariadb程序
    yum install mariadb-server
    systemctl start mariadb
    mysql_secure_installation
    

    (二)准备数据库

    • 主机2:创建数据库和用户
    mysql -u root -p
    MariaDB > create database wpdb;
    MariaDB > grant all on wpdb.* to wpadmin@'%' identified by 'centos';
    MariaDB > exit;
    

    (三)安装WordPress

    • 主机1:解压缩安装包并进行相应的安装配置
    tar xvf wordpress-4.8.1-zh_CN.tar.gz  -C /var/www/html/
    cd /var/www/html
    ln -s wordpress/ blog
    cd /var/www/html/blog/
    cp wp-config-sample.php wp-config.php     //复制配置示例文件
    
    vim wp-config.php 
    /** WordPress数据库的名称 */
    define('DB_NAME', 'wpdb');
    
    /** MySQL数据库用户名 */
    define('DB_USER', 'wpadmin');
    
    /** MySQL数据库密码 */
    define('DB_PASSWORD', 'centos');
    
    /** MySQL主机 */
    define('DB_HOST', '192.168.136.230');
    
    • 浏览器访问http://192.168.136.130/blog,按照提示输入信息,点击安装WordPress开始安装
    • 安装完成后,输入用户名和密码管理后台
    • 后台管理界面
    • 此时浏览器访问http://192.168.136.130/blog,博客界面如下
    • ab测试php性能
      ab -c 10 -n 100 http://192.168.136.130/blog/
      如下图,当前每秒处理请求数约为10-11

    五、php加速器

    (一)实现原理

    将opcode缓存于php的共享内存中,从而可以让同一段代码的后续重复执行时跳过编译阶段以提高性能

    (二)常用php加速器

    • APC (Alternative PHP Cache)
    • eAccelerator
    • XCache:大量应用于生产环境
    • Zend Optimizer和Zend Guard Loader
    • NuSphere PhpExpress

    (三)CentOS 7环境下编译安装php-xcache

    • 准备安装环境
    yum -y install php-devel
    yum groupinstall "development tools"
    tar xvf xcache-3.2.0.tar.bz2 -C /usr/local/src
    cd /usr/local/src/xcache-3.2.0
    
    • 编译安装
    phpize     //生成编译环境
    ./configure --enable-xcache --with-php-config=/usr/bin/php-config
    make && make install
    
    • 安装完成后,在/usr/lib64/php/modules目录下生成xcache.so库文件
    • 安装配置并测试
    cp xcache.ini /etc/php.d/     //添加配置文件
    systemctl restart httpd.service
    vim /var/www/html/index.php
    <?php
    phpinfo();
    ?>
    
    • 浏览器打开http://192.168.136.130/,确定安装并加载xcache成功
    • ab测试php性能
      ab -c 10 -n 100 http://192.168.136.130/blog/
      如下图,当前每秒处理请求数约为18-19,比安装xcache前提高了性能80%左右

    六、php的fastcgi模式

    (一)fastcgi模式介绍

    • fastcgi模式下php以独立程序状态运行,有独立的进程、端口号

    • php-fpm软件包:专用于将php运行于fastcgi模式,与php软件包不能够同时安装

    • httpd2.4支持fastcgi模式,httpd2.2不支持该模式,故CentOS 6环境需要编译httpd2.4才能使用fastcgi模式

    (二)配置fastcgi

    • 配置文件:/etc/php-fpm.conf, /etc/php-fpm.d/*.conf

    • 连接池:

      • pm = static | dynamic
      • static:固定数量的子进程
        pm.max_children 50
      • dynamic:子进程数量以动态模式管理
        pm.max_children = 50
        pm.start_servers = 5
        pm.min_spare_servers = 5
        pm.max_spare_servers = 35
        pm.max_requests= 500
    • 启用php-fpm:

      yum remove php
      yum install php-fpm
      
      vim /etc/httpd/conf.d/fcgi.conf      //添加/etc/httpd/conf.d/fcgi.conf配置文件
      DirectoryIndex index.php
      ProxyRequests Off                    //关闭正向代理
      ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1      //开启fcgi反向代理
      
      systemctl start php-fpm.service 
      systemctl restart httpd
      
    • 浏览器登录http://192.168.136.130/,可以看到php-fpm已经开启

    • ab测试php性能
      ab -c 10 -n 100 http://192.168.136.130/blog/
      如下图,当前每秒处理请求数约为26-28,在相同的xcache加速条件下,php_fpm模式比module模式性能提高40%左右
    • 注意:在httpd服务器上必须启用proxy_fcgi_module模块,充当PHP客户端
      httpd -M | grep fcgi
      cat /etc/httpd/conf.modules.d/00-proxy.conf

    (三)实验:php_fpm环境下虚拟主机设置

    • 新增虚拟主机配置文件
    rm -f  /etc/httpd/conf.d/fcgi.conf     //将上个实验的fcgi配置文件删除
    vim /etc/httpd/conf.d/vhosts.conf
    DirectoryIndex index.php
    <virtualhost *:80>
            ServerName "www.hello.com"
            DocumentRoot "/app/website1/"
            <directory /app/website1>
                    require all granted
            </directory>
            ProxyRequests Off
            ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/app/website1/$1
    </virtualhost>
    
    <virtualhost *:80>
            ServerName "www.bye.com"
            DocumentRoot "/app/website2/"
            <directory /app/website2>
                    require all granted
            </directory>
            ProxyRequests Off
            ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/app/website2/$1
    </virtualhost>
    
    • 准备php文件
    mkdir /app/website{1,2}
    vim /app/website1/index.php 
    <?php
    echo "<h1>welcome to www.hello.com</h1>";
    phpinfo();
    ?>
    
    vim /app/website2/index.php
    <?php
    echo "<h1>welcome to www.bye.com</h1>";
    phpinfo();
    ?>
    
    • 重启httpd服务
      systemctl restart httpd

    • 在测试主机上添加hosts记录,浏览器登录http://www.hello.com, http://www.bye.com,结果符合预期

    相关文章

      网友评论

        本文标题:20171009 LAMP(一)

        本文链接:https://www.haomeiwen.com/subject/hbhpyxtx.html