www.itjc8.com

新特性:

  • MPM支持运营DSO机制(动态共享对象),以模块形式按需加载
  • 支持event MPM
  • 支持异步读写
  • 支持每模块及每个目录分别使用各自的日志级别
  • 每请求配置
  • 增强版的表达式分析器
  • 支持毫秒级的keepalive timeout
  • 基于FQDN的虚拟主机不再需要NameVirtualHost指令
  • 支持用户自定义变量

新模块:

  • mod_proxy_fcgi
  • mod_ratelimit
  • mod_remoteip

修改了一些配置机制:

  •   不再支持使用Order,Deny,Allow来做基于IP的访问控制

httpd依赖于apr-1.4+,apr-util-1.4及以上 ,apr-icon

  •   apr:apache portable  runtime(相当于apache 虚拟机)

编译安装mariadb需要cmake ncurses-devel

  1. yum install cmake -y
  2. yum install ncurses-devel.x86_64 -y

LAMP

一、CentOS 7 上编译安装

 CentOS6 默认:apr-1.3.9 、apr-util-1.3.9 不建议升级

安装开发包:Development Tools

  1. #yum groupinstall 'Devlopment Tools' Server Platform Development' -y

编译安装httpd-2.4.33

这里我们构建MPM为默认模块,这里需要apr和apr-util 1.5以上的版本

  1. 官方网站地址 https://apr.apache.org/

1.1、安装apr

  1. wget http://archive.apache.org/dist/apr/apr-1.5.1.tar.gz
  2. tar xvf apr-1.5..tar.gz
  3. cd apr-1.5./
  4. ./configure --prefix=/usr/local/apr
  5. make && make install

1.2、安装apr-util

  1. wget http://archive.apache.org/dist/apr/apr-util-1.5.4.tar.gz
  2. tar xvf apr-util-1.5..tar.gz
  3. cd apr-util-1.5./
  4. ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
  5. #with-apr要指明apr的安装目录,apr-util要依赖apr编译
  6. make && make install

1.3、httpd编译依赖的包yum安装即可,这里提前安装以便编译过程一次通过

  1. yum install pcre-devel.x86_64 -y #安装开发环境,安装pcre-devel
  2. yum install openssl-devel.x86_64 -y

1.4、编译安装httpd

  1. groupadd -r apache
  1. useradd -r -g apache apache
    注:此步做了,就无须重复1.5步骤
  1. 下载并且编译安装httpd
  2.  
  3. #wget http://archive.apache.org/dist/httpd/httpd-2.4.33.tar.gz
  4. #tar xvf httpd-2.4.33.tar.gz
  5.  
  6. #cd httpd-2.4.33
  1. ./configure \
  2. --prefix=/usr/local/httpd \
  3. --sysconfdir=/etc/httpd24 \
  4. --enable-so \
  5. --enable-ssl \
  6. --enable-cgi \
  7. --enable-rewrite \
  8. --with-zlib \
  9. --with-pcre \
  10. --with-apr=/usr/local/apr \
  11. --with-apr-util=/usr/local/apr-util \
  12. --enable-modules=most \
  13. --enable-mpms-shared=all \
  14. --with-mpm=event
  15. 注释:
  16. ./configure下的第一行指明编译安装的路径
  17. 第二行指明配置文件的路径
  18. 第三行支持动态装载卸载模块
  19. 第四行支持https通信
  20. 第五行支持cgi协议
  21. 第六行支持url重写
  22. 第七行支持数据压缩
  23. 第八行兼容正则表达式
  24. 第九行和第十行指明aprapr-util路径
  25. 第十一行 支持大多数模块
  26. 第十二行 支持全部的工作模型
  27. 第十三行 默认工作模式为event
  1. 更接近生产环境模块
    ./configure --prefix=/usr/local/httpd\
    --sysconfdir=/etc/httpd24\
    --enable-so/\
    --enable-rewirte\
    --enable-ssl\
    --enable-cgi\
    --enable-cgid\
    --enable-mble-cgi\
    --enable-cgid\
    --enable-modules=most\
    --enable-mods-shared=most\
    --with-mpm=event\
    --enable-mpms-shared=all\
    --with-apr=/usr/local/apr\
    --with-apr-util=/usr/local/apr-util

1.5、如果想要更改运行账号和所属组可以通过修改配置文件的user和group字段为apache

  1. useradd -r -s /sbin/nologin apache
  2. chown -R apache:apache /usr/local/apache

1.6、添加环境

编辑/etc/httpd24/httpd.conf,添加如下行即可:

  1. PidFile "/var/run/httpd.pid"

添加man环境

  1. echo "MANPATH=/usr/local/httpd/man" >> /etc/man.config

添加PATH环境变量

  1. echo "export PATH=/usr/local/httpd/bin:$PAHT" > /etc/porfile.d/httpd.sh
    source /etc/profile.d/httpd.sh

输出头文件

  1. ln -s /usr/include /usr/local/httpd/include

1.7、添加systemctl服务

首先看下服务列表里有没有这个服务

  1. systemctl list-unit-files --type=service

如果有的话:

  1. systemctl daemon-reload

脚本添加vim  /usr/lib/systemd/systemhttpd.service

[Unit]
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target
Documentation=man:httpd(8)
Documentation=man:apachectl(8)

[Service]
Type=simple
#EnvironmentFile=/etc/sysconfig/httpd
ExecStart=/usr/local/httpd/bin/httpd $OPTIONS -DFOREGROUND
ExecReload=/usr/local/httpd/bin/httpd $OPTIONS -k graceful
#ExecStop=/bin/kill -WINCH ${MAINPID}
# We want systemd to give httpd some time to finish gracefully, but still want
# it to kill httpd after TimeoutStopSec if something went wrong during the
# graceful stop. Normally, Systemd sends SIGTERM signal right after the
# ExecStop, which would kill httpd. We are sending useless SIGCONT here to give
# httpd time to finish.
KillSignal=SIGCONT
PrivateTmp=true

[Install]
WantedBy=multi-user.target

然后

  1. systemctl daemon-reload //重载系统管理器

1.8、启动

  1. systemctl start httpd.service

开机自启动

  1. systemctl enable httpd

 1.9、语法检查

httpd -t 或apachectl -t

检查版本:httpd -V

  1. 注:网页默认显示内容
    /usr/local/httpd/htdocs/index.html

1.10、CentOS 7 rpm包安装

二、配置

2.1、编译安装后额外的配置文件

  1. [root@localhost httpd]# ls
  2. extra httpd.conf magic mime.types original

2.2、切换使用MPM

  1. LoadModule mpm_event_module modules/mod_mpm_event.so
  2. #LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
  3. #LoadModule mpm_worker_module modules/mod_mpm_worker.so

2.3、修改“Main”  server的DocumentRoot

  1. DocumentRoot "/usr/local/httpd/htdocs"

2.4、基于IP的访问控制法则 (2.4默认拒绝所有文件,写上一个路径后必须在里面定义授权,否则无法访问)

a) 允许所有主机访问:Require all granted

b) 拒绝所有主机访问:Require all denied

<Directory "/usr/local/httpd/htdocs">
  Options Indexes FollowSymLinks

  AllowOverride None

  <RequireAll>

  Require not ip 192.168.1.101

  Require all granted

  </RequireAll>
</Directory>

c)控制特定IP访问  (需要专门放到一个容器里面定义,见b)

  •  Require ip IPADDR:授权指定来源地址的主机访问
  •  Require not ip IPADDR:拒绝指定来源地址的主机访问

  IPADDR:

      IP:192.168.1.10

      Network/mask:192.168.1.10/255.255.255.0

      Net :192.168

d ) 控制特定主机(HOSTNAME)访问 

  •  Require host HOSTNAME:授权指定来源地址的主机访问
  •  Require host not  HOSTNANE:拒绝指定来源地址的主机访问

  HOSTNAME :FQDN(特定主机) 或DOMAIN(指定域内的所有主机)

e) 虚拟主机

  基于IP、Port和FQDN都支持;

  基于FQDN的不再需要NameVirtualHost指令

f)  ssl 启用模块

  1. #LoadModule ssl_module modules/mod_ssl.so

g) centos6 脚本(忽略)

 cd /etc/init.d/rc.d

 cp httpd httpd2.4

  然后修改相应路径


静态资源:静态内容,客户端从服务器获得的资源的表现形式与原文件相同

动态资源:通常是程序文件,需要在服务器执行之后,将执行的结果返回给客户端

注:从磁盘加载数据最终还是会变成数据流形式,即彼此之间是数据流来交流

cgi 是简化版httpd协议,仅用于前端web服务器(cgi客户端)与后端应用程序服务器(cgi服务器)之间交互的httpd协议

CGI:通用网关接口

两者间基于CGI协议通信,两者如果结合的?既然是CGI通信,意味着两者要进行进程间的通信(进程间通信形式:消息队列、共享内存、跨主机)

FCGI(fastcig) 因为前段就无须解析CGI,后端可以自行管理

  程序=指令+数据

  1. LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so #当请求动态内容时,此模块就是把httpd扮演成CGI客户端

httpd+php结合方式有三种

  1. modules:php直接作为httpd的模块方式存在,借助模块来实现,无需创建子进程去请求php-server
  2. cgi (很少用)---此图讲的是该种方式
  3. fastcgi (简称fpm)

动态请求流程:Client ---> (http) ---> httpd --->(cgi)--->application server (program file)  ---> (mysql)  ---> mariadb

三、编译安装MySQL

 

  1. [Unit]
  2. Description=MySQL Server
  3. Documentation=man:mysqld()
  4. Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
  5. After=network.target
  6. After=syslog.target
  7.  
  8. [Install]
  9. WantedBy=multi-user.target
  10.  
  11. [Service]
  12. User=mysql
  13. Group=mysql
  14.  
  15. Type=forking
  16.  
  17. PIDFile=/var/run/mysqld/mysqld.pid
  18.  
  19. # Disable service start and stop timeout logic of systemd for mysqld service.
  20. TimeoutSec=
  21.  
  22. # Start main service
  23. ExecStart=/usr/local/mysql5./bin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS
  24.  
  25. # Use this to switch malloc implementation
  26. #EnvironmentFile=-/etc/sysconfig/mysql
  27.  
  28. # Sets open_files_limit
  29. LimitNOFILE =
  30.  
  31. Restart=on-failure
  32.  
  33. RestartPreventExitStatus=
  34.  
  35. PrivateTmp=false

https://www.cnblogs.com/lynk/p/10407919.html

https://segmentfault.com/a/1190000017801191

https://blog.51cto.com/11010461/2113093

测速网页速度:https://www.17ce.com/

6、httpd2.4 编译安装LAMP的更多相关文章

  1. 二、编译安装LAMP之httpd-2.4.4

    回顾 PHP:脚本编程语言,php解释器 Webapp:面向对象的特性 Zend: 第一段:词法分析.句法分析.编译为Opcode: opcode放置于内存中 第二段:执行opcode: opcode ...

  2. ubuntu10.04编译安装LAMP

    ubuntu10.04编译安装LAMP以及简单wordpress的使用 : http://linuxme.blog.51cto.com/1850814/971631 一.源码安装LAMP 网上有一堆关 ...

  3. CentOS 6编译安装lamp,并分别安装event模块方式和FPM方式的PHP

    任务目标: 编译安装LAMP 要求(1) 安装一个模块化的PHP 要求(2) 安装一个FPM的PHP 注意PHP需要最后一个安装,因为需要前两者的支持. 所以这里的安装次序为 1.httpd 2.Ma ...

  4. CentOS6.3 编译安装LAMP(1):准备工作

    卸载yum或rpm安装的amp软件 #在编译安装lamp之前,首先先卸载已存在的rpm包. rpm -e httpd rpm -e mysql rpm -e php yum -y remove htt ...

  5. CentOS6.3 编译安装LAMP(2):编译安装 Apache2.2.25

    所需源码包: /usr/local/src/Apache-2.2.25/httpd-2.2.25.tar.gz 编译安装 Apache2.2.25 #切换到源码目录 cd /usr/local/src ...

  6. CentOS6.3 编译安装LAMP(2):编译安装 Apache2.4.6

    Apache官方说: 与Apache 2.2.x相比,Apache 2.4.x提供了很多性能方面的提升,包括支持更大流量.更好地支持云计算.利用更少的内存处理更多的并发等.除此之外,还包括性能提升.内 ...

  7. Linux下指定版本编译安装LAMP

    说明: 操作系统:CentOS 6.5 64位 需求: 编译安装LAMP运行环境 各软件版本如下: MySQL:mysql-5.1.73 Apache:httpd-2.2.31 PHP:php-5.2 ...

  8. (1)编译安装lamp三部曲之apache-技术流ken

    简介 采用yum安装lamp简单,快捷,在工作中也得到了普遍应用.但是如果我们需要某些特定模块功能,以及制定安装位置等,就需要用到编译安装了,接下来将编译安装lamp之apache. 系统环境及服务版 ...

  9. 编译安装LAMP之安装Apache+php与管理(十五)

    [教程主题]:编译安装LAMP之安装Apache+php与管理 [课程录制]: 创E [主要内容] [1]编译安装Apache+PHP 1.安装程序依赖库和开发环境 为了省事把所需要的库文件全都安装上 ...

随机推荐

  1. PKCS 标准

    PKCS 标准 The Public-Key Cryptography Standards (PKCS)是由美国RSA数据安全公司及其合作伙伴制定的一组公钥密码学标准,其中包括证书申请.证书更新.证书 ...

  2. mybatis-plus代码生成,实体类不生成父类属性

    一.参考文档: 官方文档其实说的很清楚了,可能有个别地方有点不太清楚. mybatis-plus官方: https://mp.baomidou.com/guide/generator.html 模版引 ...

  3. 原生JS-----一个剪刀石头布游戏

    html: <h1>这是一个剪刀石头布游戏</h1> <h2>请出拳吧!少年!</h2> <h3>您已经获胜了<span id=&qu ...

  4. vue-quill-editor 富文本框使用及上传图片到服务器

    注:上传图片需要结合element-ui的upload上传 首先第一步:安装vue-quill-editor或quill两个模块 yarn add vue-quill-editor -D yarn a ...

  5. jQuery 名称发生冲突怎么办【问题】

    [问题]jQuery 名称发生冲突怎么办? [答案]jQuery 使用 $ 符号作为 jQuery 的简介方式.某些其他 JavaScript 库中的函数(比如 Prototype)同样使用 $ 符号 ...

  6. SYBASE扩充日志段空间

    有时候日志段空间满了使用下列语句也无济于事,又不能直接重启库,就加空间应急,dump tran QAS with truncate_only dump tran QAS with no_log sp_ ...

  7. 笔谈FFmpeg(一)

    现在的工作是播放器库的开发,可不是调用iOS系统自带的播放器框架进行一些简单的功能和界面定制,这些没什么含量.涉及iOS开发有3个年头了,现在的工作算是有点含金量了.涉及播放器的开发,FFmpeg的架 ...

  8. unity获取ugui上鼠标位置

    public class GetMousePos : MonoBehaviour { public Canvas canvas;//画布 private RectTransform rectTrans ...

  9. git小结-ms

    目录 1.git是什么 2.git怎么工作的 3.git常用命令 4.git提效工具 5.git的技术用语 1.git是什么 git是开源的分布式的版本控制系统,可以有效.高速地处理的项目版本管理.g ...

  10. 1-Spark-1-性能调优-数据倾斜1-特征/常见原因/后果/常见调优方案

    数据倾斜特征:个别Task处理大部分数据 后果:1.OOM;2.速度变慢,甚至变得慢的不可接受 常见原因: 数据倾斜的定位: 1.WebUI(查看Task运行的数据量的大小). 2.Log,查看log ...