一:HTTP协议

   超文本传输协议 (HTTP-Hypertext transfer protocol) 是一种详细规定了浏览器和万维网服务器之间互相通信的规则,传送协议。是一个标准的C/S架构,无状态协议(每次连接都需要三次握手四次断开)默认监听在TCP的80端口,传输协议文本为HTML。HTTP协议版本号0.9:简单的文本传输协议,1.0:支持图片,语音,视频,等多种格式文件传输;HTTP1.1支持持久连接 关于HTTP协议可参考博文http://slayer.blog.51cto.com/4845839/1665255

二:HTTPD

   httpd是Apache服务进程名称.它具有众多的功能特性

丰富用户认证. 支持基本认证和摘要认证.
支持CGI: 原生支持perl CGI
支持虚拟主机:  基于端口, IP , 主机名.
反向代理,:  支持负载均衡的效果.
支持用户站点.
支持路径别名.
支持第三方模块高度模块化: core + module
DSO:
MPM: 多到处理模块prefork: 预先生成子进程.select(), 并发能力上线为1024work: 一个线程响应一个进程. 每个进程生成多个线程.event: 基于事件的响应方式, 一个线程响应N个请求.event-driven: 事件驱动.

 三:web服务器搭建

基于HTTP协议的web服务器有Apache,今天的服务器搭建配置就是基于Apache2.2版本。

1)准备好yum源,进行yum install  httpd安装。

2) 编辑主配置文件vim /etc/httpd/conf/httpd.conf

ServerTokens OS
ServerRoot "/etc/httpd"         服务器运行目录
PidFile run/httpd.pid              守护进程都有一个守护文件
Timeout 60                            KeepAlive Off                       是否启用持久连接  (有利也有弊 , 有利是不用重复三次握手四次断开, 不利是占用空间.)
MaxKeepAliveRequests 100 使用持久连接最大的请求个数
KeepAliveTimeout 15            持久连接时间上的限定<IfModule prefork.c>               StartServers         8           刚启动时启动几个进程MinSpareServers      5      最少空闲进程.  任何时刻都会有5个进程是空闲的.MaxSpareServers    20     最大空闲进程.ServerLimit        256         对多server个数MaxClients        256         最多clients 个数.MaxRequestsPerChild 4000   一个进程在一个生命周期内最多处理多少次的用户请求.
</IfModule> <IfModule worker.c> StartServers 4 MaxClients 300           所允许最大用户并发数 MinSpareThreads 25   最少空闲线程数MaxSpareThreads 75   最多空闲线程数ThreadsPerChild 25     每个进程最多启动线程数.MaxRequestsPerChild 0    不限定
</IfModule> Listen 80    监听的端口  0.0.0.0:80
Listen 8080    可以有多个Listen  修改后需要重启服务LoadModule auth_basic_module modules/mod_auth_basic.so   指定装载的模块.
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authn_alias_module modules/mod_authn_alias.so
LoadModule authn_anon_module modules/mod_authn_anon.so
LoadModule authn_dbm_module modules/mod_authn_dbm.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule authz_owner_module modules/mod_authz_owner.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_dbm_module modules/mod_authz_dbm.so
LoadModule authz_default_module modules/mod_authz_default.so
LoadModule ldap_module modules/mod_ldap.so
LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
LoadModule include_module modules/mod_include.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule logio_module modules/mod_logio.so
LoadModule env_module modules/mod_env.so
LoadModule ext_filter_module modules/mod_ext_filter.so
LoadModule mime_magic_module modules/mod_mime_magic.so
LoadModule expires_module modules/mod_expires.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
LoadModule usertrack_module modules/mod_usertrack.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule mime_module modules/mod_mime.so
LoadModule dav_module modules/mod_dav.so
LoadModule status_module modules/mod_status.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule info_module modules/mod_info.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule dir_module modules/mod_dir.so
LoadModule actions_module modules/mod_actions.so
LoadModule speling_module modules/mod_speling.so
LoadModule userdir_module modules/mod_userdir.so
LoadModule alias_module modules/mod_alias.so
LoadModule substitute_module modules/mod_substitute.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule cache_module modules/mod_cache.so
LoadModule suexec_module modules/mod_suexec.so
LoadModule disk_cache_module modules/mod_disk_cache.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule version_module modules/mod_version.so Include conf.d/*.conf User apache
Group apache ServerAdmin root@localhost       出错故障显示的邮箱地址.
UseCanonicalName Off
DocumentRoot "/var/www/html"   指定站点根目录 <Directory />                                站点路径访问控制  根Options FollowSymLinks           AllowOverride None
</Directory> <Directory "/var/www/html"> Options Indexes FollowSymLinks    没有主页时把网站内容以列表形式呈现给用户.可以用来下载.   followsymlinks 跟踪符号连接.不起用前面添加-AllowOverride None   支持在.htaccess   Order allow,deny  基于IP做访问控制.    允许可通过的,拒绝所有.Allow from all    允许所有访问   Allow from 172.16.0.0/16  .  只允许这个网段才可以访问.
</Directory> <IfModule mod_userdir.c>
#
# UserDir is disabled by default since it can confirm the presence
# of a username on the system (depending on home directory
# permissions).
#
UserDir disabled
#
# To enable requests to /~user/ to serve the user's public_html
# directory, remove the "UserDir disabled" line above, and uncomment
# the following line instead:
#
#UserDir public_html </IfModule> DirectoryIndex index.html index.html.var    默认主页面.AccessFileName .htaccess <Files ~ "^\.ht"> Order allow,deny Deny from all Satisfy All </Files> TypesConfig /etc/mime.types
DefaultType text/plain
<IfModule mod_mime_magic.c>
MIMEMagicFile conf/magic
</IfModule> HostnameLookups Off ErrorLog logs/error_log
LogLevel warn    日志警告级别
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent CustomLog logs/access_log combined    #选择的是combined 日志记录模式ServerSignature On Alias /icons/ "/var/www/icons/"     访问映射的路径  跟根路径没有关系 配置此处后,如果在跟下也同样创建一个目录.创建的目录无效.<Directory "/var/www/icons"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order allow,deny Allow from all
</Directory> <IfModule mod_dav_fs.c> # Location of the WebDAV lock database. DAVLockDB /var/lib/dav/lockdb
</IfModule> ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"   指定cgi-bin路径<Directory "/var/www/cgi-bin"> AllowOverride None Options None Order allow,deny Allow from all
</Directory> IndexOptions FancyIndexing VersionSort NameWidth=* HTMLTable Charset=UTF-8
AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
AddIconByType (TXT,/icons/text.gif) text/*
AddIconByType (IMG,/icons/p_w_picpath2.gif) p_w_picpath/*
AddIconByType (SND,/icons/sound2.gif) audio/*
AddIconByType (VID,/icons/movie.gif) video/*
AddIcon /icons/binary.gif .bin .exe
AddIcon /icons/binhex.gif .hqx
AddIcon /icons/tar.gif .tar
AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
AddIcon /icons/a.gif .ps .ai .eps
AddIcon /icons/layout.gif .html .shtml .htm .pdf
AddIcon /icons/text.gif .txt
AddIcon /icons/c.gif .c
AddIcon /icons/p.gif .pl .py
AddIcon /icons/f.gif .for
AddIcon /icons/dvi.gif .dvi
AddIcon /icons/uuencoded.gif .uu
AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
AddIcon /icons/tex.gif .tex
AddIcon /icons/bomb.gif core
AddIcon /icons/back.gif ..
AddIcon /icons/hand.right.gif README
AddIcon /icons/folder.gif ^^DIRECTORY^^
AddIcon /icons/blank.gif ^^BLANKICON^^
DefaultIcon /icons/unknown.gif
ReadmeName README.html
HeaderName HEADER.html
AddLanguage cs .cz .cs
AddLanguage da .dk
AddLanguage de .de
AddLanguage el .el
AddLanguage en .en
AddLanguage eo .eo
AddLanguage es .es
AddLanguage et .et
AddLanguage fr .fr
AddLanguage he .he
AddLanguage hr .hr
AddLanguage it .it
AddLanguage ja .ja
AddLanguage ko .ko
AddLanguage ltz .ltz
AddLanguage nl .nl
AddLanguage nn .nn
AddLanguage no .no
AddLanguage pl .po
AddLanguage pt .pt
AddLanguage pt-BR .pt-br
AddLanguage ru .ru
AddLanguage sv .sv
AddLanguage zh-CN .zh-cn
AddLanguage zh-TW .zh-tw
ForceLanguagePriority Prefer Fallback AddDefaultCharset UTF-8  默认编码格式AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl .crl
AddHandler type-map var
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
Alias /error/ "/var/www/error/" <IfModule mod_negotiation.c>
<IfModule mod_include.c> <Directory "/var/www/error"> AllowOverride None Options IncludesNoExec AddOutputFilter Includes html AddHandler type-map var Order allow,deny Allow from all LanguagePriority en es de fr ForceLanguagePriority Prefer Fallback
</Directory>
</IfModule>
</IfModule> BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
BrowserMatch "RealPlayer 4\.0" force-response-1.0
BrowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0
BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully
BrowserMatch "MS FrontPage" redirect-carefully
BrowserMatch "^WebDrive" redirect-carefully
BrowserMatch "^WebDAVFS/1.[0123]" redirect-carefully
BrowserMatch "^gnome-vfs/1.0" redirect-carefully
BrowserMatch "^XML Spy" redirect-carefully
BrowserMatch "^Dreamweaver-WebDAV-SCM1" redirect-carefully

3)如果想要修默认主页面文件存放位置编辑下面的documentroot选项就可以了。

DocumentRoot "/var/www/html"

4)查看默认主页的命名

DirectoryIndex index.html
所以在/var/www/html文件夹下创建index.html文件

5)检查HTTP配置文件是否有语法错误

httpd -t

6)打开浏览器测试一下吧。


 三:基于用户名做访问控制

    1)在主配置文件内写入如下配置文件信息(305行处)

      <directory "/var/www/html/admin">options none    #没有任何选项allowoverride authconfig #是否允许否改authtype basic #认证类型authname "admin area" #认证名称authuserfile /etc/httpd/conf/.htpasswd #认证时使用的文本文件require valid-user #允许哪些用户登录. valid-user:所有用户都可认证.<directory>

2)在/etc/httpd/conf/文件夹下创建.htpasswd文件

第一次创建时用htpasswd -c -m  /etc/var/httpd/conf/.htpassed [用户名] 。
第二次创建时不需要在加入-c选项。参数选择-D  :删除用户-c : 如果文件不存在则进行创建-m : 以MD5方式编码存储用户密码信息.

创建后该文件内的用户名是明文的账号密码是加密的.

3)重启一下httpd服务:service httpd restart

4)打开浏览器测试下服务是否启用

5)输入密码成功访问

6)基于组名进行认证

   <directory "/var/www/html/admin">options none    #没有任何选项allowoverride authconfig #是否允许否改authtype basic #认证类型authname "admin area" #认证名称authuserfile /etc/httpd/conf/.htpasswd #认证时使用的文本文件authuserfile /etc/httpd/conf/.htgroup  #认证的组名require group test #允许哪些组可以认证<directory>编辑.htgrouptest: tom blair   #如此格式

  

四:虚拟主机

  虚拟主机:在web服务器内创建多个虚拟主机,停供不同的站点进行访问。

要实现虚拟主机可以通过以下方式实现

 有基于端口的虚拟主机;有基于IP的配置主机;有基于主机名的虚拟主机。<VirtualHost IP:PORT>    IP:PORT   基于IP:基于端口ServerName       主机名DocumentAlias    根目录ServerAlias       ErrorLog         错误日志CustomLog</VirtualHost>

1)在创建虚拟主机之前要先确定把真实主机先注销掉,虚拟主机和真实主机不能同时存在。

#   DocumentRoot "/var/www/html"      注销

2)基于端口:的虚拟主机:本次以80端口和8080端口为例。在配置文件内增加监听端口信息。

Listen 80
Listen 8080       端口不同

在主配置文件下添加虚拟主机配置信息。(DNS配置请参考前面文章或修改访问主机的host文)

测试能否访问

3)基于IP地址:为服务器添加新的IP信息

修改主配置文件的虚拟主机配置信息

测试能否访问

4)基于主机名称:基于主机名称的虚拟主机首先要打开虚拟主机的namevirtualhost文件

修改主配置文件的虚拟主机信息

测试能否访问


五:https安全连接

基于https安全连接能够让信息在传输过程中进行加密,保障信息传输的安全性,由于传输的信息要先经过加密才能传输,所以会降低传输的效率。

1)由于https安全要基于mod_ssl模块,所以要先确定此模块安装完成没有。

yum install mod_sslrpm -ql mod_ssl/etc/httpd/conf.d/ssl.conf
/usr/lib64/httpd/modules/mod_ssl.so
/var/cache/mod_ssl
/var/cache/mod_ssl/scache.dir
/var/cache/mod_ssl/scache.pag
/var/cache/mod_ssl/scache.sem查看下主配置文件
LoadModule ssl_module modules/mod_ssl.so   加载的模块名
Listen 443  监听的端口
SSLPassPhraseDialog  builtin
SSLSessionCache         shmcb:/var/cache/mod_ssl/scache(512000)  缓存信息
SSLSessionCacheTimeout  300   超时时长
SSLMutex default
SSLRandomSeed startup file:/dev/urandom  256
SSLRandomSeed connect builtin
SSLCryptoDevice builtin<VirtualHost _default_:443>ErrorLog logs/ssl_error_log   日志记录TransferLog logs/ssl_access_logLogLevel warnSSLEngine on     是否启用sslSSLProtocol all -SSLv2  SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOWSSLCertificateFile /etc/pki/tls/certs/localhost.crt      存储SSL证书文件的路径(需根据实际情况修改)SSLCertificateKeyFile /etc/pki/tls/private/localhost.key 存储SSL的密钥路径(需根据时间情况修改)<Files ~ "\.(cgi|shtml|phtml|php3?)$">SSLOptions +StdEnvVars
</Files><Directory "/var/www/cgi-bin">SSLOptions +StdEnvVars
</Directory>SetEnvIf User-Agent ".*MSIE.*" \nokeepalive ssl-unclean-shutdown \downgrade-1.0 force-response-1.0CustomLog logs/ssl_request_log \"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>

2)为服务器端生成私钥;并为其停供证书(请参考前面的openssl博文内容)http://slayer.blog.51cto.com/4845839/1534131

3)配置https的主配置文件vim /etc/httpd/conf.d/ssl.conf

4) 修改配置文件的密钥及证书信息

5)把CA的公钥导入浏览器中

6)进行访问测试

7)通过命令行进行测试

# openssl s_client -connect IP:PORT -CAfile /path/to/ca_certificate

六:httpd 程序自带的工具介绍

httpd:

-t  :测试配置文件

-l  :列出静态模块

-D  DUMP_MODULES 理出DSO模块   http -D  DUMP_MODULES  查看加载的模块

-M:

-D DUMP_VHOSTS:列出虚拟主机

htpasswd:为基于文件的basic认证创建和更新用户账号信息

apachectl: 脚本,  httpd服务控制工具

ab:  httpd 的基准性能测试工具

apxs: 让apache可以扩展使用第三方模块的工具.

htcacheclean: 磁盘缓存清理工具.

httxt2dbm: 为rewrite map创建格式文件.

rotatelogs: 不关闭httpd而切换其使用日志文件工具.平滑实现日志切割

suexec: user apache ; group apache

用ab工具做基准性能功能测试.

-c   #: 模拟并发多少的请求

-n   #: 总的请求数.

ab -c 2000 -n 10000  #每次请求2000个总共发出10000个请求.

突然发出这么大的请求可能主机由于内部的限定的响应进程数不能够完成,此时需要调整内部响应进程数的限制.

资源限定分为下面两种.

软限定:  可临时超出一定时长的上线

硬限定:  绝对不可能超出的上线.

ulimit  可以临时调整打开的限制进程数.

-n: 能同时打开的文件数

-u: 能同时启动的进程数

要想永久修改次限定的值需要修配置改文件,/etc/security/limits.conf  或者 /etc/security/limits.d/*.conf

转载于:https://blog.51cto.com/slayer/1538177

Linux之web服务相关推荐

  1. linux的web服务

    WEB服务介绍 Web Service是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML标准来描述.发布.发现.协调和配置这些应用程序,用于开发分布式的交互操作的应 ...

  2. linux搭建web服务

    鹅鹅根据相关要求搭建 临时关闭防火墙和selinux [root@localhost etc]# systemctl stop firewalld [root@localhost etc]# sete ...

  3. Linux下Web服务器架设攻略

    Linux下Web服务器架设攻略 [收藏此页] [打印] [推荐] [挑错] 作者:小云  2004-12-23    内容导航: 概述 [IT168 专稿]今天我们来看看如何将Web服务器架在Lin ...

  4. 【LINUX】——linux如何使用Python创建一个web服务

    问:linux如何使用Python创建一个web服务? 答:一句话,Python! 一句代码: /usr/local/bin/python -m SimpleHTTPServer 8686 > ...

  5. 空服务器安装linux,debian服务器linux服务器web建站搭建linux服务器之Debian安装

    debian服务器linux服务器web建站搭建linux服务器之Debian安装 原文来自i火吧 大家都知道linux的发行版本很多,有centos啊,debian啊,ubuntu等,下面我就用de ...

  6. Linux集群服务知识点总结及通过案例介绍如何实现高性能web服务

    转自:http://guodayong.blog.51cto.com/263451/1201101 一:集群相关概念及知识点介绍: LVS(Linux Virtual System) 本项目在1998 ...

  7. linux 怎么配置apache,在Linux下配置Apache Web服务

    <在Linux下配置Apache Web服务>由会员分享,可在线阅读,更多相关<在Linux下配置Apache Web服务(10页珍藏版)>请在人人文库网上搜索. 1.在Lin ...

  8. Linux实战教学笔记37:企业级Nginx Web服务优化实战(上)

    一,Nginx基本安全优化 1.1 调整参数隐藏Nginx软件版本号信息 一般来说,软件的漏洞都和版本有关,这个很像汽车的缺陷,同一批次的要有问题就都有问题,别的批次可能就都是好的.因此,我们应尽量隐 ...

  9. Linux之apache服务搭建以及浅析web安全

    WEB服务器的架设,在linux有一个很著名的架构叫lamp:linux+apache+mysql+php,就知道apache的分量了.   在搭建apache服务钱需要做DNS服务器 DNS的搭建h ...

最新文章

  1. python event多线程回调
  2. 几何视角看线性方程组解的情况
  3. pcb外观维修_PCB电路板维修的一些常用技法
  4. django如何给上传的图片重命名(给上传文件重命名)
  5. 32位机器下面各类型的取值范围(sizeof值)
  6. 桥牌笔记:挤牌的条件之一,调整赢墩到只差一墩
  7. 农场游戏开发记录十二
  8. nRF52840 dongle BLE sniffer
  9. SAP License:实例讲解SAP与金税接口
  10. 【矢量图】PyEcharts导出图片并矢量化
  11. 最优秀的开源库之GPUImage
  12. 【图解】共模干扰,差模干扰
  13. ruby 读取文本_使用Ruby进行文本处理
  14. JavaWeb学习(第一天)-1-HTML部分
  15. 用html语言编写勾股定理,HTML5 勾股定理动画演示
  16. Linux如何卸载slurm,在Ubuntu 16.04桌面上安装/模拟SLURM:slurmd无法启动
  17. 基于SpringBoot的AOP记录日志
  18. 低功耗深度休眠后无法唤醒、烧录程序,怎么办?(华大半导体HC32L136)
  19. 创建账户类Account
  20. C语言复制char*

热门文章

  1. 解决Mac Chrome打开HTTPS证书错误问题
  2. deepin安装卡在deepin标志界面解决方案
  3. iOS VideoToolBox decoder解码失败(-12909和-12911)问题解决
  4. JavaScript将焦点设置为HTML表单元素
  5. 如何在函数式编程中存在时间函数?
  6. AssemblyVersion,AssemblyFileVersion和AssemblyInformationalVersion之间有什么区别?
  7. 静态方法和类方法之间的区别
  8. Win10电脑死机怎么办
  9. word2016点击关闭后卡死问题
  10. python 保留顺序去重_Python入门很简单,只要掌握3456点