20171009 LAMP(一)

  • 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工作原理

20171009 LAMP(一)_第1张图片
  • 当客户端请求静态资源时,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:开启短标签,如

(二)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代码中

  • 格式2:html代码嵌入php代码中
hello world"
?>
  • 实验:测试php
vim /var/www/html/index.php


//空行 hello php2!" ?>
//空行 vim /etc/httpd/conf/httpd.conf DirectoryIndex index.php index.html //设置为默认php文件优先级高 systemctl reload httpd
20171009 LAMP(一)_第2张图片
20171009 LAMP(一)_第3张图片
(4)使用mysql扩展连接数据库
vim /var/www/html/index1.php

20171009 LAMP(一)_第4张图片
(5)使用mysqli扩展连接数据库
vim /var/www/html/index2.php
close();
echo date("y/m/d");
phpinfo();
?>
20171009 LAMP(一)_第5张图片

三、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';          //可以修改此处密码
20171009 LAMP(一)_第6张图片
  • 根据提示,安装缺失软件包
yum install php-mbstring
systemctl reload httpd
  • 刷新浏览器,成功显示登录界面
20171009 LAMP(一)_第7张图片
  • 输入本机数据库的用户名和密码即可登录进入
20171009 LAMP(一)_第8张图片

四、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开始安装
20171009 LAMP(一)_第9张图片
  • 安装完成后,输入用户名和密码管理后台
20171009 LAMP(一)_第10张图片
  • 后台管理界面
20171009 LAMP(一)_第11张图片
  • 此时浏览器访问http://192.168.136.130/blog,博客界面如下
20171009 LAMP(一)_第12张图片
  • ab测试php性能
    ab -c 10 -n 100 http://192.168.136.130/blog/
    如下图,当前每秒处理请求数约为10-11
20171009 LAMP(一)_第13张图片

五、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

  • 浏览器打开http://192.168.136.130/,确定安装并加载xcache成功
20171009 LAMP(一)_第14张图片
  • ab测试php性能
    ab -c 10 -n 100 http://192.168.136.130/blog/
    如下图,当前每秒处理请求数约为18-19,比安装xcache前提高了性能80%左右
20171009 LAMP(一)_第15张图片

六、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已经开启

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

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

  • 新增虚拟主机配置文件
rm -f  /etc/httpd/conf.d/fcgi.conf     //将上个实验的fcgi配置文件删除
vim /etc/httpd/conf.d/vhosts.conf
DirectoryIndex index.php

        ServerName "www.hello.com"
        DocumentRoot "/app/website1/"
        
                require all granted
        
        ProxyRequests Off
        ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/app/website1/$1



        ServerName "www.bye.com"
        DocumentRoot "/app/website2/"
        
                require all granted
        
        ProxyRequests Off
        ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/app/website2/$1

  • 准备php文件
mkdir /app/website{1,2}
vim /app/website1/index.php 
welcome to www.hello.com";
phpinfo();
?>

vim /app/website2/index.php
welcome to www.bye.com";
phpinfo();
?>
  • 重启httpd服务
    systemctl restart httpd

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

20171009 LAMP(一)_第19张图片
20171009 LAMP(一)_第20张图片

你可能感兴趣的:(20171009 LAMP(一))