搜索
首页运维linux运维HTTP服务搭建实例详解

HTTP服务搭建实例详解

Jun 27, 2017 am 10:06 AM
http搭建服务

一、简介
1、认识
加密网页(https): tcp:443      明文网页(http): tcp:80
survey.netcraft.net         --这个网站上可以查到最新的网站服务器的使用率
超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法
2、Apache
Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一,其特点如下:
1、支持最新的HTTP/1.1通信协议
2、拥有简单而强有力的基于文件的配置过程
3、支持通用网关接口
4、支持基于IP和基于域名的虚拟主机
5、支持多种方式的HTTP认证
6、集成Perl处理模块
7、集成代理服务器模块
8、支持实时监视服务器状态和定制服务器日志
9、支持服务器端包含指令(SSI)
10、支持安全Socket层(SSL)
11、提供用户会话过程的跟踪
12、支持FastCGI
13、通过第三方模块可以支持JavaServlets
3、安装:
www.apache.org --apache 官网
# yum install httpd* --安装httpd服务
# httpd -t --检查配置文件正确性
# rm -rf /etc/httpd/conf.d/welcome.conf --删除欢迎界面;因为安装了 httpd-manual ,故可以访问/ServerIp/manual
 
4、运行于两种模式:prefork,worker
prefork模式:
prefork是Unix平台上的默认(缺省)MPM,使用多个子进程,每个子进程只有一个线程。每个进程在某个确定的时间只能维持一个连接,效率高,但内存占用量比较大
这个多路处理模块(MPM)实现了一个非线程型的、预派生的web服务器,它的工作方式类似于Apache 1.3。它适合于没有线程安全库,需要避免线程兼容性问题的系统。它是要求将每个请求相互独立的情况下最好的MPM,这样若一个请求出现问题就不会影响到其他请求。
worker模式:
worker使用多个子进程,每个子进程有多个线程,每个线程在某个确定的时间只能维持一个连接,内存占用量比较小,适合高流量的http服务器。缺点是假如一个线程崩溃,整个进程就会连同其任何线程一起”死掉”,所以要保证一个程式在运行时必须被系统识别为”每个线程都是安全的”。
此多路处理模块(MPM)使网络服务器支持混合的多线程多进程。由于使用线程来处理请求,所以可以处理海量请求,而系统资源的开销小于基于进程的MPM。但是它也使用了多进程,每个进程又有多个线程,以获得基于进程的MPM的稳定性。
# httpd -l --查看运行模式,默认为 prefork.c
# mv -v /usr/sbin/httpd{,.prefork} --备份prefork模式
# mv -v /usr/sbin/httpd{.worker,} --使用worker模式
 
二、配置文件详解
1、全局环境参数
ServerTokens OS --当服务器响应主机头(header)信息时显示Apache的版本和操作系统名称
ServerRoot "/etc/httpd" --服务器的基础目录,一般来说它将包含conf/和logs/子目录,其它配置文件的相对路径即基于此目录。
PidFile run/httpd.pid --第一个httpd进程(所有其他进程的父进程)的进程号文件位置。
Timeout 60 --若60秒后没有收到或送出任何数据就切断该连接
KeepAlive Off --默认不使用保持连接的功能,即客户一次请求连接只能响应一个文件,建议允许
MaxKeepAliveRequests 100 --在保持连接功能时,设置客户一次请求连接能响应文件的最大上限,超过就断开
KeepAliveTimeout 15 --在使用保持连接功能时,两个相邻的连接的时间间隔超过15秒,就切断连接
.................
Listen 80 --服务器监听的端口号;监听端口可以多开
Include conf.d/*.conf --将/etc/httpd/conf.d目录下所有以conf结尾的配置文件包含进来
User apache --提供服务的子进程的用户
Group apache --提供服务的子进程的用户组
ServerAdmin root@george.com --管理员的邮件地址
ServerName mail.george.com:80 --主站点名称(网站的主机名)
UseCanonicalName Off
DocumentRoot "/var/www/html" --设置Web文档根目录;但是可以使用符号链接和别名来指向到其他的位置;如不是绝对路径,则被假定为是相对于ServerRoot的路径
2、路径控制参数
DirectoryIndex index.html index.html.var --网站默认网页文件名,左边优先
AccessFileName .htaccess --指定保护目录配置文件的名称
---------------------------------------------------------------------------------------------------------
--用于封装一组指令,使之仅对某个目录及其子目录生效。针对文件系统上的一个目录
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
Deny from 192.168.133.22
Directory-path --可以是一个目录的完整路径,或是包含了Unix shell匹配语法的通配符字符串。在通配符字符串中,"?"匹配任何单个的字符,"*"匹配任何字符序列。也可以使用"[]"来确定字符范围。在"~" 字符之后也可以使用正则表达式
Options --这个指令的值可以是“None”,“All”,或者下列选项的任意组合:Indexes(前面有'-',则关闭网站列目录的功能,无则反之);Includes;FollowSymLinks;SymLinksifOwnerMatch;ExecCGI;MultiViews
AllowOverride --控制那些被放置在.htaccess文件中的指令。它可以是All,None(看不到任何.htaccess里的任何配置),或者下列指令的组合:Options;FileInfo;AuthConfig;Limit
Order,Allow,Deny --控制谁可以获得服务。oreder的参数最终以右边的为准,顺序可以逆转
---------------------------------------------------------------------------------------------------------
--针对指定的文件可以是是在某个Directory下,也可以全局的
Order deny,allow
Allow from all
---------------------------------------------------------------------------------------------------------
-- 允许使用URL"http://servername/server-status"的形式查看服务器状态(或是信息);Location主要是控制URL
SetHandler server-status(server-info)
Order deny,allow
Allow from all
---------------------------------------------------------------------------------------------------------
Alias /url-path /filesystem-path --把URL映射到文件系统路径;(也可以自己在系统上使用 ln -s 软链接实现哦)
3、目录访问进行用户密码控制(非系统用户)
--理论也可以在Location,file
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
authname "Authenticate yourself"   --浏览器打开该url的提示语
authtype basic
authuserfile /etc/httpd/userpasswd   --用户&密码文件位置
require valid-user
# htpasswd -c /etc/httpd/userpasswd frank --创建一个允许访问用户
# htpasswd /etc/httpd/userpasswd george --再创建一个,记得 '-c' 参数,是为了创建该密码文件,只能创建第一个用户时使用。
注意:如果一个目录使用密码控制访问,那么在通过网页浏览器列出该目录的父目录时,看不到该目录,也就是说,该目录被隐藏了。但是可以通过直接输入url来访问(即使你有账户和密码也一样)。
4、基于域名的虚拟主机
NameVirtualHost *:80 --添加这条配置,将80端口设置为虚拟主机端口
--第一个虚拟主机
ServerName www.george.com
DocumentRoot /var/www/html/
..................
 
--第二个虚拟主机
ServerName mail.george.com
DocumentRoot /var/www/cgi-bin/openwebmail/
ScriptAlias /mail /var/www/cgi-bin/openwebmail/openwebmail.pl
......................
   该实验的 SeverName 参数接IP地址的话,我们也可以做基于IP的虚拟主机
5、日志参数
ErrorLog logs/error_log --错误日志的存方位置
LogLevel warn --定义错误日志等级,include: debug, info, notice, warn, error, crit, alert, emerg.
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
..............
LogFormat "%{User-agent}i" agent --该四条是访问日志的缺省格式
CustomLog logs/access_log combined --使用 combined 访问日志格式
%h –客户端的ip地址或主机名
%l –The 这是由客户端 identd 判断的RFC 1413身份,输出中的符号 "-" 表示此处信息无效。
%u –由HTTP认证系统得到的访问该网页的客户名。有认证时才有效,输出中的符号 "-" 表示此处信息无效。
%t –服务器完成对请求的处理时的时间。
"%r" –引号中是客户发出的包含了许多有用信息的请求内容。
%>s –这个是服务器返回给客户端的状态码。
%b –最后这项是返回给客户端的不包括响应头的字节数。
"%{Referer}i" –此项指明了该请求是从被哪个网页提交过来的。
"%{User-Agent}i" –此项是客户浏览器提供的浏览器识别信息。
6、SSL加密配置
# yum install -y mod_ssl --安装加密模块
# vim /etc/httpd/conf.d/ssl.conf
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite DEFAULT:!EXP:!SSLv2:!DES:!IDEA:!SEED:+3DES
SSLCertificateFile /etc/pki/tls/certs/localhost.crt --配置公钥文件
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key --配置秘钥文件
SSLOptions +StdEnvVars
ServerName www.george.com
DocumentRoot /var/www/cgi-bin/openwebmail/
ScriptAlias /mail /var/www/cgi-bin/openwebmail/openwebmail.pl
SSLOptions +StdEnvVars
Options Indexes
order deny,allow
Allow from all
SetEnvIf User-Agent ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog logs/ssl_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
6.1、自己配置证书
# mkdir /etc/pki/test/
# cd /etc/pki/test
# openssl genrsa -out /etc/pki/test/test.key 1024 --秘钥
# openssl req -new -key test.key -out test.csr
Country Name (2 letter code) [XX]:cn
State or Province Name (full name) []:guangDong
Locality Name (eg, city) [Default City]:Shenzhen
Organization Name (eg, company) [Default Company Ltd]:IT
Organizational Unit Name (eg, section) []:maintenance
Common Name (eg, your name or your server's hostname) []:www.george.com
Email Address []:root@mail.george.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:123456
An optional company name []:Azt
# openssl req -x509 -days 365 -key test.key -in test.csr -out test.crt --公钥
# ls --然后将下列 test.crt && test.key 配置到 /etc/httpd/conf.d/ssl.conf 即可
test.crt test.csr test.key
6.2、测试自己配置的证书
但是我们自己创建的证书在浏览器中识别是不受信任的;证书状态也是“由于CA 根证书不在“受信任的根证书颁发机构”存储区中,所以它不受信任。”
      

    需要我们自己在浏览器中手动将我们自己创建的证书(test.crt)导入到“受信任的根证书颁发机构”&&“受信任的发布者”。以谷歌浏览器为列,步骤如下:

      

    接着,会再弹出几个对话框,我们点击“下一步”——“完成”——“是”。就 OK了。

  
此时在使用浏览器打开我们的网站,查看证书的状态“该证书没有问题”。

以上是HTTP服务搭建实例详解的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
Linux操作:利用维护模式Linux操作:利用维护模式Apr 19, 2025 am 12:08 AM

Linux的维护模式可以通过GRUB菜单进入,具体步骤为:1)在GRUB菜单中选择内核并按'e'编辑,2)在'linux'行末添加'single'或'1',3)按Ctrl X启动。维护模式提供了一个安全环境,适用于系统修复、重置密码和系统升级等任务。

Linux:如何进入恢复模式(和维护)Linux:如何进入恢复模式(和维护)Apr 18, 2025 am 12:05 AM

进入Linux恢复模式的步骤是:1.重启系统并按特定键进入GRUB菜单;2.选择带有(recoverymode)的选项;3.在恢复模式菜单中选择操作,如fsck或root。恢复模式允许你以单用户模式启动系统,进行文件系统检查和修复、编辑配置文件等操作,帮助解决系统问题。

Linux的基本要素:为初学者解释Linux的基本要素:为初学者解释Apr 17, 2025 am 12:08 AM

Linux的核心组件包括内核、文件系统、Shell和常用工具。1.内核管理硬件资源并提供基本服务。2.文件系统组织和存储数据。3.Shell是用户与系统交互的接口。4.常用工具帮助完成日常任务。

Linux:看看其基本结构Linux:看看其基本结构Apr 16, 2025 am 12:01 AM

Linux的基本结构包括内核、文件系统和Shell。1)内核管理硬件资源,使用uname-r查看版本。2)EXT4文件系统支持大文件和日志,使用mkfs.ext4创建。3)Shell如Bash提供命令行交互,使用ls-l列出文件。

Linux操作:系统管理和维护Linux操作:系统管理和维护Apr 15, 2025 am 12:10 AM

Linux系统管理和维护的关键步骤包括:1)掌握基础知识,如文件系统结构和用户管理;2)进行系统监控与资源管理,使用top、htop等工具;3)利用系统日志进行故障排查,借助journalctl等工具;4)编写自动化脚本和任务调度,使用cron工具;5)实施安全管理与防护,通过iptables配置防火墙;6)进行性能优化与最佳实践,调整内核参数和养成良好习惯。

了解Linux的维护模式:必需品了解Linux的维护模式:必需品Apr 14, 2025 am 12:04 AM

Linux维护模式通过在启动时添加init=/bin/bash或single参数进入。1.进入维护模式:编辑GRUB菜单,添加启动参数。2.重新挂载文件系统为读写模式:mount-oremount,rw/。3.修复文件系统:使用fsck命令,如fsck/dev/sda1。4.备份数据并谨慎操作,避免数据丢失。

Debian如何提升Hadoop数据处理速度Debian如何提升Hadoop数据处理速度Apr 13, 2025 am 11:54 AM

本文探讨如何在Debian系统上提升Hadoop数据处理效率。优化策略涵盖硬件升级、操作系统参数调整、Hadoop配置修改以及高效算法和工具的运用。一、硬件资源强化确保所有节点硬件配置一致,尤其关注CPU、内存和网络设备性能。选择高性能硬件组件对于提升整体处理速度至关重要。二、操作系统调优文件描述符和网络连接数:修改/etc/security/limits.conf文件,增加系统允许同时打开的文件描述符和网络连接数上限。JVM参数调整:在hadoop-env.sh文件中调整

Debian syslog如何学习Debian syslog如何学习Apr 13, 2025 am 11:51 AM

本指南将指导您学习如何在Debian系统中使用Syslog。Syslog是Linux系统中用于记录系统和应用程序日志消息的关键服务,它帮助管理员监控和分析系统活动,从而快速识别并解决问题。一、Syslog基础知识Syslog的核心功能包括:集中收集和管理日志消息;支持多种日志输出格式和目标位置(例如文件或网络);提供实时日志查看和过滤功能。二、安装和配置Syslog(使用Rsyslog)Debian系统默认使用Rsyslog。您可以通过以下命令安装:sudoaptupdatesud

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热工具

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。