apache和LAMP架构
资源池:
httpd依赖包:apr 和 apr-util 下载:点击这里
httpd 下载:点击这里
mysql 下载:点击这里
php 下载: 点击这里
本章资源: 点击这里 资源提取码:u2jv
1、apache简介
Apache(Apache HTTP Server)是Apache软件基金会的一个开放源码的网页服务器,Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。
端口:http对应80端口 https对应443端口
2、apache的三种工作模式
Apache目前一共有三种稳定的MPM(Multi-Processing Module,多进程处理模块)模式;它们分别是:prefork 、worker和event;它们同时也代表这Apache的演变和发展
prefork
prefork是一个非线程型的、预派生的MPM,使用多个进程,每个进程在某个确定的时间只单独处理一个连接,效率高,但内存使用比较大。
优点:适合于没有线程安全库,需要避免线程兼容性问题的系统。它是要求将每个请求相互独立的情况下最好的MPM,这样若一个请求出现问题就不会影响到其他请求;且成熟稳定,兼容所有新老模块。
缺点:一个进程相对占用更多的系统资源,消耗更多的内存。而且,它并不擅长处理高并发请求,在这种场景下,它会将请求放进队列中,一直等到有可用进程,请求才会被处理;不擅长处理高并发请求
worker
worker使用了多进程和多线程的混合模式,worker模式也同样会先预派生一些子进程,然后每个子进程创建一些线程,同时包括一个监听线程,每个请求过来会被分配到一个线程来服务。
优点:线程比起进程会更轻量,因为线程是通过共享父进程的内存空间,因此,内存的占用会减少一些,在高并发,高流量的场景下会比prefork有更多可用的线程,表现会更优秀一些;
缺点:如果一个线程出现了问题也会导致同一进程下的线程出现问题,如果是多个线程出现问题,也只是影响Apache的一部分,而不是全部。由于用到多进程多线程,需要考虑到线程的安全了,在使用keep-alive长连接的时候,某个线程会一直被占用,即使中间没有请求,需要等待到超时才会被释放(该问题在prefork模式下也存在)
event
Apache最新的工作模式,它和worker模式很像
优点:不同的是在于它解决了keep-alive长连接的时候占用线程资源被浪费的问题(HTTP的Keepalive方式能减少TCP连接数量和网络负载),在event工作模式中,会有一些专门的线程用来管理这些keep-alive类型的线程,当有真实请求过来的时候,将请求传递给服务器的线程,执行完毕后,又允许它释放。这增强了在高并发场景下的请求处理
缺点:不支持https
3、常见服务器返回返回状态值
200:ok,请求下载成功
201:create ok,上传成功
403:forbidden,表示客户端没有权限访问所请求的资源
404:Not Found,表示客户端所请求的资源不存在
500:Internal Server Error,服务器内部错误
502:Bad Gateway,代理服务器从上游服务器获取到的是伪响应
4、编译安装的优点
- 源码编译安装的软件的版本较yum一键安装的版本更新;
- 源码编译安装可控性较强,按需安装;
5、编译安装apache
第一步:上传安装包(安装包共三个(apr、apr-util、httpd)可在本章开头资源池下载)
╭─root@localhost.localdomain ~
╰─➤ rz #基于lrzsz软件(用于Windows和linux之间文件传输);可yum下载
╭─root@localhost.localdomain ~
╰─➤ ls
anaconda-ks.cfg apr-1.5.2.tar.gz apr-util-1.5.4.tar.gz httpd-2.4.20.tar.gz
第二步:解压包
╭─root@localhost.localdomain ~
╰─➤ tar -xf apr-1.5.2.tar.gz
╭─root@localhost.localdomain ~
╰─➤ tar -xf apr-util-1.5.4.tar.gz
第三步:解决依赖包
╭─root@localhost.localdomain ~
╰─➤ yum install gcc gcc-c++ ncurses-devel ncurses pcre pcre-devel openssl-devel zlib-devel -y
第四步:编译安装apr
╭─root@localhost.localdomain ~
╰─➤ cd /apr-1.5.2
╭─root@localhost.localdomain ~/apr-1.5.2
╰─➤ ./configure --prefix=/usr/local/apr && make && make install
第五步:编译安装apr-util
╭─root@localhost.localdomain ~/apr-1.5.2
╰─➤ cd ..
╭─root@localhost.localdomain ~
╰─➤ cd apr-util-1.5.4/
╭─root@localhost.localdomain ~/apr-util-1.5.4
╰─➤ ./configure --with-apr=/usr/local/apr \
--prefix=/usr/local/apr-util && make && make install
编译安装httpd的常见报错解决


第六步:编译安装httpd
╭─root@localhost.localdomain ~/apr-util-1.5.4
╰─➤ cd ..
╭─root@localhost.localdomain ~
╰─➤ tar -xf httpd-2.4.20.tar.gz
╭─root@localhost.localdomain ~
╰─➤ cd httpd-2.4.20
╭─root@localhost.localdomain ~/httpd-2.4.20
╰─➤ ./configure --help #查看
╭─root@localhost.localdomain ~/httpd-2.4.20
╰─➤ ./configure \
> --with-apr=/usr/local/apr \
> --with-apr-util=/usr/local/apr-util \
> --with-mpm=event \
> --prefix=/usr/local/httpd2.4 \
> --enable-so \
> --enable-ssl \
> --enable-cache \
> --enable-deflate \
> --enable-rewrite \
> && make && make install
第七步:启动apache
╭─root@localhost.localdomain ~/httpd-2.4.20
╰─➤ cd /usr/local/httpd2.4/bin
╭─root@localhost.localdomain /usr/local/httpd2.4/bin
╰─➤ ls
ab apxs dbmmanage envvars-std htcacheclean htdigest httpd logresolve
apachectl checkgid envvars fcgistarter htdbm htpasswd httxt2dbm rotatelogs
╭─root@localhost.localdomain /usr/local/httpd2.4/bin
╰─➤ ./apachectl start
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
╭─root@localhost.localdomain /usr/local/httpd2.4/bin
╰─➤ ss -tnl | grep 80
LISTEN 0 128 *:80 *:*
╭─root@localhost.localdomain /usr/local/httpd2.4/bin
╰─➤
第八步:在任何路径下执行apachectl(执行命令1和命令2即可)
╭─root@localhost.localdomain /usr/local/httpd2.4/bin
╰─➤ vim /etc/profile.d/httpd.sh #命令1
...
export PATH=/usr/local/httpd2.4/bin:$PATH
...
╭─root@localhost.localdomain /usr/local/httpd2.4/bin
╰─➤ cat /etc/profile.d/httpd.sh
export PATH=/usr/local/httpd2.4/bin:$PATH
╭─root@localhost.localdomain /usr/local/httpd2.4/bin
╰─➤ echo $PATH #PATH为环境变量
/usr/local/httpd2.4/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
╭─root@localhost.localdomain /usr/local/httpd2.4/bin
╰─➤ export /etc/profile.d/httpd.sh
export: not valid in this context: /etc/profile.d/httpd.sh
╭─root@localhost.localdomain /usr/local/httpd2.4/bin
╰─➤ source /etc/profile.d/httpd.sh #命令2
拓展PATH环境变量讲解https://www.cnblogs.com/hust-chenming/p/4943268.html
6、apache主配置文件简介
ServerRoot "/usr/local/httpd2.4"
##主配置文件的目录
Listen 80
##监听的端口
ServerAdmin you@example.com
##指定管理员邮箱
ServerName www.example.com:80
##指定域名
DocumentRoot "/usr/local/httpd2.4/htdocs"
##指定网络根目录
DirectoryIndex index.html
##网站首页文件
ErrorLog "logs/error_log"
##错误日志
7、基于端口创建虚拟主机
第一步:修改配置文件
╭─root@localhost.localdomain /usr/local/httpd2.4/bin
╰─➤ cd /usr/local/httpd2.4/conf
╭─root@localhost.localdomain /usr/local/httpd2.4/conf
╰─➤ ls
extra httpd.conf magic mime.types original
╭─root@localhost.localdomain /usr/local/httpd2.4/conf
╰─➤ vim httpd.conf #找到httpd的主配置文件,并编辑
#文件末尾添加内容:
...
<VirtualHost *:81>
documentroot /usr/local/httpd2.4/htdocs/du1
directoryindex index.html
</VirtualHost>
<VirtualHost *:82>
documentroot /usr/local/httpd2.4/htdocs/du2
directoryindex index.html
</VirtualHost>
...
/Listen #找到Listen 并监听81、 82端口
...
#Listen 12.34.56.78:80
Listen 80
Listen 81
Listen 82
...
第二步:创建网站根目录
╭─root@localhost.localdomain /usr/local/httpd2.4/conf
╰─➤ mkdir /usr/local/httpd2.4/htdocs/du1
╭─root@localhost.localdomain /usr/local/httpd2.4/conf
╰─➤ mkdir /usr/local/httpd2.4/htdocs/du2
第三步:写入测试文件
╭─root@localhost.localdomain /usr/local/httpd2.4/conf
╰─➤ echo "hello word" >> /usr/local/httpd2.4/htdocs/du1/index.html
╭─root@localhost.localdomain /usr/local/httpd2.4/conf
╰─➤ echo "good" >> /usr/local/httpd2.4/htdocs/du2/index.html
第四步:重启apache
╭─root@localhost.localdomain /usr/local/httpd2.4
╰─➤ apachectl restart
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
第四步:测试
╭─root@localhost.localdomain /usr/local/httpd2.4
╰─➤ curl 192.168.80.3:81
hello word
╭─root@localhost.localdomain /usr/local/httpd2.4
╰─➤ curl 192.168.80.3:82
good
8、基于域名创建虚拟主机
第一步:修改配置文件
╭─root@localhost.localdomain /usr/local/httpd2.4
╰─➤ vim /usr/local/httpd2.4/conf/httpd.conf
...
<VirtualHost 192.168.80.3>
documentroot /usr/local/httpd2.4/htdocs/du1
directoryindex index.html
servername www.du1.com
</VirtualHost>
<VirtualHost 192.168.80.3>
documentroot /usr/local/httpd2.4/htdocs/du2
directoryindex index.html
servername www.du2.com
</VirtualHost>
...
第二步:解析域名
╭─root@localhost.localdomain /usr/local/httpd2.4
╰─➤ vim /etc/hosts
#添加一行
...
192.168.80.3 www.du1.com
192.168.80.3 www.du2.com
...
#windows中的域名解析文件:Windows(C:)> windows > system32 > drivers > etc > HOSTS 文件
第三步:重启apache
╭─root@localhost.localdomain /usr/local/httpd2.4
╰─➤ apachectl restart
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
第四步:测试
╭─root@localhost.localdomain /usr/local/httpd2.4
╰─➤ curl www.du1.com
hello word
╭─root@localhost.localdomain /usr/local/httpd2.4
╰─➤ curl www.du2.com
good
9、上线静态网站
第一步:上传软件包至网站根目录 (资源池中下载game.zip包)
╭─root@localhost.localdomain /usr/local/httpd2.4
╰─➤ cd /usr/local/httpd2.4/htdocs
╭─root@localhost.localdomain /usr/local/httpd2.4/htdocs
╰─➤ rz #上传game.zip
╭─root@localhost.localdomain /usr/local/httpd2.4/htdocs
╰─➤ unzip game.zip
... #解压内容略
╭─root@localhost.localdomain /usr/local/httpd2.4/htdocs
╰─➤ cd game
╭─root@localhost.localdomain /usr/local/httpd2.4/htdocs/game
╰─➤ ls
images jquery-1.8.3.min.js readme.xls sky_fight.html sky.php
第二步:访问

10、上线动态网站 (资源池中下载wordpress-3.3.1-zh_CN.zip)
LAMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写:
- Linux,操作系统
- Apache,网页服务器
- MariaDB或MySQL,数据库管理系统(或者数据库服务器)
- PHP、Perl或Python,脚本语言
注意:由于手动安装的apache和PHP结合步骤繁琐本章不做介绍,故本章用yum源安装的apache做LAMP架构演示。
第一步:部署LAMP架构
╭─root@localhost.localdomain ~
╰─➤ yum install httpd php-mysql mariadb-server php -y
╭─root@localhost.localdomain ~
╰─➤ apachectl stop
第二步:启动数据库
╭─root@localhost.localdomain ~
╰─➤ systemctl restart mariadb
第三步:上传安装包并配置文件
╭─root@localhost.localdomain ~
╰─➤ cd /var/www/html
╭─root@localhost.localdomain /var/www/html
╰─➤ rz #上传wordpress-3.3.1-zh_CN.zip
╭─root@localhost.localdomain /var/www/html
╰─➤ unzip wordpress-3.3.1-zh_CN.zip
╭─root@localhost.localdomain /var/www/html
╰─➤ cp -a wordpress/* .
╭─root@localhost.localdomain /var/www/html
╰─➤ ls
index.php wp-activate.php wp-comments-post.php wp-cron.php wp-login.php wp-settings.php
license.txt wp-admin wp-config.php wp-includes wp-mail.php wp-signup.php
readme.html wp-app.php wp-config-sample.php wp-links-opml.php wp-pass.php wp-trackback.php
wordpress wp-blog-header.php wp-content wp-load.php wp-register.php xmlrpc.php
╭─root@localhost.localdomain /var/www/html
╰─➤ cp wp-config-sample.php wp-config.php
╭─root@localhost.localdomain /var/www/html
╰─➤ vim wp-config.php
...
// ** MySQL 设置 - 具体信息来自您正在使用的主机 ** //
/** WordPress 数据库的名称 */
define('DB_NAME', 'du');
/** MySQL 数据库用户名 */
define('DB_USER', 'du');
/** MySQL 数据库密码 */
define('DB_PASSWORD', '123');
/** MySQL 主机 */
define('DB_HOST', 'localhost');
...
第四步:配置数据库
╭─root@localhost.localdomain /var/www/html
╰─➤ mysql -uroot
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.52-MariaDB MariaDB Server
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> create database du;
Query OK, 1 row affected (0.01 sec)
MariaDB [(none)]> grant all on *.* to du@'localhost' identified by '123';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> exit
Bye
第五步:修改主配置文件,指定首页默认文件
╭─root@localhost.localdomain /var/www/html
╰─➤ vim /etc/httpd/conf/httpd.conf
...
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
...
╭─root@localhost.localdomain /usr/local/httpd2.4/htdocs
╰─➤ systemctl restart httpd
第六步:访问
参考文献:
http://xin.kendd.cn/?p=56
https://www.cnblogs.com/qiujun/p/6861773.html

apache和LAMP架构的更多相关文章
- LNMP 与 LAMP 架构的区别及配置解决方案
2014-12-31 10:33| 发布者: digitser| 查看: 5618| 评论: 0|原作者: liangsheng 摘要: LNMP 与 LAMP 架构的区别及配置解决方案 LNMP 的 ...
- LAMP架构—源码编译安装 (爱情受过伤,为爱跳过鸭绿江)
LAMP架构--源码编译安装 1.LAMP架构概述 2.编译安装Apache httpd 服务 3.编译安装mysql 服务 4.编译安装PHP 解析服务 5.利用LAMP搭建论坛 1.LAMP架构概 ...
- Apache web服务器(LAMP架构)(week3_day4)--技术流ken
apache介绍 1).世界上使用率最高的网站服务器,最高时可达70%:官方网站:apache.org 2).http 超文本协议 HTML 超文本标记语言 3).URL 统一资源定位符 http:/ ...
- 末学者笔记--apache编译安装及LAMP架构上线
apache介绍 一.Apache的三种工作模式 Apache一共有3种稳定的MPM模式(多进程处理模块),它们分别是prefork.worker.event.http-2.2版本的httpd默认的m ...
- Apache web服务器(LAMP架构)
Apache web服务器(LAMP架构) apache介绍 1).世界上使用率最高的网站服务器,最高时可达70%:官方网站:apache.org 2).http 超文本协议 HTML 超文本标记语言 ...
- LAMP架构应用实战—Apache服务介绍与安装01
LAMP架构应用实战—Apache服务介绍与安装01 一:Apache是什么 Apache是Apache基金会开发的一个高性能.功能强大.安全可靠.灵活的开放源码的WEB服务软件 二:Apache ...
- Httpd服务进阶知识-基于Apache Modele的LAMP架构之Discuz!案例
Httpd服务进阶知识-基于Apache Modele的LAMP架构之Discuz!论坛案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.安装依赖包及数据库 博主推荐阅读: ...
- Httpd服务进阶知识-基于Apache Modele的LAMP架构之WordPress案例
Httpd服务进阶知识-基于Apache Modele的LAMP架构之WordPress案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.安装依赖包及数据库授权 博主推荐阅读 ...
- Httpd服务进阶知识-基于Apache Modele的LAMP架构之PhpMyAdmin案例
Httpd服务进阶知识-基于Apache Modele的LAMP架构之PhpMyAdmin案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常见LAMP应用 PhpMyAdm ...
随机推荐
- [简单-剑指 Offer 53 - I. 在排序数组中查找数字 I]
[简单-剑指 Offer 53 - I. 在排序数组中查找数字 I] 统计一个数字在排序数组中出现的次数. 示例 1: 输入: nums = [5,7,7,8,8,10], target = 8 输出 ...
- Java中几种常见的循环
多重if_else: package com.dengchaoqun.ht; public class Double_For02 { /** * * 打印乘法表 */ public static vo ...
- 腾讯IOT安卓开发初探
目录 腾讯IOT 安卓开发初探 Tecent IOT 开发平台的使用 新建项目 创建产品 添加自定义功能 设备开发 微信小程序配置 面板配置 新建设备 使用设备 安卓开发 前置配置 data.json ...
- Logstash学习之路(一)Logstash的安装
一.Logstash简介 Logstash 是一个实时数据收集引擎,可收集各类型数据并对其进行分析,过滤和归纳.按照自己条件分析过滤出符合数据导入到可视化界面.它可以实现多样化的数据源数据全量或增量传 ...
- WPF学习笔记02_布局
布局原则 WPF窗口只能包含单个元素.如果要放置多个元素,需要放置一个容器,然后在容器中添加元素. 不应显示的设定元素的尺寸 不应该使用屏幕坐标指定元素的位置 布局容器的子元素"共享&quo ...
- WPF 关于拖拽打开文件的注意事项
由于开发需求,需要开发一个类似Win图片浏览的工具 当然也涉及到了拖拽打开的需求 按照固有思路: <Grid x:Name="grid1" AllowDrop="T ...
- OBKoro1的2020年年终总结
前言 一晃眼2020年马上就要过去了,今年感觉过的特别快. 工作已经三年了,之前都没有写过年终总结,结果造成了下面这个现象: 回首过去的几年,记忆已经很模糊了,需要很用力才能想起过去一部分往事. 人生 ...
- Spring中的@Valid 和 @Validated注解你用对了吗
1.概述 本文我们将重点介绍Spring中 @Valid和@Validated注解的区别 . 验证用户输入是否正确是我们应用程序中的常见功能.Spring提供了@Valid和@Validated两个注 ...
- 【Redis3.0.x】发布订阅
Redis3.0.x 发布订阅 基本命令 SUBSCRIBE channel [channel...] 订阅给定的一个或多个频道 PSUBSCRIBE pattern [pattern...] 订阅符 ...
- SpringBoot启动报端口已被占用--解决
问题 启动SpringBoot项目后发现启动失败,控制台输出以下内容 Description: The Tomcat connector configured to listen on port 81 ...
