apache 介绍
1). 世界上使用率最高的网站服务器, 最高时可达 70%; 官方网站: apache.org
2).http 超文本协议 html 超文本标记语言
3).URL 统一资源定位符
- http://www.sina.com.cn:80/admin/index.php
- http:// -- ssl 安全套接字
www.sina.com.cn -- 域名
:80 -- 端口 http 对应 80 端口, https 对应 443 端口
/admin/index.PHP -- 网址目录和文件名
4).LAMP 安装说明
1源码包安装 自定义 开发版本选择方便 效率高
生产环境 安全 稳定
开发环境 局域网 (内网)
2二进制包安装 yum 命令安装 官方版本比较低
Apache 的三种工作模式
Apache 一共有 3 种稳定的 MPM 模式 (多进程处理模块), 它们分别是 prefork,worker,event.http-2.2 版本的 httpd 默认的 mpm 工作模式为 prefork,2.4 版本的 httpd 默认是 event 工作模式. 可以通过 httpd -V 来查看.
- [root@ken ~]# httpd -V | grep -i "server mpm"
- Server MPM: Prefork
编译的时候, 可以通过 configure 的参数来指定:
--with-mpm=prefork|worker|event
1,prefork 工作模式
(作用: 用一个进程处理一个用户请求)
Apache 在启动之初, 就预先 fork 一些子进程, 然后等待请求进来. 之所以这样做, 是为了减少频繁创建和销毁进程的开销. 每个子进程只有一个线程, 在一个时间点内, 只能处理一个请求.
优点: 成熟稳定, 兼容所有新老模块. 同时, 不需要担心线程安全的问题.
缺点: 一个进程相对占用更多的系统资源, 消耗更多的内存. 而且, 它并不擅长处理高并发请求.
2,worker 工作模式
(作用: 一个进程生成多个线程, 一个线程处理一个用户请求)
使用了多进程和多线程的混合模式. 它也预先 fork 了几个子进程 (数量比较少), 然后每个子进程创建一些线程, 同时包括一个监听线程. 每个请求过来, 会被分配到 1 个线程来服务. 线程比起进程会更轻量,
因为线程通常会共享父进程的内存空间, 因此, 内存的占用会减少一些. 在高并发的场景下, 因为比起 prefork 有更多的可用线程, 表现会更优秀一些.
优点: 占据更少的内存, 高并发下表现更优秀.
缺点: 必须考虑线程安全的问题.
3,event 工作模式
(用一个线程处理一个用户请求)
它和 worker 模式很像, 最大的区别在于, 它解决了 keep-alive 场景下, 长期被占用的线程的资源浪费问题. event MPM 中, 会有一个专门的线程来管理这些 keep-alive 类型的线程, 当有真实请求过来的时候,
将请求传递给服务线程, 执行完毕后, 又允许它释放. 这样增强了高并发场景下的请求处理能力.
HTTP 采用 keepalive 方式减少 TCP 连接数量, 但是由于需要与服务器线程或进程进行绑定, 导致一个繁忙的服务器会消耗完所有的线程. Event MPM 是解决这个问题的一种新模型, 它把服务进程从连接中分
离出来. 在服务器处理速度很快, 同时具有非常高的点击率时, 可用的线程数量就是关键的资源限 制, 此时 Event MPM 方式是最有效的, 但不能在 HTTPS 访问下工作.
apache 基本信息
apache 为企业中常用的 web 服务, 用来提供 http://(超文本传输协议)
主配置目录:/etc/httpd/conf
主配置文件:/etc/httpd/conf/http.conf
子配置目录:/etc/httpd/conf.d
子配置文件:/etc/httpd/conf.d/*.conf
默认发布目录:/var/www/HTML/
默认发布文件: index.HTML
默认端口: 80
服务器的返回状态值
(表示请求的是否成功等信息)
1xx: 一般不用, 就是一些描述信息
2xx: 表示请求成功
200:ok, 请求下载成功
201:create ok, 上传成功
3xx: 表示请求的资源被重定向
301:moved permanently, 永久重定向
302:Found, 临时重定向
304:not modified, 标识一个缓存的资源是否发生过更改
4xx: 请求失败, 因为客户端原因导致失败
403:forbidden, 表示客户端没有权限访问所请求的资源
404:Not Found, 表示客户端所请求的资源不存在
405:Method Not Allowd: 表示客户端所用的方法不被允许
5xx: 请求失败, 因为服务器端原因导致失败
500:Internal Server Error, 服务器内部错误
502:Bad Gateway, 代理服务器从上游服务器获取到的是伪响应
503:service unavailable, 服务器暂时不可用
为什么要编译安装
一般来说, 我们软件的安装方式有 yum(rpm), 和源码编译两种方式, 那么为什么我们需要源码编译安装一部分软件? 选择源码编译安装软件有以下几个原因:
1: 满足不同的运行平台, 我们 Linux 发型版本众多, 但是每个版本采用的软件或者内核版本都不一样, 而我们的二进制包所依赖的环境不一定能够正常运行, 所以大部分软件直接提供源码!
2: 方便定制, 满足不同的需求, 很多时候我们所需要的软件都是可以定制的, 我需要什么就安装什么, 大多数二进制代码都是一键装全, 所以自由度并不高!
3: 方便运维, 开发人员维护, 我们的源码是可以打包二进制的, 但是对于这个软件的打包都会有一份代价不小的额外工作, 包括维护, 所以如果是源码的话, 软件产商会直接维护, 但是如果是二进制的话, 一般都是 Linux 发行商提供!
什么是 LAMP
LAMP=Linux Apache MySQL/MariaDB PHP/Perl/Python 这些软件都是开源免费的软件, 几个程序各自是独立的, 经常为了达到我们需要的效果而协同工作, 组成了我们
常见的 LAMP 架构平台! LAMP 是世界上最流行的组合, 当然同时也有 Nginx, 也就是 LNMP: LAMP 相对于 NGINX 来说较为安全, 但是 Nginx 处理高并发比 Apache 要强,
NGINX 相对于 LAMP 来说安全较为差一点, 同样的配制环境负载远远高于 LAMP 向国内的一些大公司, 淘宝, 新浪都在用这一些 NGINX, 向那么大的公司网站需要用到服务器群用 LAMP 搭建环境成本远远大于 NGINX. 打个比方本来 1000000W 访问量需要 10 台 LAMP 环境服务器才能完成, 但是使用 NGINX 也许只需要 5,6 台这样一来对于这样的公司来说就大大的节约了成本.
从网站的流量上来说, 70% 以上的访问流量是 LAMP 来提供的, LAMP 是最强大的网站解决方案, 在以前这句话没有错, 但是在现在, 这句话有待证实!!! 因为在以后的过程中, 会发现我们会使用的架构是 Nginx 和 Apache 结合使用: 使用 Nginx 可以做集群等相关配置, 可以和 apache 一起使用, 有的会用 apache 去跑 PHP, 然后用 nginx 做反向代理, 比如 apache 运行在 8080 端口, nginx 在 80 端口, 访问 PHP 文件时, 反向代理到 apache, 静态页通过 nginx 处理. nginx 支持高并发, apache 对 PHP 的运行比较稳定.
常见的网页类型: htm,HTML,shtml,stm.PHP,asp,aspx,shtm,jsp 等等 Apache 本事只处理静态页面, 处理动态页面需要使用 libphp5.so 这个模块去工作, 编译 PHP 也其实
是将一个至关重要的模块打入到 apache 内部, 然后 apache 收到 PHP 请求, 将请求交给这个模块来处理!
Apache 工作原理
Apache 本身只处理 HTML 静态语言页面, 当客户端需要访问 PHP 页面的时候, Apache 会调用 libphp5.so 这个模块去工作, 这个模块会把 PHP 页面转换成 HTML 静态页面, 让 Apache 处理, Apache 处理过, 会返回给客户端
LAMP 相关网站
Apache=http://httpd.apache.org/ httpd 主程序包
MySQL=http://dev.mysql.com/downloads/mysql/ MySQL 主程序包
PHP=http://php.net/downloads.php PHP 主程序包
apr=http://apr.apache.org/ apr 是 httpd 的依赖包
apr-util=http://apr.apache.org/ apr-util 是 httpd 的第二个依赖包
apr 和 apr-util 这个两个软件是对后端服务软件进行优化的,
apr-util 只是在 apr 的基础上提供了更多的数据结构和操作系统封装接口而已.
pcre 是 httpd 的第三个依赖包 http://pcre.org/
PCRE(Perl Compatible Regular Expressions 中文含义: perl 语言兼容正则表达式) 是一个用 C 语言编写的正则表达式函数库, PCRE 被广泛使用在许多开源软件之中, 最著名的莫过于 Apache HTTP 服务器和 PHP 脚本语言, R 脚本语言, 此外, 正如从其名字所能看到的, PCRE 也是 perl 语言的缺省正则库.
编译安装 Apache
第一步: 安装依赖包
[root@ken ~]# yum install gcc gcc-c++ ncurses-devel ncurses pcre pcre-devel openssl-devel zlib-devel -y
第二步: 上传安装包
- [root@ken ~]# ls
- apr-1.5.2.tar.gz apr-util-1.5.4.tar.gz httpd-2.4.20.tar.gz
第三步: 解压 apr,apr-util 安装包
- [root@ken ~]# tar -xf apr-util-1.5.4.tar.gz
- [root@ken ~]# tar -xf apr-1.5.2.tar.gz
第四步: 编译安装 apr
- [root@ken ~]# cd apr-1.5.2
- [root@ken apr-1.5.2]# ./configure --prefix=/usr/local/apr
- [root@ken apr-1.5.2]# make && make install
第五步: 编译安装 apr-util
- [root@ken apr-1.5.2]# cd ..
- [root@ken ~]# cd apr-util-1.5.4
- [root@ken apr-util-1.5.4]# ./configure --with-apr=/usr/local/apr/ --prefix=/usr/local/apr-util
- [root@ken apr-util-1.5.4]# make && make install
第六步: 安装 apache
- [root@ken apr-util-1.5.4]# cd ..
- [root@ken ~]# tar xf httpd-2.4.20.tar.gz
- [root@ken ~]# cd httpd-2.4.20
- [root@ken httpd-2.4.20]# ./configure \
- > --prefix=/usr/local/httpd2.4/ \
- > --sysconfdir=/etc/httpd2.4/conf/ \
- > --enable-so \
- > --enable-ssl \
- > --enable-CGI \
- > --enable-rewrite \
- > --enable-zlib \
- > --enable-pcre \
- > --with-apr=/usr/local/apr \
- > --with-apr-util=/usr/local/apr-util \
- > --with-mpm=event \
- > --enable-deflate \
- > --enable-mpms-shared=all \
- > --enable-modules=all && make && make install
第七步: 启动 apache
- [root@ken httpd-2.4.20]# cd /usr/local/httpd2.4/bin/
- [root@ken bin]# ls
- ab checkgid envvars-std htdbm httpd rotatelogs
- apachectl dbmmanage fcgistarter htdigest httxt2dbm
- apxs envvars htcacheclean htpasswd logresolve
- [root@ken bin]# ./apachectl start
- AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::20c:29ff:fe13:a149. Set the'ServerName' directive globally to suppress this message
- [root@ken bin]# ss -tnl | grep 80
- LISTEN 0 128 :::80 :::*
第八步: 浏览器访问
输入 Linux 主机 IP 地址即可访问
使用 apache 部署京东网站 (静态网站)
第一步: 关闭防火墙
- [root@ken ~]# setenforce 0
- [root@ken ~]# systemctl stop firewalld
第二步: 下载 httpd
[root@ken ~]# yum install httpd -y
第三步: 上传京东安装包至网站根目录之下
- [root@ken ~]# cd /var/www/HTML/
- [root@ken HTML]# ls
- [root@ken HTML]# rz
- [root@ken HTML]# ls
- jd.zip
- [root@ken HTML]#
第四步: 下载 unzip 并解压
- [root@ken HTML]# yum install unzip -y
- [root@ken HTML]# unzip jd.zip
- [root@ken HTML]# ls
- jd jd.zip
第五步: 启动 httpd
[root@ken HTML]# systemctl restart httpd
第六步: 浏览器访问
yum 一键安装 LAMP 架构
[root@ken ~]# yum install httpd mariadb-server PHP PHP-MySQL -y
PHP-MySQL 用于 PHP 与数据库的通信
基于 LAMP 架构上线博客系统 (动态网站)
第一步: 安装 LAMP
[root@ken ~]# yum install httpd mariadb-server PHP PHP-MySQL -y
第二步: 启动数据库并创建数据库
- [root@ken ~]# MySQL
- ...
- MySQL> create database ken; #创建数据库 ken
- Query OK, 1 row affected (0.00 sec)
- MySQL> grant all on ken.* to ken@"localhost" identified by "123"; #创建用户 ken, 密码为 123
- Query OK, 0 rows affected (0.00 sec)
- MySQL> flush privileges; #刷新授权表
- Query OK, 0 rows affected (0.00 sec)
第三步: 准备 WordPress 安装包
- [root@ken ~]# cd /var/www/HTML
- [root@ken HTML]# rz
- z waiting to receive.**B0100000023be50
- [root@ken HTML]# ls
- WordPress-3.3.1-zh_CN.zip
- [root@ken HTML]# yum install unzip -y
- [root@ken HTML]# unzip WordPress-3.3.1-zh_CN.zip
- [root@ken HTML]# ls
- WordPress WordPress-3.3.1-zh_CN.zip
第四步: 配置 WordPress
- [root@ken HTML]# cd WordPress
- [root@ken WordPress]# cp wp-config-sample.PHP wp-config.PHP
- [root@ken WordPress]# VIM wp-config.PHP
- ...
- //** MySQL 设置 - 具体信息来自您正在使用的主机 **//
- /** WordPress 数据库的名称 */
- define('DB_NAME', 'ken'); #填写数据库名
- /** MySQL 数据库用户名 */
- define('DB_USER', 'ken'); #填写数据库用户名
- /** MySQL 数据库密码 */
- define('DB_PASSWORD', '123'); #数据库密码
- /** MySQL 主机 */
- define('DB_HOST', 'localhost'); #主机名
- ...
第五步: 重启 httpd 服务
[root@ken ~]# systemctl restart httpd
第六步: 浏览器测试
电脑浏览器输入 IP/WordPress/index.PHP
输入用户名和密码
登录成功
来源: https://www.cnblogs.com/kenken2018/p/10455945.html