菜鸟学Linux 第058篇笔记 httpd编译安装

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

菜鸟学Linux 第058篇笔记 httpd编译安装



PHP: 脚本编程语言,php解释器

WebApp: 面向对象的特性

Zend引擎:

第一段: 语法分析、语法分析、编译为Opcode;

opcode旋转于内存中

第二段: 执行Opcode;


PHP 缓存器

APC

eAccelerator

XCache



PHP解释器-->MySQL, 如何交互?

bash: a.sh

PHP程序 : b.php

php53-mysql 驱动

httpd+php:

CGI

module

FastCGI/fpm   port: 9000




web性能优化(动态内容静态化)

httpd 

缓存:可以把动态脚本执行后所返回的内容存储在httpd的缓存里,

  第二次有用户再请求时,则可快速响应

应用程序服务器

缓存:可以把用户所请求的动态代码,编译成二进制可执行的格式

  并放入缓存中,第二次有其它用户请求时,则可直接执行,而不

  再进行编译的过程


编译配置LAMP:

Linux, Apache, MySQL, PHP(Python, Perl)

编译安装顺序

httpd --> MySQL --> php --> XCache


Apache: ASF(apache软件基金会), httpd, tomcat, cloudware

httpd 2.4.4

php 5.4.13

MySQL 5.5  (rpm,通用二进制,源码)


rpm包

/bin, /sbin, /usr/bin, /usr/sbin

/lib, /usr/lib

/etc

/usr/share/{doc,man}


编译安装

/usr/local/

bin, sbin

lib

etc

share/{doc,man}

/usr/local/apr/

bin, sbin, lib, includes, etc, share/man

(注意需要添加环境变量,库连接,man文档)


httpd编译安装

apr: Apache Portable Runtime

apr apr-util apr-iconv

安装顺序: apr --> apr-util --> httpd

下载apr apr-util httpd  www.apache.org

安装apr 

# tar -xf apr-1.5.2.tar.gz

# cd apr-1.5.2

# ./configure --prefix=/usr/local/apr

# make

# make install

安装apr-util 

# tar -xf apr-util-1.5.4.tar.gz

# cd apr-util-1.5.4

# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr

# make

# make install


安装httpd 

# tar -xf httpd-2.4.25.tar.bz2

# cd httpd-2.4.25.tar.bz2

./configure --prefix=PATH --sysconfdir=PATH 

--enable-so --enable-ssl --enable-deflate --enable-proxy-fcgi

--enable-cgi --enable-cgid --enable-modules=most --enable-mods-shared=most

--enable-mpms-shared={prefork|worker|event|all 可多选} --with-mpm=event

--enable-rewrite 

--with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util  (注意这些是一行内容)

        # make

        # make install

/etc/httpd/httpd.conf

Pidfile "/var/run/httpd.pid"


vim /etc/rc.d/init/httpd

#!/bin/bash

#

# httpd        Startup script for the Apache HTTP Server

#

# chkconfig: - 85 15

# description: Apache is a World Wide Web server.  It is used to serve \

#        HTML files and CGI.

# processname: httpd

# config: /etc/httpd/conf/httpd.conf

# config: /etc/sysconfig/httpd

# pidfile: /var/run/httpd.pid


# Source function library.

. /etc/rc.d/init.d/functions


if [ -f /etc/sysconfig/httpd ]; then

. /etc/sysconfig/httpd

fi


# Start httpd in the C locale by default.

HTTPD_LANG=${HTTPD_LANG-"C"}


# This will prevent initlog from swallowing up a pass-phrase prompt if

# mod_ssl needs a pass-phrase from the user.

INITLOG_ARGS=""


# Set HTTPD=/usr/sbin/httpd.worker in /etc/sysconfig/httpd to use a server

# with the thread-based "worker" MPM; BE WARNED that some modules may not

# work correctly with a thread-based MPM; notably PHP will refuse to start.


# Path to the apachectl script, server binary, and short-form for messages.

apachectl=/usr/local/apache/bin/apachectl

httpd=${HTTPD-/usr/local/apache/bin/httpd}

prog=httpd

pidfile=${PIDFILE-/var/run/httpd.pid}

lockfile=${LOCKFILE-/var/lock/subsys/httpd}

RETVAL=0


start() {

echo -n "Startingprog: "

LANG=HTTPDLANGdaemonpidfile={pidfile} httpdOPTIONS

RETVAL=$?

echo

[ RETVAL = 0 ] && touch{lockfile}

return $RETVAL

}


stop() {

echo -n "Stoppingprog: "

killproc -p pidfiled10httpd

RETVAL=$?

echo

[ RETVAL = 0 ] && rm -f{lockfile} ${pidfile}

}

reload() {

echo -n "Reloadingprog: "

if ! LANG=HTTPDLANGhttpd $OPTIONS -t >&/dev/null; then

RETVAL=$?

echo $"not reloading due to configuration syntax error"

failure "notreloadinghttpd due to configuration syntax error"

else

killproc -p pidfilehttpd -HUP

RETVAL=$?

fi

echo

}


# See how we were called.

case "$1" in

  start)

start

;;

  stop)

stop

;;

  status)

status -p pidfilehttpd

RETVAL=$?

;;

  restart)

stop

start

;;

  condrestart)

if [ -f ${pidfile} ] ; then

stop

start

fi

;;

  reload)

reload

;;

  graceful|help|configtest|fullstatus)

apachectl@

RETVAL=$?

;;

  *)

echo "Usage:prog {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}"

exit 1

esac


exit $RETVAL


chmod +x /etc/init.d/httpd

chkconfig -add httpd

chkconfig --level 35 httpd on


添加环境变量 /etc/profile.d/

vim httpd.sh

export PATH=$PATH:/usr/local/apache/bin 

(不会立即生效,需要重新打开shell)


变更模块 /etc/httpd/httpd.conf

#LoadModule env_module modules/mod_env.so

LoadModule prefork_module modules/mod_prefork.so


(到此编译安装httpd结束)



httpd 2.4新特性

1、MPM可于运行时装载

2、Event MPM 可正式使用

3、异步读写

5、每请求配置:<If>, <ElseIf>, <Else>;

6、增强的表达式分析器;

7、毫秒组的KeepAlive Timeout;

8、基于域名的虚拟主机不再需要NameVirtualHost指令

9、降低了内存占用

10、支持在配置文件中使用自定义变量;


新增加的模块

mod_proxy_fcgi

mod_proxy_scgi

等等




对于基于IP的访问控制

废除

Order allow,deny

allow from all

2.4使用Require user

Require (not) ip IPADDR

IP

NETWORK/MASK

NETWORK/LENGTH

NET

172.16.0.0/255.255.0.0 = 172.16.0.0/16 = 172.16

Requre host HOSTNAME

HOSTNAME

DOMAIN

www.mysky.com

mysky.com

所有主机

Require all granted

Require all deny

本文转自Winthcloud博客51CTO博客,原文链接http://blog.51cto.com/winthcloud/1885738如需转载请自行联系原作者


Winthcloud
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
90
分享
相关文章
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
在Linux系统中,使用Tkinter库时可能会遇到中文显示乱码的问题,这通常是由于字体支持问题导致的,可以通过更换支持中文的字体来解决。
321 0
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
Linux下安装mysql8.0(以tar.xz包安装--编译安装)
通过上述步骤,您完成了从下载、编译、安装到配置MySQL 8.0的全过程。此过程虽然较为复杂,但提供了对MySQL安装环境的完全控制,有助于满足特定的部署需求。在实际操作中,根据具体的系统环境,可能还需调整部分步骤或解决未预见的依赖问题。始终参考官方文档和社区资源,保持安装过程与最新版本的兼容性。
2336 67
|
6月前
|
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
206 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
linux笔记 diff及patch的制作与使用
这篇文章是关于Linux系统中使用`diff`命令生成补丁文件以及使用`patch`命令应用这些补丁的详细教程和实战案例。
219 2
linux笔记 diff及patch的制作与使用
Linux源码阅读笔记18-插入模型及删除模块操作
Linux源码阅读笔记18-插入模型及删除模块操作
Linux源码阅读笔记20-PCI设备驱动详解
Linux源码阅读笔记20-PCI设备驱动详解
Linux源码阅读笔记19-插入删除模块实战
Linux源码阅读笔记19-插入删除模块实战
【linux】PetaLinux 2024.1安装笔记
【linux】PetaLinux 2024.1安装笔记
580 0
|
19天前
|
linux命令详细说明以及案例
本文介绍了常用的 Linux 命令及其详细说明和示例,包括:`ls`(列出目录内容)、`cd`(更改目录)、`rm` 和 `mv`(删除与移动文件)、`grep`(搜索文本)、`cat`(显示文件内容)以及 `chmod`(更改文件权限)。每个命令均配有功能描述、选项说明及实际案例,帮助用户更好地掌握 Linux 命令的使用方法。
118 56
Linux系统中的cd命令:目录切换技巧
踏过千山,越过万水,人生就是一场不断前行的旅程,总充满了未知与挑战。然而,“cd”命令如同你的旅伴,会带你穿梭在如棋盘一般的文件系统中,探索每一处未知。希望你能从“cd”命令中找到乐趣,像是掌控了一种络新妙的魔法,去向未知进发,开始你的探索之旅。
76 24