6、httpd2.4 编译安装LAMP
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
yum install cmake -y
yum install ncurses-devel.x86_64 -y
LAMP
一、CentOS 7 上编译安装
CentOS6 默认:apr-1.3.9 、apr-util-1.3.9 不建议升级
安装开发包:Development Tools
#yum groupinstall 'Devlopment Tools' Server Platform Development' -y
编译安装httpd-2.4.33
这里我们构建MPM为默认模块,这里需要apr和apr-util 1.5以上的版本
官方网站地址 https://apr.apache.org/
1.1、安装apr
wget http://archive.apache.org/dist/apr/apr-1.5.1.tar.gz
tar xvf apr-1.5..tar.gz
cd apr-1.5./
./configure --prefix=/usr/local/apr
make && make install
1.2、安装apr-util
wget http://archive.apache.org/dist/apr/apr-util-1.5.4.tar.gz
tar xvf apr-util-1.5..tar.gz
cd apr-util-1.5./
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
#with-apr要指明apr的安装目录,apr-util要依赖apr编译
make && make install
1.3、httpd编译依赖的包yum安装即可,这里提前安装以便编译过程一次通过
yum install pcre-devel.x86_64 -y #安装开发环境,安装pcre-devel
yum install openssl-devel.x86_64 -y
1.4、编译安装httpd
groupadd -r apache
useradd -r -g apache apache
注:此步做了,就无须重复1.5步骤
下载并且编译安装httpd #wget http://archive.apache.org/dist/httpd/httpd-2.4.33.tar.gz
#tar xvf httpd-2.4.33.tar.gz #cd httpd-2.4.33
./configure \
--prefix=/usr/local/httpd \
--sysconfdir=/etc/httpd24 \
--enable-so \
--enable-ssl \
--enable-cgi \
--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=event
注释:
./configure下的第一行指明编译安装的路径
第二行指明配置文件的路径
第三行支持动态装载卸载模块
第四行支持https通信
第五行支持cgi协议
第六行支持url重写
第七行支持数据压缩
第八行兼容正则表达式
第九行和第十行指明apr和apr-util路径
第十一行 支持大多数模块
第十二行 支持全部的工作模型
第十三行 默认工作模式为event
更接近生产环境模块
./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
useradd -r -s /sbin/nologin apache
chown -R apache:apache /usr/local/apache

1.6、添加环境
编辑/etc/httpd24/httpd.conf,添加如下行即可:
PidFile "/var/run/httpd.pid"
添加man环境
echo "MANPATH=/usr/local/httpd/man" >> /etc/man.config
添加PATH环境变量
echo "export PATH=/usr/local/httpd/bin:$PAHT" > /etc/porfile.d/httpd.sh
source /etc/profile.d/httpd.sh
输出头文件
ln -s /usr/include /usr/local/httpd/include
1.7、添加systemctl服务
首先看下服务列表里有没有这个服务
systemctl list-unit-files --type=service
如果有的话:
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
然后
systemctl daemon-reload //重载系统管理器
1.8、启动
systemctl start httpd.service
开机自启动
systemctl enable httpd
1.9、语法检查
httpd -t 或apachectl -t
检查版本:httpd -V
注:网页默认显示内容
/usr/local/httpd/htdocs/index.html
1.10、CentOS 7 rpm包安装

二、配置
2.1、编译安装后额外的配置文件
[root@localhost httpd]# ls
extra httpd.conf magic mime.types original
2.2、切换使用MPM
LoadModule mpm_event_module modules/mod_mpm_event.so
#LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
#LoadModule mpm_worker_module modules/mod_mpm_worker.so
2.3、修改“Main” server的DocumentRoot
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 启用模块
#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,后端可以自行管理
程序=指令+数据
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so #当请求动态内容时,此模块就是把httpd扮演成CGI客户端

httpd+php结合方式有三种
- modules:php直接作为httpd的模块方式存在,借助模块来实现,无需创建子进程去请求php-server
- cgi (很少用)---此图讲的是该种方式
- fastcgi (简称fpm)
动态请求流程:Client ---> (http) ---> httpd --->(cgi)--->application server (program file) ---> (mysql) ---> mariadb
三、编译安装MySQL
[Unit]
Description=MySQL Server
Documentation=man:mysqld()
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target [Install]
WantedBy=multi-user.target [Service]
User=mysql
Group=mysql Type=forking PIDFile=/var/run/mysqld/mysqld.pid # Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec= # Start main service
ExecStart=/usr/local/mysql5./bin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS # Use this to switch malloc implementation
#EnvironmentFile=-/etc/sysconfig/mysql # Sets open_files_limit
LimitNOFILE = Restart=on-failure RestartPreventExitStatus= 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的更多相关文章
- 二、编译安装LAMP之httpd-2.4.4
回顾 PHP:脚本编程语言,php解释器 Webapp:面向对象的特性 Zend: 第一段:词法分析.句法分析.编译为Opcode: opcode放置于内存中 第二段:执行opcode: opcode ...
- ubuntu10.04编译安装LAMP
ubuntu10.04编译安装LAMP以及简单wordpress的使用 : http://linuxme.blog.51cto.com/1850814/971631 一.源码安装LAMP 网上有一堆关 ...
- CentOS 6编译安装lamp,并分别安装event模块方式和FPM方式的PHP
任务目标: 编译安装LAMP 要求(1) 安装一个模块化的PHP 要求(2) 安装一个FPM的PHP 注意PHP需要最后一个安装,因为需要前两者的支持. 所以这里的安装次序为 1.httpd 2.Ma ...
- CentOS6.3 编译安装LAMP(1):准备工作
卸载yum或rpm安装的amp软件 #在编译安装lamp之前,首先先卸载已存在的rpm包. rpm -e httpd rpm -e mysql rpm -e php yum -y remove htt ...
- 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 ...
- CentOS6.3 编译安装LAMP(2):编译安装 Apache2.4.6
Apache官方说: 与Apache 2.2.x相比,Apache 2.4.x提供了很多性能方面的提升,包括支持更大流量.更好地支持云计算.利用更少的内存处理更多的并发等.除此之外,还包括性能提升.内 ...
- Linux下指定版本编译安装LAMP
说明: 操作系统:CentOS 6.5 64位 需求: 编译安装LAMP运行环境 各软件版本如下: MySQL:mysql-5.1.73 Apache:httpd-2.2.31 PHP:php-5.2 ...
- (1)编译安装lamp三部曲之apache-技术流ken
简介 采用yum安装lamp简单,快捷,在工作中也得到了普遍应用.但是如果我们需要某些特定模块功能,以及制定安装位置等,就需要用到编译安装了,接下来将编译安装lamp之apache. 系统环境及服务版 ...
- 编译安装LAMP之安装Apache+php与管理(十五)
[教程主题]:编译安装LAMP之安装Apache+php与管理 [课程录制]: 创E [主要内容] [1]编译安装Apache+PHP 1.安装程序依赖库和开发环境 为了省事把所需要的库文件全都安装上 ...
随机推荐
- [jsp学习笔记]jstl标签的使用
jstl常用在html嵌套 <body> <% session.setAttribute("q", "yushi"); request.set ...
- lnmp环境快速搭建及原理解析
刚开始学习php的时候是在wamp环境下开发的,后来才接触到 lnmp 环境当时安装lnmp是按照一大长篇文档一步步的编译安装,当时是真不知道是在做什么啊!脑袋一片空白~~,只知道按照那么长的一篇文档 ...
- 【转载】 C#使用Math.Round方法对计算结果进行四舍五入操作
在C#的数值运算中,有时候需要对计算结果进行四舍五入操作,此时就可使用内置方法Math.Round方法来实现四舍五入操作,Math.Round方法有多个重载函数,支持设置有效位数进行四舍五入,如果没有 ...
- 浅谈对BFC的认识,以及用bfc解决浮动问题
我们在前端的学习过程中常常会遇到BFC,用BFC来解决一些margin塌陷.margin合并清理浮动流的问题 那么问题来了,我们所说的BFC到底是个什么东西呢: 什么是BFC BFC(Block Fo ...
- iphone NSTimer invalidate 和 release 释放问题
来源:http://hi.baidu.com/douxinchun/item/920a7655fe7f3fd8d48bacaf 最近在使用NSTimer的时候,遇到了一些内存错误的问题,找了一片很好的 ...
- MySQL Lock--MySQL加锁学习1
准备测试数据: ## 开启InnoDB Monitor SET GLOBAL innodb_status_output=ON; SET GLOBAL innodb_status_output_lock ...
- 使用protobuf (proto3, C++和go语言)
在这里,我先讲述C++使用protobuf,之后,会补充使用go语言使用protobuf. 使用protobuf需要有如下步骤: 在.proto文件中定义消息(message)格式. 使用protob ...
- UIP和lwip的区别 转载
uIP是专门为8位和16位控制器设计的一个非常小的TCP/IP栈.完全用C编写,因此可移植到各种不同的结构和操作系统上,一个编译过的栈可以在几KB ROM或几百字节RAM中运行.uIP中还包括一个HT ...
- Linux磁盘管理——Ext2文件系统
前言 通常而言,对于一块新磁盘我们不是直接使用,而是先分区,分区完毕后格式化,格式化后OS才能使用这个文件系统.分区可能会涉及到MBR和GPT问题.至于格式化和文件系统又有什么关系? 这里的格式化指的 ...
- QT5无法定位程序输入点 于动态链接库QtCore5.dll的解决
本人新手刚接触QT5,今天在写程序时,在QtCreator中可以运行,但是单独运行.exe文件时报错 之后发现是因为我之前在path路径中添加了MinGw,导致里面也有Qt库.但是我编译的时候用的是安 ...