GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing github.com — fullstackpython.github.com/web-servers.html at gh-pages · xidianwlc/fullstackpython.github.com Expand file tree/ Copy pathweb-servers.htmlMore file actions 295 lines (290 loc) · 14.7 KB / Copy pathweb-servers.htmlFile metadata and controls295 lines (290 loc) · 14.7 KB 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 <!DOCTYPE html> <html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="description" content="Full Stack Python explains each layer of the web application stack, from the server up through the rendering in a user's browser."> <meta name="author" content="Matt Makai"> <link rel="shortcut icon" href="theme/img/fsp-fav.png"> <title>Web Servers - Full Stack Python</title> <link href="theme/css/fsp.css" rel="stylesheet"> <!--[if lt IE 9]> <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script> <script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script> <![endif]--> <style> html, body { font-size: 18px; color: #222; background: #fefefe; } body { padding-top: 10px; } .footer { padding: 20px 0 30px 0; } a, a:hover {border-bottom: 1px dotted; color: #444;} a:hover {text-decoration: none; color: #000;} .logo-title a, .logo-title a:hover {font-size: 72px; font-weight: normal; letter-spacing: .04em; vertical-align: middle; margin-left: 5px; color: #000; text-decoration: none; border-bottom: none; font-family: "Helvetica Neue", sans-serif; line-height: .9em;} .logo-title a:hover {color: gray;} .logo-image {vertical-align: middle; border: none;} .logo-header-section {margin: 15px 0 15px 0;} a.list-group-item.active {background: #444; border: 1px solid #222;} a.list-group-item.active:hover {background: #444; border: 1px solid #222;} #sidebar {margin-top: 30px;} .select-next { min-height: 300px; } .choose-btn { font-size: 1.1em; margin: 10px 0 0 0; } .choose-next { border: 1px solid black; background-color: #444; margin-left: 25px; color: #ddd; } .choose-next a { color: #eee; } .btn-full {width: 100%; box-shadow: 1px 2px 1px #222;} p.under-btn {text-align: left; margin-top: 20px;} h3.panel-head {margin: 5px 0 0 0; font-size: 26px; color: #fff;} .smaller-item {font-size: .8em; padding: 5px 0 5px 10px;} @media (max-width: 1200px) { h3.panel-head {font-size: 22px;} } @media (max-width: 992px) { .choose-next { margin-left: 0px; } .select-next { min-height: 100px; } .smaller-item {font-size: 1em; padding: 15px 0 15px 10px;} } @media (max-width: 600px) { .logo-header-section { margin: 20px 32px 0 0; } } </style> <link href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet"> <script type="text/javascript"> var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-19910497-7']); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); </script> </head> <body> <a href="https://github.com/makaimc/fullstackpython.github.com" class="github"> <img style="position: absolute; top: 0; right: 0; border: 0;" src="http://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" alt="Fork me on GitHub" /> </a> <div class="container"> <div class="row"> <div class="col-md-12"> <div class="logo-header-section"> <a href="/" style="text-decoration: none; border: none;"><img src="theme/img/fsp-logo.png" height="52" width="52" class="logo-image" style="padding-top: 1px;"/></a> <span class="logo-title"><a href="/">Full Stack Python</a></span> </div> </div> </div> <div class="row"> <div class="col-md-8"> <h1>Web servers</h1> <p>Web servers respond to <a href="http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol">Hypertext Transfer Protocol</a> (HTTP) requests from clients and send back a response containing a status code and often content such as HTML, XML or JSON as well.</p> <h2>Why are web servers necessary?</h2> <p>Web servers are the ying to the web client's yang. The server and client speak the standardized language of the World Wide Web. This standard language is why an old Mozilla Netscape browser can still talk to a modern Apache or Nginx web server, even if it cannot properly render the page design like a modern web browser can. </p> <p>The basic language of the Web with the request and response cycle from client to server then server back to client remains the same as it was when the Web was invented by <a href="http://www.w3.org/People/Berners-Lee/">Tim Berners-Lee</a> at CERN in 1989. Modern browsers and web servers have simply extended the language of the Web to incorporate new standards.</p> <h2>Client requests</h2> <p>A client that sends a request to a web server is usually a browser such as Internet Explorer, Firefox, or Chrome, but it can also be a</p> <ul> <li>headless browser, commonly use for testing, such as <a href="http://phantomjs.org/">phantomjs</a></li> <li>commandline utility, for example <a href="https://www.gnu.org/software/wget/">wget</a> and <a href="http://curl.haxx.se/">curl</a></li> <li>text-based web browser such as <a href="http://lynx.browser.org/">Lynx</a></li> <li>web crawler. </li> </ul> <p>Web server process requests from the above clients. The result of the web server's processing is a <a href="https://developer.mozilla.org/en-US/docs/HTTP/Response_codes">response code</a> and commonly a content response. Some status codes, such as 204 (No content) and 403 (Forbidden), do not have content responses.</p> <p>In a simple case, the client will request a static asset such as a picture or JavaScript file. The file sits on the file system in a location the web server is authorized to access and the web server sends the file to the client with a 200 status code. If the client already requested the file and the file has not changed, the web server will pass back a 304 "Not modified" response indicating the client already has the latest version of that file.</p> <p><img src="theme/img/web-browser-server-requests.png" width="100%" class="technical-diagram" alt="Web server and web browser request-response cycle" /></p> <p>A web server sends files to a web browser based on the web browser's request. In the first request, the browser accessed the "www.fullstackpython.com" address and the server responded with the index.html HTML-formatted file. That HTML file contained references to other files, such as style.css and script.js that the browser then requested from the server.</p> <p>Sending static assets (such as CSS and JavaScript files) can eat up a large amount of bandwidth which is why using a Content Delivery Network (CDN) is important when possible (see the content delivery network section for a more detailed explanation).</p> <h2>Web server resources</h2> <ul> <li> <p><a href="http://www.w3.org/Protocols/rfc2616/rfc2616.html">HTTP/1.1 Specification</a></p> </li> <li> <p><a href="http://arstechnica.com/gadgets/2012/11/how-to-set-up-a-safe-and-secure-web-server/">How to set up a safe and secure Web server</a></p> </li> <li> <p><a href="http://library.linode.com/web-servers/apache/mod-wsgi/ubuntu-10.04-lucid">Apache and mod_wsgi on Ubuntu 10.04</a></p> </li> <li> <p><a href="http://articles.slicehost.com/nginx">Nginx web server tutorials</a></p> </li> <li> <p><a href="http://carrot.is/coding/nginx_introduction">Nginx for Developers: An Introduction</a></p> </li> <li> <p>An example of an <a href="http://tautt.com/best-nginx-configuration-for-security/">Nginx security configuration</a>.</p> </li> <li> <p>A reference with the full list of <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html">HTTP status codes</a> is provided by W3C.</p> </li> <li> <p>An optimization guide for "<a href="http://blog.zachorr.com/nginx-setup/">battle ready Nginx</a>."</p> </li> <li> <p><a href="http://arstechnica.com/business/2011/11/a-faster-web-server-ripping-out-apache-for-nginx/">A faster Web server: ripping out Apache for Nginx</a></p> </li> <li> <p><a href="http://ibuildings.nl/blog/2013/03/4-http-security-headers-you-should-always-be-using">4 HTTP Security Headers You Should Always Be Using</a></p> </li> </ul> <h3>What do you want to learn after setting up a web server?</h3> <div class="row"> <div class="col-md-4"> <div class="well select-next"> <a href="/wsgi-servers.html" class="btn btn-success btn-full"><i class="fa fa-play fa-inverse fa-2x"></i></a> <p class="under-btn"> Web servers only serve static files. How do I execute Python code? </p> </div> </div> <div class="col-md-4"> <div class="well select-next"> <a href="/application-dependencies.html" class="btn btn-success btn-full"><i class="fa fa-archive fa-inverse fa-2x"></i></a> <p class="under-btn"> How should I install Python libraries on the server? </p> </div> </div> <div class="col-md-4"> <div class="well select-next"> <a href="/platform-as-a-service.html" class="btn btn-success btn-full"><i class="fa fa-puzzle-piece fa-inverse fa-2x"></i></a> <p class="under-btn"> Forget servers. Tell me about the platform-as-a-service option. </p> </div> </div> </div> </div> <div class="col-md-offset-1 col-md-3" id="sidebar"> <div class="panel panel-success"> <div class="panel-heading"><h3 class="panel-head">Web Servers</h3></div> <div class="panel-body"> <a href="/">Full Stack Python</a> is an open source book explaining each layer of the Python web application stack along with the best Python resources from around the web. <hr/> <a href="http://twitter.com/mattmakai">Matt Makai</a> designed and wrote this site with assistance from community pull requests. If you're on GitHub you can <a href="https://github.com/makaimc">follow him</a> to see what daily changes are made or <a href="https://github.com/makaimc/fullstackpython.github.com">star the repository</a> for future reference. </div> </div> <div class="panel panel-success"> <div class="panel-heading"> <h3 class="panel-head">Table of Contents</h3> </div> <div class="list-group"> <a href="/introduction.html" class="list-group-item smaller-item ">Introduction</a> <a href="/bottle.html" class="list-group-item smaller-item ">Bottle</a> <a href="/deployment.html" class="list-group-item smaller-item ">Deployment</a> <a href="/other-web-frameworks.html" class="list-group-item smaller-item ">Other Web Frameworks</a> <a href="/servers.html" class="list-group-item smaller-item ">Servers</a> <a href="/web-frameworks.html" class="list-group-item smaller-item ">Web Frameworks</a> <a href="/django.html" class="list-group-item smaller-item ">Django</a> <a href="/operating-systems.html" class="list-group-item smaller-item ">Operating Systems</a> <a href="/flask.html" class="list-group-item smaller-item ">Flask</a> <a href="/web-servers.html" class="list-group-item smaller-item active">Web Servers</a> <a href="/platform-as-a-service.html" class="list-group-item smaller-item ">Platform-as-a-service</a> <a href="/databases.html" class="list-group-item smaller-item ">Databases</a> <a href="/wsgi-servers.html" class="list-group-item smaller-item ">WSGI Servers</a> <a href="/application-dependencies.html" class="list-group-item smaller-item ">Application Dependencies</a> <a href="/cascading-style-sheets.html" class="list-group-item smaller-item ">Cascading Style Sheets</a> <a href="/javascript.html" class="list-group-item smaller-item ">JavaScript</a> <a href="/static-content.html" class="list-group-item smaller-item ">Static Content</a> <a href="/source-control.html" class="list-group-item smaller-item ">Source Control</a> <a href="/caching.html" class="list-group-item smaller-item ">Caching</a> <a href="/task-queues.html" class="list-group-item smaller-item ">Task Queues</a> <a href="/api-integration.html" class="list-group-item smaller-item ">API Integration</a> <a href="/no-sql-datastore.html" class="list-group-item smaller-item ">NoSQL Data Stores</a> <a href="/web-application-security.html" class="list-group-item smaller-item ">Web Security</a> <a href="/logging.html" class="list-group-item smaller-item ">Logging</a> <a href="/monitoring.html" class="list-group-item smaller-item ">Monitoring</a> <a href="/configuration-management.html" class="list-group-item smaller-item ">Configuration Management</a> <a href="/web-analytics.html" class="list-group-item smaller-item ">Web Analytics</a> <a href="/best-python-resources.html" class="list-group-item smaller-item ">Best Python Resources</a> <a href="/about-author.html" class="list-group-item smaller-item ">About the Author</a> <a href="/change-log.html" class="list-group-item smaller-item ">Change Log</a> <a href="/future-directions.html" class="list-group-item smaller-item ">Future Directions</a> </div> </div> </div></div> <hr/> <div class="footer pull-right"> <a href="http://www.mattmakai.com/" class="underline">Matt Makai</a> 2014 </div> </div> <script src="http://code.jquery.com/jquery-2.1.0.min.js"></script> <script src="theme/js/bootstrap.min.js"></script> </body> </html> |
| You are visitor 01402520 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |