码迷,mamicode.com
首页 > 其他好文 > 详细

lamp

时间:2017-10-18 19:57:42      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:lamp

一、LAMP

1、概念

LAMP指的Linux(操作系统)、ApacheHTTP 服务器,MySQL(有时也指MariaDB,数据库软件) 和PHP(有时也是指Perl或Python) 的第一个字母,一般用来建立web应用平台。

2、web资源的类型

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

3、LAMP结构

技术分享

CGI:Commom Gateway Interface可以让一个客户端从网页浏览器通过http服务器向执行在网络服务器上的程序传输数据;CGI描述了客户端与服务器程序之间传输的一种标准。

程序=指令(代码文件)+数据(数据存储系统、文件)

请求过程:

Client--(http协议)-->httpd-->(CGI)-->application server(program file)-->(mysql)-->mysql

技术分享

二、PHP

1、PHP简介

PHP(PHP: Hypertext Preprocessor)是通用服务器端脚本编程语言,主要用于web开发实现动态web页面,也是最早实现将脚本嵌入HTML源码文档中的服务器端脚本语言之一。同时,php还提供了一个命令行接口,因此,其也可以在大多数系统上作为一个独立的shell来使用

2、PHP配置

(1)配置文件

/etc/php.ini
/etc/php.d/*.ini
配置文件在php解释器启动时被读取。

(2)配置文件格式

directive = value

注释符:

#:纯粹的注释信息
;:用于注释可启用的directive;较新的版本中,已经全部使用“;”进行注释。

(3)php.ini配置文件设置

max_execution_time = 30 #最长执行时间30s

memory_limit 128 #内存限制,但是实际生产中不够,可调大此值

display——startup_errors off #显示启动时出错信息,建议关闭,如果不关闭,会有可能显示一些重要信息

post_max_size 8M #最大上传数据大小,生产环境中可能临时调大

upload_max_filesize 2M #最大上传文件大小,生产环境中可能要调大。但是要比post_max_size值要小。

max_file_uploads = 20 #同时上传最多文件数

date.timezone = Aisa/shanghai #指定时区

short_open_tag = on 开启端标签,如<?phpinfo()>

如果想了解更多请查看http://php.net/manual/zh/ini.core.php

(4)PHP的加速器

php的加速器:基于PHP的特殊扩展机制如opcode缓存扩展也可以将opcode缓存于php的共享内存中,从而可以让同一段代码的后续重复执行时跳过编译阶段以提高性能。这些加速器并非真正提高了opcode的运行速度,而仅是通过分析opcode后并将它们重新排列以达到快速执行的目的。

类型

  • APC (Alternative PHP Cache)遵循PHP License的开源框架,PHP opcode缓存加速器,目前的版本不适用于PHP 5.4 项目地址http://pecl.php.net/package/APC

  • eAccelerator源于Turck MMCache,早期的版本包含了一个PHP encoder和 PHP loader,目前encoder已经不在支持。项目地址 http://eaccelerator.net/

  • XCache快速而且稳定的PHP opcode缓存,经过严格测试且被大量用于生产环境。项目地址:http://xcache.lighttpd.net/,收录EPEL源

  • Zend Optimizer和Zend Guard Loader Zend Optimizer并非一个opcode加速器,它是由ZendTechnologies为PHP5.2及以前的版本提供的一个免费、闭源的PHP扩展,其能够运行由Zend Guard生成的加密的PHP代码或模糊代码。 而Zend Guard Loader则是专为PHP5.3提供的类似于Zend Optimizer功能的扩展。项目地址http://www.zend.com/en/products/guard/runtime-decoders

  • 加速器,它支持装载通过NuSphere PHP Encoder编码的PHP程序文件,并能够实现对常规PHP文件的 执行加速。项目地址,http://www.nusphere.com/products/phpexpress.htm

三、LAMP构建

我们在构建LAMP服务时,需要每一个服务都要测试成功,必须在安装完此服务之后,测试服务是否工作正常;与其他服务是否能测试成功。在安装之前我们必须得知道php是依赖于mysql\mariadb和apache服务的,所有我们必须按前两个服务再安装php。如果先安装php也不是不可,慢慢的拍错,想必一定会成功的。

下面的过程在CentOS 6 中进行配置。

1、httpd安装

(1)使用yum源安装

[root@localhost ~]# yum install -y httpd

(2)配置主配置文件/etc/httpd/conf/httpd.conf

[root@localhost ~]# vim /etc/httpd/conf/httpd.conf

ServerTokens prod   #修改响应报文显示系统信息
ServerName www.example.com:79   #如果不开启这项,启动会提示如下内容:
    Starting httpd: httpd: Could not reliably determine the server‘s fully qualified domain name, using localhost.localdomain for ServerName

(3)设为开机启动并启动httpd服务

[root@localhost ~]# chkconfig httpd on[root@localhost ~]# service httpd start[root@localhost ~]# ss -tnl #建议启动后查看端口是否启动

(4)测试是否成功

技术分享

2、mysql安装

(1)使用yum源安装

[root@localhost ~]# yum install -y mysql-server

(2)设置为开机启动并启动mysql服务

[root@localhost ~]# chkconfig mysqld on[root@localhost ~]# chkconfig --list mysqld

mysqld          0:off   1:off   2:on    3:on    4:on    5:on    6:off

[root@localhost ~]# service mysqld start

(3)初始化数据库

[root@localhost ~]# mysql_secure_installation 详细的内容向看mysql配置http://merit.blog.51cto.com/10757694/1968557

(4)创建用户

mysql> CREATE DATABASE wpdb; #创建数据路

mysql> GRANT ALL PRIVILEGES ON wpdb.* TO joah@‘localhost‘ IDENTIFIED BY ‘123456‘;#授权用户对wpdb权限

mysql> GRANT ALL PRIVILEGES ON wpdb.* TO joah@‘127.0.0.1‘ IDENTIFIED BY ‘123456‘;#授权用户对wpdb权限

mysql> SELECT user,host,password FROM mysql.user;

+------+-----------+-------------------------------------------+
| user | host      | password                                  |
+------+-----------+-------------------------------------------+
| root | localhost | *6B8CCC83799A26CD19D7AD9AEEADBCD30D8A8664 |
| root | 127.0.0.1 | *6B8CCC83799A26CD19D7AD9AEEADBCD30D8A8664 |
| joah | 127.0.0.1 | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| joah | localhost | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+------+-----------+-------------------------------------------+
4 rows in set (0.00 sec)

(5)测试是否成功

[root@localhost ~]# mysql -ujoah -p 技术分享

3、php安装

(1)使用yum源安装php

[root@localhost ~]# yum install -y php

php安装相当于添加了一份配置文件在/etc/httpd/conf.d/目录,如果要使其生效重新启动httpd服务即可。

4、测试php和httpd是否配置成功

(1)在/var/www/html目录下创建文件测试

[root@localhost html]# vim index.php

<?php
        echo "<h>success</h>";
        phpinfo();
?>

[root@localhost html]# service httpd restart #重启测试是否成功

技术分享

5、测试php是否可以和数据库连接成功

(1)php-mysql安装

不过在测试之前需安装一个程序包使其能相互关联作用。

The php-mysql package contains a dynamic shared object that will add MySQL database support to PHP. MySQL is an object-relational database management system. PHP is an HTML-embeddable scripting language. If you need MySQL support for PHP applications, you will need to install  this package and the php package. 提供了一个动态分享库使mysql数据库支持php

[root@localhost ~]# yum install -y php-mysql

(2)编辑index.php文件

测试方法一:

<?php


        $conn = mysql_connect(‘localhost‘,‘joah‘,‘123456‘);
        if($conn)
            echo "ok";
        else
            echo "failure";
        mysql_close();
?>

技术分享

测试方法二:

编辑index.php文件

<?php
        $mysqli=new mysqli("localhost","joah","123456");
        if(mysqli_connect_errno()){
            echo "failure";
            $mysqli=null;
            exit;
        }
            echo "ok";
            $mysqli->close();
?>

技术分享

此时我们就可以使用这个环境构建一些软件等;下面我们从phpMyadmin和wordpress这两个软件进行说明。

安装phpMyadmin

(1)上传软件包并进行编译安装

[root@localhost ~]# mv phpMyAdmin-4.3.5-all-languages.zip /usr/local/src/#将上传的软件包移到到此目录下方便管理源码编译的安装包

[root@localhost src]# unzip phpMyAdmin-4.3.5-all-languages.zip -d /var/www/html/#将此包解压至/var/www/html目录下

(2)配置配置文件

[root@localhost html]# ln -sv phpMyAdmin-4.3.5-all-languages/ pma#创建软连接

[root@localhost pma]# cp config.sample.inc.php config.inc.php#准备配置文件 [root@localhost pma]# vim config.inc.php #编辑配置文件在下面行输入随机数即可 技术分享

重启服务测试,测试几次也不行。通过官网上查看原来php此不支持phpMyadim这个版本。

技术分享

重新下载一个较低版本安装

[root@localhost html]# unzip phpMyAdmin-4.0.5-all-languages.zip

[root@localhost html]# ln -sv phpMyAdmin-4.0.5-all-languages pem#创建软连接

[root@localhost pem]# cp config.sample.inc.php config.inc.php

[root@localhost pem]# vim config.inc.php

技术分享

重启服务测试

技术分享

此时会出现错误提示,安装mbsting包即可

[[root@localhost src]# rpm -ivh php-mbstring-5.3.3-22.el6.x86_64.rpm --force#由于在CentOS6中属于epel所以需要配置epel源,但是由于本机上不了网,所以这种方式安装

重启httpd服务测试是否成功

技术分享

成功,接下来就是自己配置过程了 ,此时登录的用户名和密码是数据库授权的用户和密码。

wordpress安装

WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站。也可以把 WordPress当作一个内容管理系统(CMS)来使用。WordPress是一款个人博客系统,并逐步演化成一款内容管理系统软件,它是使用PHP语言和MySQL数据库开发的。用户可以在支持 PHP 和 MySQL数据库的服务器上使用自己的博客。<摘自:百度>

(1)解压缩安装

[root@localhost src]# tar xvf wordpress-4.8.tar.gz -C /var/www/html/

(2)准备配置文件

方式一:[root@localhost wordpress]# cp wp-config-sample.php wp-config.php

[root@localhost wordpress]# vim wp-config.php #编辑此配置文件 技术分享

方式二:

[root@localhost wordpress]# setfacl -Rm u:apache:rwx wordpress#由于是基于apache用户运行所有给apache用户对此文件rwx权限即可

(3)测试是否成功

http://192.168.4.59/wordpress/wp-admin/setup-config.php

技术分享

然后下面就可以搭建自己的博客啦!

注意在装完数据库之后切记一定要把刚刚授权的权限删除[root@localhost html]# setfacl -b blog/

CentOS 7搭建LAMP环境

(1)安装httpd服务并测试

(2)安装mariadb服务并测试

(3)安装php并测试与httpd和mariadb能否相关连接

(4)搭建phpMyadimn

(5)搭建wordpress

上述几部与CentOS6安装都基本类似,这里就不再累述。

(6)测试性能如何

下面我们测试以性能如何:

[root@localhost html]# ab -c 10 -n 100 http://192.168.4.60/blog/

HTML transferred:       5209700 bytes
Requests per second:    18.88 [#/sec] (mean)    #这里是显示的测试结果
Time per request:       529.736 [ms] (mean)
Time per request:       52.974 [ms] (mean, across all concurrent requests)
Transfer rate:          965.32 [Kbytes/sec] received

由于之前介绍过php加速器我们来安装一个加速器测试下性能如何?

(1)源码编译安装xcache

[root@localhost src]# yum install -y php-devel #安装前需要安装所依赖的包

[root@localhost src]# tar xvf xcache-3.2.0.tar.bz2

(2)安装php加速器测试性能

[root@localhost/usr/local/src]#yum install -y php-devel #安装此包,提供php扩展为编译

[root@localhost/usr/local/src/xcache-3.2.0]#phpize #生成configure配置文件等

[root@localhost/usr/local/src/xcache-3.2.0]#./configure --enable-xcache --with-php-config=/usr/bin/php-config[root@localhost/usr/local/src/xcache-3.2.0]#make && make install

[root@localhost/usr/local/src/xcache-3.2.0]#cp xcache.ini /etc/php.d/#复制配置文件

(3)重启服务,测试性能如何

[root@localhost/usr/local/src/xcache-3.2.0]#systemctl restart httpd.service[root@localhost/usr/local/src/xcache-3.2.0]#ab -c 10 -n 100 http://192.168.4.60/wordpress

Total transferred:      5236400 bytes
HTML transferred:       5209700 bytes
Requests per second:    53.82 [#/sec] (mean)    #性能相当于提升了一倍
Time per request:       185.804 [ms] (mean)
Time per request:       18.580 [ms] (mean, across all concurrent requests)
Transfer rate:          2752.19 [Kbytes/sec] received

因此可以看出加速器对于php起到一定的加速作用,这里需要注意在php更高版本不再xcache不再支持。

三、CGI和FastCGI

1、CGI

CGI(Common Gateway Interface,通用网关接口),HTTP服务器与你的货其他机器上的程序进行交谈的工具,其程序一般运行在网络服务器上。CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量。

2、FastCGI

FastCGI像是一个常驻型的CGI,它可以一直执行,只要激活后,不会每次都要花费时间去fork一次。

工作原理

(1)Web Server启动时载入FastCGI进程管理器(IIS ISAPI或Apache Module)

(2)FastCGI进程管理器自身初始化,启动多个CGI解释器进程(可见多个php-cgi)并等待来自Web Server的连接。

(3)当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。 Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。

(4)FastCGI 子进程完成处理后将标准输出和错误信息从同一连接返回Web Server。当FastCGI子进程关闭连接时, 请求便告处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在Web Server中)的下一个连接。 在CGI模式中,php-cgi在此便退出了。

3、php-fpm和FastCGI

(1)两者之间有何联系

php的解析器是php-cgi,只能解析请求,返回结果,不会对进程管理;为了能调用php-cgi进程程序,php-fpm就诞生了。

在CentOS 6 中:

PHP-5.3.2之前,默认不支持fpm机制,需要自行打补丁并编译安装;

httpd-2.2:默认不支持fcgi协议,需要自行编译此模块;

为了能在CentOS 6 中支持此功能,编译安装http和php即可。

在CentOS 7中:

httpd-2.4:rpm包默认编译支持了fcgi模块

php-fpm包:专用于将php运行于fpm模式

(2)配置文件

这里在CentOS7中对php-fpm配置文件进行讲解

[root@localhost~]#yum install -y php-fpm #直接使用yum源安装即可

主配置文件:

/etc/php-fpm.conf  和 /etc/php-fpm.d/*.conf

选项介绍:

pm = static(固定数量的子进程)|dynamic(以动态模式管理)
pm.max_children  最大子进程
pm.start_servers 初始化时开启的子进程
pm.min_spare_servers 最小空闲子进程
pm.max_spare_servers 最大空闲子进程
pm.max_requests 每个子进程最大请求数量
php_value[session.save_handler]     设置类型
php_value[session.save_path]  文件的存储位置

为了确保运行php-fpm进程的用户对session目录有读写权限

mkdir /var/lib/php/session
chown apache.apache /var/lib/php/session

如果想支持远程主机:修改配置文件/etc/php-fpm.d/www.conf

listen
  格式:
    ip.add.re.ss:port
    port
listen.allowed_clients  允许远程who连接,默认any
listen.backlog  等待队列的长度,-1表示无限制

(3)使http支持php-fpm

确认httpd程序是否已经加载了proxy_fcgi_module

[root@localhost/etc/php-fpm.d]#httpd -M |grep fcgi #必须加载了这个模块才能支持php-fpm

进行配置

[root@localhost/etc/httpd/conf.d]#vim fastcgi.conf

   DirectoryIndex index.php #设置默认索引文件
   ProxyRequests off    #是否开启正向代理
   ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1    #路径匹配

[root@localhost/etc/httpd/conf.d]#ss -tnl #查看端口是否开启

技术分享

下面我们来测试下性能如何?

[root@localhost/etc/httpd/conf.d]#ab -c 10 -n 100 http://192.168.4.60/wordpress/#测试我们在CentOS 7 搭建的博客 技术分享

独立运行的php跟模块方式运行的php的性能略有提升。

本文出自 “Joah” 博客,请务必保留此出处http://merit.blog.51cto.com/10757694/1973800

lamp

标签:lamp

原文地址:http://merit.blog.51cto.com/10757694/1973800

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!