标签:lamp
LAMP指的Linux(操作系统)、ApacheHTTP 服务器,MySQL(有时也指MariaDB,数据库软件) 和PHP(有时也是指Perl或Python) 的第一个字母,一般用来建立web应用平台。
静态资源:原始形式与相应内容一致。 动态资源:原始形式通常为程序文件,需要在服务器端执行之后哦,将执行结果返回给客户端。
CGI:Commom Gateway Interface可以让一个客户端从网页浏览器通过http服务器向执行在网络服务器上的程序传输数据;CGI描述了客户端与服务器程序之间传输的一种标准。 程序=指令(代码文件)+数据(数据存储系统、文件)
请求过程:
Client--(http协议)-->httpd-->(CGI)-->application server(program file)-->(mysql)-->mysql
PHP(PHP: Hypertext Preprocessor)是通用服务器端脚本编程语言,主要用于web开发实现动态web页面,也是最早实现将脚本嵌入HTML源码文档中的服务器端脚本语言之一。同时,php还提供了一个命令行接口,因此,其也可以在大多数系统上作为一个独立的shell来使用
(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
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服务时,需要每一个服务都要测试成功,必须在安装完此服务之后,测试服务是否工作正常;与其他服务是否能测试成功。在安装之前我们必须得知道php是依赖于mysql\mariadb和apache服务的,所有我们必须按前两个服务再安装php。如果先安装php也不是不可,慢慢的拍错,想必一定会成功的。
下面的过程在CentOS 6 中进行配置。
[root@localhost ~]# yum install -y httpd
[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
[root@localhost ~]# chkconfig httpd on
[root@localhost ~]# service httpd start
[root@localhost ~]# ss -tnl
#建议启动后查看端口是否启动
[root@localhost ~]# yum install -y mysql-server
[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
[root@localhost ~]# mysql_secure_installation
详细的内容向看mysql配置http://merit.blog.51cto.com/10757694/1968557
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)
[root@localhost ~]# mysql -ujoah -p
[root@localhost ~]# yum install -y php
php安装相当于添加了一份配置文件在/etc/httpd/conf.d/
目录,如果要使其生效重新启动httpd服务即可。
/var/www/html
目录下创建文件测试[root@localhost html]# vim index.php
<?php echo "<h>success</h>"; phpinfo(); ?>
[root@localhost html]# service httpd restart
#重启测试是否成功
不过在测试之前需安装一个程序包使其能相互关联作用。
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
测试方法一:
<?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这两个软件进行说明。
[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
目录下
[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是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站。也可以把 WordPress当作一个内容管理系统(CMS)来使用。WordPress是一款个人博客系统,并逐步演化成一款内容管理系统软件,它是使用PHP语言和MySQL数据库开发的。用户可以在支持 PHP 和 MySQL数据库的服务器上使用自己的博客。<摘自:百度>
[root@localhost src]# tar xvf wordpress-4.8.tar.gz -C /var/www/html/
方式一:[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权限即可
http://192.168.4.59/wordpress/wp-admin/setup-config.php
然后下面就可以搭建自己的博客啦!
注意在装完数据库之后切记一定要把刚刚授权的权限删除[root@localhost html]# setfacl -b blog/
CentOS 7搭建LAMP环境
上述几部与CentOS6安装都基本类似,这里就不再累述。
下面我们测试以性能如何:
[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加速器我们来安装一个加速器测试下性能如何?
[root@localhost src]# yum install -y php-devel
#安装前需要安装所依赖的包
[root@localhost src]# tar xvf xcache-3.2.0.tar.bz2
[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/
#复制配置文件
[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(Common Gateway Interface,通用网关接口),HTTP服务器与你的货其他机器上的程序进行交谈的工具,其程序一般运行在网络服务器上。CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量。
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在此便退出了。
php的解析器是php-cgi,只能解析请求,返回结果,不会对进程管理;为了能调用php-cgi进程程序,php-fpm就诞生了。
PHP-5.3.2之前,默认不支持fpm机制,需要自行打补丁并编译安装;
httpd-2.2:默认不支持fcgi协议,需要自行编译此模块;
为了能在CentOS 6 中支持此功能,编译安装http和php即可。
httpd-2.4:rpm包默认编译支持了fcgi模块
php-fpm包:专用于将php运行于fpm模式
这里在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表示无限制
确认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
原文地址:http://merit.blog.51cto.com/10757694/1973800