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 输出 ...
- 改进你的c#代码的5个技巧(一)
亲爱的读者,在这篇文章中,我提供了一些c#编程的最佳实践. 你是否在用户输入验证中使用异常处理机制? 如果是,那么你就是那个把你的项目执行速度降低了62倍的人.你不相信我吗?等几分钟;我来教你怎么做. ...
- Java 初中级程序员如何快速成长???
Java 技术学习路线 Java 语言是一门非常流行和重要的语言,目前仍是需求量很大的语言,应用范围很广的语言,在企业级开发.移动开发.大数据云计算.人工智能等领域都有大量的应用. 怎么样学习好 Ja ...
- Head First 设计模式 —— 05. 单例模式
全局变量的缺点 如果将对象赋值给一个全局变量,那么必须在程序一开始就创建好对象 P170 和 JVM 实现有关,有些 JVM 的实现是:在用到的时候才创建对象 思考题 Choc-O-Holic 公司使 ...
- WEB开发框架性能排行与趋势分析2-三大惊喜变化
WEB开发框架性能排行与趋势分析2-三大惊喜变化 Web框架性能排名 上一次基于TechEmpower的<Web Framework Benchmarks>性能基准测试的解读之后,时隔两年 ...
- zabbix客户端安装配置
1.下载,解压并安装zabbixtar zxvf zabbix-2.0.12.tar.gzcd zabbix-2.0.12./configure --prefix=/usr/local/zabbix ...
- 【Linux】Centos7 安装redis最新稳定版及问题解决
------------------------------------------------------------------------------------------------- | ...
- 本地jar添加到本地仓库 本地jar依赖无效问题
最近工作发生了一个很奇怪的事情,我在本地写了一个项目,打包成jar,然后敲命令mvn install:install-file -DgroupId=com.yzwine -DartifactId=yz ...
- 基于.net5 wtm框架、uni-app微信公众号开发一、公众号授权
前端公众号授权 公众号设置 0.首先用IIS创建一个空目录的网站用于公众号域名验证,接着把该网站内网穿透出去,推荐用utools工具,官网:https://u.tools/ 下载安装好后搜索内网穿透并 ...
- 1.5V升3.3V芯片电路图,稳压3.3V供电MCU模块等
干电池1.5V可以升到3.3V,通过PW5100干电池升压IC,于外围3个元件:2个电容和一个电感即可组成1.5V升3.3V的电路系统. 干电池属于低能量的电池产品,不过一般使用到干电池的产品也是输出 ...