lamp基础搭建

lamp是目前web服务器最基础的框架,理解其主要原理可以帮助我们在更高层次的学习和操作中事半功倍。

LAMP的组成:
 a: apache (httpd)
 m: mysql, mariadb
 p: php或perl或python(此次使用的是php)

数据库(mysql、mariadb):

作为数据库来说,centos 6和centos 7操作上没太多的不同,只不过,一个6上叫mysql、进程名叫mysqld,7上叫mariadb、进程名叫mariadb.service。而我认为,既然是一个库,就不要来回挪地方,只需要搭建一个就好,不同类型的php可以安装在不同主机上,但都可以指向这一个库。此次我将数据库放在了centos 7.2上,这台7上的ip为172.16.0.215,直接yum install mariadb-server。

接着修改l配置文件:/etc/my.cnf
    在"[mysql]"栏后面加上下列字段:
    innodb_file_per_table=ON
    skip_name_resolve=ON
    AddDefaultCharset UTF-8

注意:此操作6上是不支持的

之后就是systemctl  start  mariadb.service

(当然,还可以systemctl  enable  mariadb.service来设置开机启动)

centos 6上就是service  mysqld  start(开机启动是chkconfig mysqld on)

我在配置完以后运行了一下mysql_secure_installation,它的作用是删除匿名登录的用户权限和test库,并设置密码,说实话,作为实验来说,运行不运行都没关系,反正里面没什么重要信息(而且运行时全是大段英文,密码设置的很乱,还不如自己去完成那些操作了)。

接下来是设置密码(还是自己操作的安心一点,再给root设一遍好了)

输入命令:mysql,如果没有之前的配置,直接就能进去;

接着键入:SET  PASSWORD  FOR  ‘root‘@‘localhost‘  =PASSWORD(‘mageedu‘)

注意:这个root是mysql的root,而不是root用户

接着是授权,我们只是为了搭建,所以就用root和名为mysql的库

GRANT  ALL ON  mysql.*  TO  ‘root‘@‘172.16.%.%‘  IDENTIFIED BY ‘mageedu‘;

%代表任意长度的任意字符,这里相当于授权的这个网段

httpd

首先我们确定安装的版本为当下最为适用的2.4版本,还是安装在这台主机上,yum install安装,接着启动服务并开机启动,它的基础配置之前的博文里提到过,就不在赘述了。而如果在6上,httpd-2.4版本需要编译安装

php

http与php结合的方式:
   CGI:通用网关接口:Common Gatway Interface

modules (把php编译成为httpd的模块)

FastCGI:fpm:C/S架构,通过套接字通信

目前我们主要使用的方式有两种,就是模块化php以及php-fpm,而模块化php中,如果httpd的MPM为prefork,php使用的是libphp5.so模块,如果是其他两种,则是 libphp5-zts.so。

好了,由于模块化php肯定要和httpd在同一台主机上,所以我们还是在这台主机上进行yum install php。而httpd的配置我并没有修改,是默认的prefork,所以不用多余安装libphp5-zts.so这个模块。

同时,在另一台ip为172.16.0.214的centos 7主机上,我们安装php-fpm,同样yum install。centos 7上的php是5.4版本的,如果在6上要用同样的版本,需要编译安装。

需要注意的是:模块化的php和php-fpm是不兼容的,php-fpm是一种实现CGI协议的管理程序,而不是模块,两者会冲突。

我们把两种php安装在不同的主机上,避免了冲突,而另一个重要意义是:将php-fpm放在另一台主机上,就可以实现跨主机的构建lamp方式;而在172.16.0.215上就是同一台主机构建了。我们刚刚提到过, FastCGI是通过套接字通信的,当用户请求php文件时,httpd作为反向代理通过CGi协议,把解析完成的php文件映射到网页页面上,而文本文件就在httpd的本地而不是数据库里,httpd是与php-fpm直接通信的,而数据库的通信对象也是php-fpm,所以,将httpd与数据库二者放在同一主机上,只要php-fpm在别处,两台和三台主机没什么不同。当然,我们还要分别在两台主机上安装php-mysql用来联系php和数据库。

其实上述就是lamp的基本环境,几乎改动一下一些配置就可以把框架搭起来,而在这里,我通过构建虚拟httpd服务器搭建,并通过脚本实现,直接上图:

此脚本可用于php模块化的情况,最早是在学httpd时,想快速配置虚拟服务器写的小脚本,后来发现只要再加入不是很多的东西,就可以完成一个简单的lamp框架,于是就有了这么一个东西,取名xhttpd,后跟create  ’NAME‘可以创建一个httpd虚拟机并带有连接mysql的php页面,如果是add后跟两个数字,则是批量创建名为www#的httpd虚拟机(例如add 1   10,就是创建www1到www10),del和list就是删除和查看,加-a就是全部;

由于amp三者都在同一台主机上,所以其实没什么好说的。说实话,脚本写的很low,甚至会给完美主义者带来些许的不适,但是它能用,而且很方便,分分钟搞出一个虚拟服务器,一言不合就把服务器删了也不会心疼(当然,还是有前面的环境做基础,程序都没装啥都不好使)。

不能忘了的是,我们还有php-fpm跨主机的构建,我在上个脚本基础上做了一些改动,但还是不能一蹴而就,因为毕竟脚本在httpd的主机上,而php-fpm在另一台主机上(ip尾号为214的主机)。

由图可见,仅仅是函数部分做了一些改动,路径也改了改,但名都差不多,主路径还是一样的,至于用法简直一毛一样。

这里的问题是,我httpd主机上自己不提供php文件的解析,所以我把生成index.php的函数注释掉了,改为生成一个简单的文本页面,然后当php-fpm能在这台主机上时,把解析php的路径和主页面的写成一致的,就可以改回来了。

而在php-fpm主机上,由于它是一个进程,所以会生成配置文件/etc/php-fpm.conf,  /etc/php-fpm.d/*.conf;

/etc/php-fpm.conf中没什么需要修改的,而 /etc/php-fpm.d/下只有一个默认的www.conf,那么就改它了:

listen = 127.0.0.1:9000
     listen.allowed_clients = 127.0.0.1
      user = apache
     group =  apache

这是默认的值;将  listen.allowed_clients改为httpd主机的ip 172.16.0.215(也可以把listen改成本机的172.16.0.214,保险点没有错);user和group涉及到session权限;

后面还有pm的模式static和dynamic,默认是dynamic,设置的值也还好,就不改了;

最后是pm方式的php进程存储session的路径:
     php_value[session.save_handler] = files
     php_value[session.save_path] = /var/lib/php/session

但要注意的是session路径本身不存在。

于是我们保存配置并创建session目录,然后确保运行php-fpm进程的用户对此目录有读写权限;
     # mkdir  /var/lib/php/session
     # chown apache.apache /var/lib/php/session

接着,注意到httpd主机上的脚本里写的fcgi路径/data/fpm-vhosts/,在下面创建连接mysql的页面index.php就好了,脚本里的可以复制粘贴,但别忘了把反斜线去掉。

这样,结合我的fhttpd脚本,就可以同样构建好跨主机的lamp框架了,只要往这两个框架下能解析到php文件的那条路径下放程序文件,就可以在框架中跑各种程序了。

下面是两种情况下采用ab的压测对比,同为172.16.0.215主机,并发100,请求1000(目测这是极限了,很慢,就没敢往上加)

前两图为php模块化的情况,每秒10个左右,很尴尬,后面两个是php-fpm情况,一次21,一次37,但之后都稳定在35、36左右,没有保存图,但就算以21算都是前者的2倍了,高下立判。

之后我在两种框架下都部署了xcache,但结果竟然都一毛一样!显然失败了,下图为php模块化下部署xcache

php-fpm也是一点作用没有,图就不贴了。

最后是httpd-2.4和php-5.4的编译安装及配置

安装httpd-2.4:

CentOS 6专用:
   (1) apr
    # ./configure --prefix=/usr/local/apr
    # make && make install
   (2) apr-util
    # ./configure --prefix=/usr/local/apr-util  --with-apr=/usr/local/apr
    # make && make install

注意:后面编译主体时,apr和apr-util要写的是实际编译安装的路径
    
  CentOS 7专用:
   # yum install apr-devel apr-util-devel

# yum install pcre-devel openssl-devel  libevent-devel
  
   # ./configure --prefix=/usr/local/apache24 --sysconfdir=/etc/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork --with-pcre --with-zlib --with-apr=/usr --with-apr-util=/usr
   # make -j #
   # make install

安装php-5.4:
   # yum install libxml2-devel gd-devel freetype-devel libmcrypt-devel
  
   # ./configure --prefix=/usr/local/php54 --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --enable-xml --enable-sockets --with-freetype-dir --with-gd --with-libxml-dir=/usr --with-zlib --with-jpeg-dir --with-png-dir --with-mcrypt --with-apxs2=/usr/local/apache24/bin/apxs --with-config-file-path=/etc/php54.ini --with-config-file-scan-dir=/etc/php54.d
   # make -j #
   # make install
    
    cp php.ini-production  /etc/php54.ini

注意:如果httpd使用了线程式MPM,则编译php时应该额外使用--enable-maintainer-zts;
  
  配置httpd:
   LoadModule php5_module modules/libphp5.so
   AddType application/x-httpd-php .php
   DirectoryIndex index.php index.html

以上就是我的配置,如有差错,欢迎指正。

时间: 2024-10-14 06:29:24

lamp基础搭建的相关文章

Linux之LAMP架构搭建配置

Linux之LAMP架构搭建配置 LAMP简介 LAMP定义指Linux(操作系统).ApacheHTTP 服务器,MySQL(有时也指MariaDB,数据库软件) 和PHP(有时也是指Perl或Python) 的第一个字母,一般用来建立web应用平台. 对于大流量.大并发量的网站系统架构来说,除了硬件上使用高性能的服务器.负载均衡.CDN 等之外,在软件架构上需要重点关注下面几个环节: 使用高性能的操作系统 (OS) . 高性能的网页服务器 (Web Server) .高性能的数据库(Data

LAMP平台搭建及其原理详解

LAMP平台搭建及其原理详解 LAMP平台搭建基础概念 LAMP:提到LAMP很多人会认为LAMP是Linux ,Apache,Mysql,PHP.但是随着技术的不断发展,当今的Lamp,已经不仅仅是这么简单了,这里我们的P除了PHP其实还包括:phython,perl    .而M也不仅仅指的是mysql,也包括mariadb. LAMP平台顾名思义就是Linux,apache,mysql(mariadb),php(phython,perl)的结合.按照他们的结合方式不同,大致可以分成三类:

LAMP 论坛搭建

LAMP 论坛搭建 1.LAMP(搭建一个网站的平台)Linux apache mysql php-基础环境搭建|要有一个干净的系统|配好本地yum源 2.改名字! 3.Login名字生效 4.本地域名解析 / 5.配置yum源 6.挂载修改配置文件 7.清除缓存 8.Yum liast:查看进程清空防火墙设置 .9.开始安装软件包10.设置启动服务 再查看一下 或 11.设置密码 12.看一下端口的号 13.改配置文件/ 14.移动文件 15.看一下 16.配置文件进入 17.配置文件 18.

LAMP环境搭建之编译安装指南(php-5.3.27.tar.gz)

测试环境:CentOS release 6.5 (Final) 软件安装:httpd-2.2.27.tar.gz   mysql-5.1.72.tar.gz   php-5.3.27.tar.gz 1.mysql安装详见:https://www.cnblogs.com/su-root/p/11210794.html 2.apache安装详见:https://www.cnblogs.com/su-root/p/11182549.html 3.PHH安装如下: 一.php安装准备 ①yum安装php

Web服务器群集之LAMP平台部署(LAMP架构搭建)

Web服务器群集之LAMP平台部署(LAMP架构搭建) 涉及:Linux/Centos7系统 Apache Mysql PHP 一.前言 ? 上一篇文章主要讲述了有关Web与HTTP协议的基础知识,有了这一基础知识理论的奠定,将对我们此次搭建部署LAMP平台的实验有所帮助. ? LAMP架构是非常成熟的企业网站应用模式之一,其指的是协同工作的一整套系统和相关软件,能够提供动态Web站点服务及其应用开发环境.LAMP是一个缩写词--Linux操作系统.Apache网站服务器.MySQL数据库服务器

新版LAMP环境搭建

新版LAMP环境搭建 注意:先安装MySQL和Apache,后安装PHP,因为PHP配置编译的时候需要指定mysql路径和apache路径. 编译安装: httpd-2.4.12.tar.gz +  mysql-5.6.22-linux-glibc2.5-x86_64.tar.gz  +  php-5.4.39.tar.gz + xcache-2.0.0.tar.gz 实验环境:               CentOS 6.5 x86_64 编译安装Apache (1)构建MPM为静态模块 在

【原】Spring整合Shiro基础搭建[3]

1.前言 上个Shiro Demo基础搭建是基于官方的快速入门版本,没有集成其他框架,只是简单的通过Main方法来执行Shiro工作流程,并测试一下比较核心的函数:但在企业开发中一般都会集成Spring,因为被Spring管理后很多事情都交给了Spring框架进行了管理,而且Spring框架提供了丰富的支持类,不仅方便我们开发人员进行扩展,也利于维护,通过Spring管理我们能把更多的细节放在业务上,提高我们的开发效率. 2.搭建过程       首先是 新建一个web工程,引入Spring和S

LAMP架构搭建+Discuz论坛搭建【weber出品必属精品】

一.     本机简介: 本机系统: CentOS-6.4-x86_64 主机名:oracle.ywb IP地址:192.168.146.129 二.     在Linux环境下安装Apache步骤 首先将准备好的文件通过PSCP发送至Linux的/Root/test/soft目录下 在windows下按住Ctrl+R,打开运行,输入CMD进入DOS命令行.在dos命令行中使用pscp –scp  命令将要上传的文件上传至Linux中. 上传成功后.我们总共要安装四个文件.第一个我们首先解压:a

[LAMP环境搭建二]MySQL安装

安装前准备工作:[[email protected] src]# yum -y install bison bison-devel ncurses ncurses-devel openssl openssl-devel cmake下载安装http://www.cmake.org/files/v2.8/cmake-2.8.12.2.tar.gz wgettar -zxvfcd./bootstrapgmakegmake install/********************************