LAMP

1 LAMP 介绍

LAMMP的介绍
L: linux, A: apache (httpd) M: MySQL MariaDB M:memcached P: php,perl,python
WEB资源的类型:
  静态资源: 原始形式与响应内容一致
  动态资源: 原始形式通常为程序文件,需要在服务器端执行后,将执行结果返回给客户端
CGI: Common Gateway Interface
  可以让客户端,从网页浏览器通过http服务器向执行在网络服务器上的程序传输数据;CGI描述了客户端和服务器程序之间传输的一种标准
  程序=指令+数据
    指令: 代码文件
    数据: 数据存储系统,文件
  请求流程:
    Client --> httpd --> httpd--(cgi) --> application server(program file) --(mysql)-->mysql
  php: 脚本编程语言,嵌入到html中的嵌入式web程序语言,基于zend编译成opcode(二进制格式的字节码,重复运行,可省略编译环境)
  opcode是一种PHP脚本编译后的中间语言,类似于Java的ByteCode,或者.NET的MSL.PHP执行脚本代码一般会经过如下4个步骤(确切的来说,应该为PHP的语言引擎Zend)
    1 Scanning 语法分析,将PHP代码转化为语言片段(Tokens)
    2 Parsing 语义分析,将Tokens转换成简单而有意义的表达式
    3 Compilation 将表达式编译成Opcodes
    4 Executing 顺次执行Opcodes,每次一条,从而实现PHP脚本的功能
      扫描 --> 分析 --> 编译 --> 执行

2 PHP配置

php: 脚本语言解释器
  配置文件: /etc/php.ini, /etc/php.d/*.ini
  配置文件在php解释器启动时被读取
  对配置文件的修改生效方法
    Modules: 重启httpd的服务
    FastCGI: 重启php-fpm服务
  /etc/php.ini配置文件格式:
    [foo]: Section Header
    directive = value
  PHP的配置
    max_execution_time=30 最长执行时间30s
    memory_lmit 128M 生产不大,可调大
    display_errors off 调试使用,不要打开,否则可能会会暴露重要信息
    display_startup_errors off 建议关闭,开启启动时的错误提示
    post_amx_size 8M 最大上传数据大小,生产可能临时要调大,比下面选项要大
    upload_max_filesize 2M 最大上传文件,生产可能要调大
    max_file_uploads =20 同时上传最多文件数
    date.timezone=Asia/Shanghai 指定时区
    收人头_Open_tag= on 开启短标签
php与mysql连接的方式:
mysql的扩展,mysqli的扩展,pdo
  使用mysql扩展连接数据库
     <?php
        $conn = mysql_connect(‘mysqlserver','username','password');
        if ($conn)
          echo "OK";
        else
          echo "Failure";
        mysql_close();
    ?>
  使用mysqli扩展连接数据库
     <?php
       $mysqli=new mysqli("mysqlserver",“username",“password");
       if(mysqli_connect_errno()){
         echo "连接数据库失败!";
         $mysqli=null;
         exit;
       }
      echo "连接数据库成功!";
      $mysqli->close();
    ?>
httpd和php的结合方式
  1 module: php
  2 cgi  #不常用
  3 fastcgi: php-fpm
CentOS 6:
  PHP-5.3.2之前:默认不支持fpm机制;需要自行打补丁编译安装
  httpd-2.2:默认不支持fcgi协议,需要自行编译此模块
  解决方案:编译安装httpd-2.4, php-5.3.3+
CentOS 7:
  httpd-2.4:rpm包默认编译支持了fcgi模块
  php-fpm包:专用于将php运行于fpm模式
配置php和httpd基于模块形式来运行
配置FastCGI
在服务器上必须开启proxy_fcgi_module模块,充当PHP客户端
  <VirtualHost *:80>
    ServerName www.johniu.com
    DocumentRoot /var/www/html
    ProxyRequests Off  #关闭正向代理
    ProxyPassMatch ^/(.*\.php)$   fcgi://127.0.0.1:9000/var/www/html/$1
    <Directory "/var/www/html">
      Options None
      AllowOverride None
      Require all granted
    </Directory>
  </VirtualHost>

6 源码编译LAMP

在CentOS 6 源码编译httpd
编译安装httpd-2.4和php-5.6
  httpd2.4
  1 yum install @"Development tools" pcre-devel  openssl-devel expat-devel
  2 下载安装apr和apr-util 版本必须大于2.3
    ./configure --prefix=/usr/local/apr 
     make && make install
    ./configure --prefix=/usr/local/apr-util
     make && make install 
  4 下载httpd的源码包 
    ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd24 --enable-so --enable-ssl --enable rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork
  5 make && make install
  6 在http的配置文件中添加 AddType application/x-httpd-php  .php\n    AddType application/x-httpd-php-source  .phps 使其支持php文件
  编译安装 php-5.6(模块)
  1 yum install libxml2-devel bzip2-devel libmcrypt-devel(epel源)
  2 ./configure --prefix=/usr/local/php --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-openssl --with-mysqli=mysqlnd --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml  --enable-sockets --with-apxs2=/usr/local/apache/bin/apxs --with-mcrypt  --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2  --enable-maintainer-zts
  3 make && make install
  4 cp php.ini-production /etc/php.ini
  编译安装 php-5.6 FastCGI
  1 yum install  libxml2-devel bzip2-devel libmcrypt-devel libmcrypt mhash mhash-devel
  ./configure --prefix=/usr/local/php5 --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-openssl --with-mysqli=mysqlnd --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml  --enable-sockets --enable-fpm --with-mcrypt  --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php5.d --with-bz2
  2 make && make install 
  3 设定一些php-fpm的运行配置和参数
     cp php.ini-production /etc/php5.ini
     cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm && chmod u+x /etc/rc.d/init.d/php-fpm
     chkconfig --add /etc/rc.d/init.d/php-fpm
     cp /usr/local/php5/etc/php-fpm.conf.default /usr/local/php5/etc/php-fpm.conf

7 以二进制格式安装mysql

1 到官方网站下载mysql的二进制的包
  mariadb-5.5.43-linux-x86_64.tar.gz
2 解压到 /usr/local/并创建软连接
   tar xf mariadb-5.5.43-linux-x86_64.tar.gz -C /usr/local/
   cd /usr/local
   ln -sv mariadb-5.5.43-linux-x86_64  mysql
3 创建用户
   groupadd -r -g 306 mysql&>/dev/null;useradd -s /sbin/nologin -r -u 306 -g 306 mysql  
4 修改mysql的所属组
   chown -R root.mysql mysql
5 给mysql复制启动脚本
  cp support-files/mysql.server  /etc/init.d/mysqld
6 给数据库准备数据存放位置 
   mkdir /mydata/data -p
   chown -R mysql.mysql /mydata/
7 必须在 /usr/local/mysql的目录下面初始化数据库
  scripts/mysql_install_db --datadir=/mydata/data --user=mysql
8 然后就可以启动mysql的数据库
9 添加mysql的PATH路径
  echo 'export PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
  source /etc/profile.d/mysql.sh
10 授权用户可以远程访问本数据库
   mysql > grant all on *.* to test@"%" identified by "test"

8 安装wordpress或phpMyadmin 进行测试

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

推荐阅读更多精彩内容