频道栏目
首页 > 资讯 > 云计算 > 正文

apache(服务器软件)教程

19-02-18        来源:[db:作者]  
收藏   我要投稿

apache基础

主页中的project项目标题中提供了apache组织发布的各种平台软件。
apache:是取自“a patchy server”的读音,意思是充满补丁的服务器。
发布了很多开源的应用程序。如大数据库的平台软件hadoop、zookeeper等。

软件包名称:httpd
服务端口:80/tcp 443/tcp
查apache的配置文件:rpm -qc httpd
配置文件: /etc/httpd/conf/httpd.conf 主配置文件

练习:安装并启动httpd软件。
rpm -q httpd  httpd-manual
yum  -y  install  httpd   httpd-manual
systemctl restart httpd && systemctl enable  httpd
lsof -i:80 或 netstat  -atunlp |grep  :80

练习:安装命令行界面的网页浏览器软件,访问网站。
yum  -y install curl   elinks
curl  127.0.0.1  看到的网站的html源代码
elinks 127.0.0.1  看到网页内容,按q键退出浏览器软件

练习:创建一个index.html的主页。访问网站。
data  > /var/www/html/index.html
free  >> /var/www/html/index.html
lsblk >> /var/www/html/index.html

curl 127.0.0.1 或elinks 127.0.0.1

URl:统一资源标识,定位了一切网上的资源。列子 www.qf.com/index.html
URL:统一资源定位器。列:http://www.baidu.com/xinwen/1.html
www. 万维网
www 主机名
qf.com 域名

客户端
图形化界面:firefox   浏览器
命令: elinks  links
elinks 192.168.1.250

#echo  qf.com  > /var/www/html/index.html

当服务器没有welcome.conf和*.html文件时,web server会显示、/var/www/html这个目录中的目录结构
*//apache的主配置文件:
 vim  /etc/httpd/conf/httpd.conf

 httpd.conf配置文件的组成:
 global全局设置:
 mlodules模块设置:
 VirtualHost虚拟主机设置:
 Directory目录设置(控制访问权限-基于IP、用户认证):
 File文件控制访问控制:
 .....

31 ServerRoot "/etc/httpd" 服务器的根目录(即apache软件的根目录)
41 #Listen 12.34.56.78:80
42 Listen 80 启用80端口的监听
56 Include conf.modules.d/*.conf 包含的子配置文件,此目录是存放apache的模块程序
66 User apache 程序的执行者,用lsof -i :80 或 ps aux | grep apache可查
67 Group apache 程序的执行组,用top -u apache -->按f键-->方向键选group,并空格-->Esc键
86 ServerAdmin root@localhost 网站服务器管理员的邮箱

102 根目录访问权限设置
103 AllowOverride none
104 Require all denied 要求全部拒绝,即拒绝访问/根目录下的任何文件
105

119 DocumentRoot "/var/www/html" 文档根目录,即默认的网站主页目录
124 对/var/www目录访问权限设置
125 AllowOverride None
126 # Allow open access:
127 Require all granted 需要所有授权,即允许任何人访问
128

131
144 Options Indexes FollowSymLinks
151 AllowOverride None
156 Require all granted
157

163 设置dir_module模块。If是Interface接口的缩写
164 DirectoryIndex index.html index.php index.jsp 指定目录的索引(即主页)文件
165

171 文件访问设置
172 Require all denied
173

182 ErrorLog "logs/error_log"
189 LogLevel warn

191 设置log_config_module日志配置模块
196 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"% {User-Agent}i\"" combined
197 LogFormat "%h %l %u %t \"%r\" %>s %b" common
198
199
201 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \ "%{User-Agent}i\" %I %O" combinedio
202

217 CustomLog "logs/access_log" combined
218

220 设置alias_module别名模块
231 # Example:
232 # Alias /webpath /full/filesystem/path 定义/full/.../path路径的别名为/webpath
247 ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
248
249

255
256 AllowOverride None
257 Options None
258 Require all granted
259

260
261
266 TypesConfig /etc/mime.types
277 #AddEncoding x-compress .Z
278 #AddEncoding x-gzip .gz .tgz
283 AddType application/x-compress .Z
284 AddType application/x-gzip .gz .tgz
305 AddType text/html .shtml
306 AddOutputFilter INCLUDES .shtml
307

316 AddDefaultCharset UTF-8 默认的网站字符编码为UTF-8(支持中文)
317
318
324 MIMEMagicFile conf/magic
325

348 EnableSendfile on
353 IncludeOptional conf.d/*.conf

apache有两种运行模式(进程和线程)

稳 prefork model 基于进程(公司常用) 即一个apache进程启动一个线程来响应客户的请求
快 worker model 基于线程(公司少用) 即一个apache进程启动多个线程来响应客户的请求

通俗理解:将进程理解成“超市”,将线程理解成超市中的“收银台”。

基于进程:由主进程创建子进程,每一个进程只有一个线程,内存是不可以共享,系统开销大,但是一个线程坏掉了不会影响其他线程

基于线程:一个进程中会产生多个线程,内存中的某个区域是可以共享的,创建线程数度快,开销小,但是一个线程出现问题时,其他线程都死掉。[以武侠小说中的分身术来理解,即发分身术招式的是进程(本尊),招式中分身是线程]

集群环境:一般都会使用进程模式,不需要某一台主机单独承担大量的访问

httpd模式切换:
centos 7的操作:
cat -n /etc/sysconfig/httpd 请看第10行内容
10 # /etc/httpd/conf.modules.d/00-mpm.conf.

vim /etc/httpd/conf.modules.d/00-mpm.conf
6 LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
12 #LoadModule mpm_worker_module modules/mod_mpm_worker.so
18 #LoadModule mpm_event_module modules/mod_mpm_event.so
说明:apache默认是采用进程模式来运行的,即以上的第6行代码。如需使用多线程模式运行,需要将第6行注释掉并且将第12行启用。然后重启httpd服务,再用httpd -V 查apache的运行模式信息。输出结果的部分内容如下:
Server MPM: worker(线程模式)
threaded: yes (fixed thread count)
forked: yes (variable process count)

---
centos 6的操作(httpd模式切换):
vim /etc/sysconfig/httpd //切换成线程模式
HTTPD=/usr/sbin/httpd.worker
/etc/init.d/httpd restart (centos 6的操作) 或 systemctl restart httpd (centos 7的操作)

进程模块
StartServers 8 初始建立的进程数(1个父进程,8个工作进程)
MinSpareServers 5 最小空闲的进程数
MaxSpareServers 20 最大空闲的进程数
ServerLimit 256 服务器最大并发连接限制(默认256)
MaxClients 256 服务器最大并发访问量
MaxRequestsPerChild 4000 每个子进程在其生命周期内允许响应的最大请求数,达到进程会被杀死,如果为0则用不结束,一个程序结束后

httpd线程查询
[root@node11 ~]# ps -ef | grep httpd

apache虚拟主机

apache虚拟主机功能:在一台apache网站服务器发布多个网站站点。
网站虚拟主机三种技术:
1.基于ip地址 每个网站有一个ip地址
2.基于端口 所有网站仅用一个ip,端口不一样
3.基于主机名(域名) 所有网站仅用一个ip,但是主机名称不一样

最常用的是基于主机名,基于ip地址不常用,因为申请ip需要资金

配置apache实现虚拟主机
基于ip的虚拟主机:
思路: 1.给服务器的网卡设置多个ip地址。
             2.创建网站主页目录及index.html主页文件。
             3.在httpd服务器软件的/etc/httpd/conf.d目录中创建虚拟主机的配置文件,给每个ip地址绑定一个网站。
             4.访问测试:访问不同的ip地址,得到不同网站页面。

实施参考:
1.给服务器的网卡设置多个ip地址。(临时设置多个ip,重启network服务是时ip会丢失)
ifconfig ens33:1 192.168.11.21/24 up
ifconfig ens33:2 192.168.11.22/24 up
ifconfig ens33:3 192.168.11.23/24 up
ip a 或 ifconfig

2.创建网站主页目录及index.html主页文件。
mkdir -pv /baidu/{www,map,music}
echo www.baidu.com >/baidu/www/index.html
echo map .baidu.com > /baidu/map/index.html
echo music.baidu.com > /baidu/music/index.html

3.在httpd服务器软件的/etc/httpd/conf.d目录中创建虚拟主机的配置文件,给每个ip地址绑定一个网站。
cd /etc/httpd/conf.d(子配置文件)
ls
rpm -ql httpd | grep vhosts查httpd软件的所有文件名列表,但匹配vhosts关键词的文件
cat /usr/share/doc/httpd-2.4.6/httpd-vhosts.conf
tail /usr/share/doc/httpd-2.4.6/httpd-vhosts.conf > /etc/httpd/conf.d/baidu.conf(创建baidu.conf配置文件)
-----基于ip的虚拟主机
vim /etc/httpd/conf.d/baidu.conf 修改后的内容如下

   指定虚拟主机的ip号和端口号
ServerAdmin 123@qq.com   服务器管理员邮箱
DocumentRoot "/baidu/www/"  网站主页根目录
ServerName www.baidu.com  网站的域名
ErrorLog "/var/log/www.baidu.com-error_log"
CustomLog "/var/log/httpd/www.baidu.com-access_log" common

目录设置 在/etc/httd/conf/httpd.conf可以找到源代码
AllowOverride None

Allow open access:

Require all granted  需要所有授权,即允许任何人访问

ServerAdmin 123@qq.com
DocumentRoot "/baidu/map/"
ServerName www.map.com
ErrorLog "/var/log/www.map.com-error_log"
CustomLog "/var/log/httpd/www.map.com-access_log" common

AllowOverride None

Allow open access:

Require all granted

4.访问测试:访问不同的ip地址,得到不同的页面。
systemctl restart httpd
curl 192.168.11.21 结果是www.baidu.com
curl 192.168.11.22 结果是map.baidu.com

----基于端口的虚拟主机
vim /etc/httpd/conf.d/baidu.conf修改内容如下

 Listen 81   启用81端口的监听

Listen 82 启用82端口的监听
ip和下面的ip相同 但端口不同
ServerAdmin 123@qq.com
DocumentRoot "/baidu/www/"
ServerName www.baidu.com
ErrorLog "/var/log/www.baidu.com-error_log"
CustomLog "/var/log/httpd/www.baidu.com-access_log" common

AllowOverride None

Allow open access:

Require all granted

ServerAdmin 123@qq.com
DocumentRoot "/baidu/map/"
ServerName www.map.com
ErrorLog "/var/log/www.map.com-error_log"
CustomLog "/var/log/httpd/www.map.com-access_log" common

AllowOverride None

Allow open access:

Require all granted

访问测试:访问相同ip的不同端口,得到不同网页界面
systemctl restart httpd
curl 192.168.11.21:81 输出结果是www.baidu.com
curl 192.168.11.21:82 输出结果是map.baidu.com


基于域名的虚拟主机:

Listen 81
Listen 82

ServerAdmin 123@qq.com
DocumentRoot "/baidu/www/"
ServerName www.baidu.com
ErrorLog "/var/log/www.baidu.com-error_log"
CustomLog "/var/log/httpd/www.baidu.com-access_log" common

AllowOverride None

Allow open access:

Require all granted

ServerAdmin 123@qq.com
DocumentRoot "/baidu/map/"
ServerName www.map.com
ErrorLog "/var/log/www.map.com-error_log"
CustomLog "/var/log/httpd/www.map.com-access_log" common

AllowOverride None

Allow open access:

Require all granted

并改掉 vim /etc/hosts
加入这一行192.168.11.21 www.baidu.com map.baidu.com
systemctl restart httpd
curl www.baidu.com 输出结果为www.baidu.com
curl map.baidu.com 输出结果为map.baidu.com

相关TAG标签
上一篇:网站优化之如何正视SEO
下一篇:OpenStack实践之CloudInit+ConfigDrive定制实例
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站