Skip to content

Commit 4fa8943

Browse files
committed
update web servers page
1 parent a5f5064 commit 4fa8943

File tree

2 files changed

+38
-23
lines changed

2 files changed

+38
-23
lines changed

content/pages/02-development-environments/16-application-dependencies.markdown

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -162,10 +162,6 @@ further clarification.
162162
[this article about the differences](https://lincolnloop.com/blog/fast-immutable-python-deployments/)
163163
and be sure to upgrade.
164164

165-
* [How to submit a package to PyPI](http://peterdowns.com/posts/first-time-with-pypi.html)
166-
is a short and sweet introduction that'll help you quickly get your first
167-
package on PyPI.
168-
169165

170166
## Open source app dependency projects
171167
* [Autoenv](https://github.com/kennethreitz/autoenv) is a tool for activating

content/pages/05-deployment/17-web-servers.markdown

Lines changed: 38 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,12 @@ and configurations.
4444
* [Caddy](/caddy.html) is a newcomer to the web server scene
4545
and is focused on serving the HTTP/2 protocol with HTTPS.
4646

47+
* [rwasa](https://2ton.com.au/rwasa/) is a newer web server written
48+
in Assembly with no external dependencies that tuned to be faster than Nginx.
49+
The benchmarks are worth taking a look at to see if this server could fit
50+
your needs if you need the fastest performance trading off for as of yet
51+
untested web server.
52+
4753

4854
## Client requests
4955
A client that sends a request to a web server is usually a browser such
@@ -86,37 +92,50 @@ large amount of bandwidth which is why using a Content Delivery Network
8692
possible.
8793

8894

89-
90-
## Web server resources
91-
* [HTTP/1.1 Specification](http://www.w3.org/Protocols/rfc2616/rfc2616.html)
92-
93-
* A reference with the full list of
94-
[HTTP status codes](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html)
95-
is provided by W3C.
95+
### Building web servers
96+
* [A Simple Web Server in less than 500 lines of code](http://aosabook.org/en/500L/a-simple-web-server.html)
97+
from the Architecture of Open Source book provides a great example
98+
with Python as the implementation language..
9699

97100
* If you're looking to learn about web servers by building one, here's
98101
[part one](http://ruslanspivak.com/lsbaws-part1/),
99102
[part two](http://ruslanspivak.com/lsbaws-part2/) and [part three](http://ruslanspivak.com/lsbaws-part3/)
100103
of a great tutorial that shows how to code a web server in Python.
101104

102-
* [rwasa](https://2ton.com.au/rwasa/) is a newly released web server written
103-
in Assembly with no external dependencies that tuned to be faster than Nginx.
104-
The benchmarks are worth taking a look at to see if this server could fit
105-
your needs if you need the fastest performance trading off for as of yet
106-
untested web server.
105+
* [Building a basic HTTP Server from scratch in Python](http://joaoventura.net/blog/2017/python-webserver/)
106+
([source code](https://gist.github.com/joaoventura/824cbb501b8585f7c61bd54fec42f08f)
107+
builds a very simple but insecure web server to show you how HTTP works.
108+
109+
110+
### Web server references
111+
* [HTTP/1.1](http://www.w3.org/Protocols/rfc2616/rfc2616.html)
112+
and [HTTP/2](https://tools.ietf.org/html/rfc7540) specifications are the
113+
source for how web servers implement the modern web.
114+
115+
* A reference with the full list of
116+
[HTTP status codes](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html)
117+
is provided by W3C.
118+
119+
* [Usage of web servers broken down by ranking](https://w3techs.com/technologies/cross/web_server/ranking)
120+
shows how popular [Apache](/apache-http-server.html), [Nginx](/nginx.html)
121+
and other websites are among the top million through the top 1,000 sites
122+
in the world.
123+
124+
* [Optimizing web servers for high throughput and low latency](https://blogs.dropbox.com/tech/2017/09/optimizing-web-servers-for-high-throughput-and-low-latency/)
125+
is a wonderful read that shows how detailed knowledge at every layer of
126+
the stack is necessary to optimize web server connections at scale.
107127

108128

109-
## Web servers learning checklist
129+
### Web servers learning checklist
110130
1. Choose a web server. [Nginx](http://nginx.org/en/) is often recommended
111131
although [Apache](http://httpd.apache.org/) is also a great choice.
112132

113-
1. Create an SSL certificate. For testing use a self-signed certificate
114-
and for a production app buy one from [Digicert](http://www.digicert.com/).
115-
Configure the web server to serve traffic over SSL. You'll need SSL for
116-
serving only HTTPS traffic and preventing security issues that occur with
117-
unencrypted user input.
133+
1. Create an SSL certificate via [Let's Encrypt](https://letsencrypt.org/).
134+
You will need SSL for serving HTTPS traffic and preventing myriad
135+
security issues that occur with unencrypted user input.
118136

119-
1. Configure the web server to serve up static files such as CSS, JavaScript
137+
1. Configure the web server to serve up static files such as
138+
[CSS](/cascading-style-sheets.html), [JavaScript](/javascript.html)
120139
and images.
121140

122141
1. Once you set up the [WSGI server](/wsgi-servers.html) you'll need to

0 commit comments

Comments
 (0)