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

  • 当客户端请求静态资源时,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,结果符合预期

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,539评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,911评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,337评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,723评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,795评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,762评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,742评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,508评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,954评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,247评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,404评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,104评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,736评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,352评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,557评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,371评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,292评论 2 352

推荐阅读更多精彩内容