mirror of
https://github.com/LCTT/TranslateProject.git
synced 2025-01-25 23:11:02 +08:00
20151020-2 选题
This commit is contained in:
parent
4907a620b9
commit
cbb89d26a8
@ -0,0 +1,199 @@
|
|||||||
|
18 Years of GNOME Design and Software Evolution: Step by Step
|
||||||
|
================================================================================
|
||||||
|
注:youtube 视频
|
||||||
|
<iframe width="660" height="371" src="https://www.youtube.com/embed/MtmcO5vRNFQ?feature=oembed" frameborder="0" allowfullscreen></iframe>
|
||||||
|
|
||||||
|
[GNOME][1] (GNU Object Model Environment) was started on August 15th 1997 by two Mexican programmers – Miguel de Icaza and Federico Mena. GNOME – Free Software project to develop a desktop environment and applications by volunteers and paid full-time developers. All of GNOME Desktop Environment is the open source software and support Linux, FreeBSD, OpenBSD and others.
|
||||||
|
|
||||||
|
Now we move to 1997 and see the first version of GNOME:
|
||||||
|
|
||||||
|
### GNOME 1 ###
|
||||||
|
|
||||||
|
![GNOME 1.0 - First major GNOME release](https://github.com/paulcarroty/Articles/raw/master/GNOME_History/1.0/gnome.png)
|
||||||
|
|
||||||
|
**GNOME 1.0** (1997) – First major GNOME release
|
||||||
|
|
||||||
|
![GNOME 1.2 Bongo](https://raw.githubusercontent.com/paulcarroty/Articles/master/GNOME_History/1.2/1361441938.or.86429.png)
|
||||||
|
|
||||||
|
**GNOME 1.2** “Bongo”, 2000
|
||||||
|
|
||||||
|
![GNOME 1.4 Tranquility](https://github.com/paulcarroty/Articles/raw/master/GNOME_History/1.4/1.png)
|
||||||
|
|
||||||
|
**GNOME 1.4** “Tranquility”, 2001
|
||||||
|
|
||||||
|
### GNOME 2 ###
|
||||||
|
|
||||||
|
![GNOME 2.0](https://github.com/paulcarroty/Articles/raw/master/GNOME_History/2.0/1.png)
|
||||||
|
|
||||||
|
**GNOME 2.0**, 2002
|
||||||
|
|
||||||
|
Major upgrade based on GTK+2. Introduction of the Human Interface Guidelines.
|
||||||
|
|
||||||
|
![GNOME 2.2](https://github.com/paulcarroty/Articles/raw/master/GNOME_History/2.2/GNOME_2.2_catala.png)
|
||||||
|
|
||||||
|
**GNOME 2.2**, 2003
|
||||||
|
|
||||||
|
Multimedia and file manager improvements.
|
||||||
|
|
||||||
|
![GNOME 2.4 Temujin](https://github.com/paulcarroty/Articles/raw/master/GNOME_History/2.4/gnome-desktop.png)
|
||||||
|
|
||||||
|
**GNOME 2.4** “Temujin”, 2003
|
||||||
|
|
||||||
|
First release of Epiphany Browser, accessibility support.
|
||||||
|
|
||||||
|
![GNOME 2.6](https://github.com/paulcarroty/Articles/raw/master/GNOME_History/2.6/Adam_Hooper.png)
|
||||||
|
|
||||||
|
**GNOME 2.6**, 2004
|
||||||
|
|
||||||
|
Nautilus changes to a spatial file manager, and a new GTK+ file dialog is introduced. A short-lived fork of GNOME, GoneME, is created as a response to the changes in this version.
|
||||||
|
|
||||||
|
![GNOME 2.8](https://github.com/paulcarroty/Articles/raw/master/GNOME_History/2.8/3.png)
|
||||||
|
|
||||||
|
**GNOME 2.8**, 2004
|
||||||
|
|
||||||
|
Improved removable device support, adds Evolution
|
||||||
|
|
||||||
|
![GNOME 2.10](https://github.com/paulcarroty/Articles/raw/master/GNOME_History/2.10/GNOME-Screenshot-2.10-FC4.png)
|
||||||
|
|
||||||
|
**GNOME 2.10**, 2005
|
||||||
|
|
||||||
|
Lower memory requirements and performance improvements. Adds: new panel applets (modem control, drive mounter and trashcan); and the Totem and Sound Juicer applications.
|
||||||
|
|
||||||
|
![GNOME 2.12](https://github.com/paulcarroty/Articles/raw/master/GNOME_History/2.12/gnome-livecd.jpg)
|
||||||
|
|
||||||
|
**GNOME 2.12**, 2005
|
||||||
|
|
||||||
|
Nautilus improvements; improvements in cut/paste between applications and freedesktop.org integration. Adds: Evince PDF viewer; New default theme: Clearlooks; menu editor; keyring manager and admin tools. Based on GTK+ 2.8 with cairo support
|
||||||
|
|
||||||
|
![GNOME 2.14](https://github.com/paulcarroty/Articles/raw/master/GNOME_History/2.14/debian4-stable.jpg)
|
||||||
|
|
||||||
|
**GNOME 2.14**, 2006
|
||||||
|
|
||||||
|
Performance improvements (over 100% in some cases); usability improvements in user preferences; GStreamer 0.10 multimedia framework. Adds: Ekiga video conferencing application; Deskbar search tool; Pessulus lockdown editor; Fast user switching; Sabayon system administration tool.
|
||||||
|
|
||||||
|
![GNOME 2.16](https://github.com/paulcarroty/Articles/raw/master/GNOME_History/2.16/Gnome-2.16-screenshot.png)
|
||||||
|
|
||||||
|
**GNOME 2.16**, 2006
|
||||||
|
|
||||||
|
Performance improvements. Adds: Tomboy notetaking application; Baobab disk usage analyser; Orca screen reader; GNOME Power Manager (improving laptop battery life); improvements to Totem, Nautilus; compositing support for Metacity; new icon theme. Based on GTK+ 2.10 with new print dialog
|
||||||
|
|
||||||
|
![GNOME 2.18](https://github.com/paulcarroty/Articles/raw/master/GNOME_History/2.18/Gnome-2.18.1.png)
|
||||||
|
|
||||||
|
**GNOME 2.18**, 2007
|
||||||
|
|
||||||
|
Performance improvements. Adds: Seahorse GPG security application, allowing encryption of emails and local files; Baobab disk usage analyser improved to support ring chart view; Orca screen reader; improvements to Evince, Epiphany and GNOME Power Manager, Volume control; two new games, GNOME Sudoku and glChess. MP3 and AAC audio encoding.
|
||||||
|
|
||||||
|
![GNOME 2.20](https://github.com/paulcarroty/Articles/raw/master/GNOME_History/2.20/rnintroduction-screenshot.png)
|
||||||
|
|
||||||
|
**GNOME 2.20**, 2007
|
||||||
|
|
||||||
|
Tenth anniversary release. Evolution backup functionality; improvements in Epiphany, EOG, GNOME Power Manager; password keyring management in Seahorse. Adds: PDF forms editing in Evince; integrated search in the file manager dialogs; automatic multimedia codec installer.
|
||||||
|
|
||||||
|
![GNOME 2.22, 2008](https://github.com/paulcarroty/Articles/raw/master/GNOME_History/2.22/GNOME-2-22-2-Released-2.png)
|
||||||
|
|
||||||
|
**GNOME 2.22**, 2008
|
||||||
|
|
||||||
|
Addition of Cheese, a tool for taking photos from webcams and Remote Desktop Viewer; basic window compositing support in Metacity; introduction of GVFS; improved playback support for DVDs and YouTube, MythTV support in Totem; internationalised clock applet; Google Calendar support and message tagging in Evolution; improvements in Evince, Tomboy, Sound Juicer and Calculator.
|
||||||
|
|
||||||
|
![GNOME 2.24](https://github.com/paulcarroty/Articles/raw/master/GNOME_History/2.24/gnome-224.jpg)
|
||||||
|
|
||||||
|
**GNOME 2.24**, 2008
|
||||||
|
|
||||||
|
Addition of the Empathy instant messenger client, Ekiga 3.0, tabbed browsing in Nautilus, better multiple screens support and improved digital TV support.
|
||||||
|
|
||||||
|
![GNOME 2.26](https://github.com/paulcarroty/Articles/raw/master/GNOME_History/2.26/gnome226-large_001.jpg)
|
||||||
|
|
||||||
|
**GNOME 2.26**, 2009
|
||||||
|
|
||||||
|
New optical disc recording application Brasero, simpler file sharing, media player improvements, support for multiple monitors and fingerprint reader support.
|
||||||
|
|
||||||
|
![GNOME 2.28](https://github.com/paulcarroty/Articles/raw/master/GNOME_History/2.28/1.png)
|
||||||
|
|
||||||
|
**GNOME 2.28**, 2009
|
||||||
|
|
||||||
|
Addition of GNOME Bluetooth module. Improvements to Epiphany web browser, Empathy instant messenger client, Time Tracker, and accessibility. Upgrade to GTK+ version 2.18.
|
||||||
|
|
||||||
|
![GNOME 2.30](https://github.com/paulcarroty/Articles/raw/master/GNOME_History/2.30/GNOME2.30.png)
|
||||||
|
|
||||||
|
**GNOME 2.30**, 2010
|
||||||
|
|
||||||
|
Improvements to Nautilus file manager, Empathy instant messenger client, Tomboy, Evince, Time Tracker, Epiphany, and Vinagre. iPod and iPod Touch devices are now partially supported via GVFS through libimobiledevice. Uses GTK+ 2.20.
|
||||||
|
|
||||||
|
![GNOME 2.32](https://github.com/paulcarroty/Articles/raw/master/GNOME_History/2.32/gnome-2-32.png.en_GB.png)
|
||||||
|
|
||||||
|
**GNOME 2.32**, 2010
|
||||||
|
|
||||||
|
Addition of Rygel and GNOME Color Manager. Improvements to Empathy instant messenger client, Evince, Nautilus file manager and others. 3.0 was intended to be released in September 2010, so a large part of the development effort since 2.30 went towards 3.0.
|
||||||
|
|
||||||
|
### GNOME 3 ###
|
||||||
|
|
||||||
|
![GNOME 3.0](https://github.com/paulcarroty/Articles/raw/master/GNOME_History/3.0/chat-3-0.png)
|
||||||
|
|
||||||
|
**GNOME 3.0**, 2011
|
||||||
|
|
||||||
|
Introduction of GNOME Shell. A redesigned settings framework with fewer, more focused options. Topic-oriented help based on the Mallard markup language. Side-by-side window tiling. A new visual theme and default font. Adoption of GTK+ 3.0 with its improved language bindings, themes, touch, and multiplatform support. Removal of long-deprecated development APIs.[73]
|
||||||
|
|
||||||
|
![GNOME 3.2](https://github.com/paulcarroty/Articles/raw/master/GNOME_History/3.2/gdm.png)
|
||||||
|
|
||||||
|
**GNOME 3.2**, 2011
|
||||||
|
|
||||||
|
Online accounts support; Web applications support; contacts manager; documents and files manager; quick preview of files in the File Manager; greater integration; better documentation; enhanced looks and various performance improvements.
|
||||||
|
|
||||||
|
![GNOME 3.4](https://github.com/paulcarroty/Articles/raw/master/GNOME_History/3.4/application-view.png)
|
||||||
|
|
||||||
|
**GNOME 3.4**, 2012
|
||||||
|
|
||||||
|
New Look for GNOME 3 Applications: Documents, Epiphany (now called Web), and GNOME Contacts. Search for documents from the Activities overview. Application menus support. Refreshed interface components: New color picker, redesigned scrollbars, easier to use spin buttons, and hideable title bars. Smooth scrolling support. New animated backgrounds. Improved system settings with new Wacom panel. Easier extensions management. Better hardware support. Topic-oriented documentation. Video calling and Live Messenger support in Empathy. Better accessibility: Improved Orca integration, better high contrast mode, and new zoom settings. Plus many other application enhancements and smaller details.
|
||||||
|
|
||||||
|
![GNOME 3.6](https://github.com/paulcarroty/Articles/raw/master/GNOME_History/3.6/gnome-3-6.png)
|
||||||
|
|
||||||
|
**GNOME 3.6**, 2012
|
||||||
|
|
||||||
|
Refreshed Core components: New applications button and improved layout in the Activities Overview. A new login and lock screen. Redesigned Message Tray. Notifications are now smarter, more noticeable, easier to dismiss. Improved interface and settings for System Settings. The user menu now shows Power Off by default. Integrated Input Methods. Accessibility is always on. New applications: Boxes, that was introduced as a preview version in GNOME 3.4, and Clocks, an application to handle world times. Updated looks for Disk Usage Analyzer, Empathy and Font Viewer. Improved braille support in Orca. In Web, the previously blank start page was replaced by a grid that holds your most visited pages, plus better full screen mode and a beta of WebKit2. Evolution renders email using WebKit. Major improvements to Disks. Revamped Files application (also known as Nautilus), with new features like Recent files and search.
|
||||||
|
|
||||||
|
![GNOME 3.8](https://github.com/paulcarroty/Articles/raw/master/GNOME_History/3.8/applications-view.png)
|
||||||
|
|
||||||
|
**GNOME 3.8**, 2013
|
||||||
|
|
||||||
|
Refreshed Core components: A new applications view with frequently used and all apps. An overhauled window layout. New input methods OSD switcher. The Notifications & Messaging tray now react to the force with which the pointer is pressed against the screen edge. Added Classic mode for those who prefer a more traditional desktop experience. The GNOME Settings application features an updated toolbar design. New Initial Setup assistant. GNOME Online Accounts integrates with more services. Web has been upgraded to use the WebKit2 engine. Web has a new private browsing mode. Documents has gained a new dual page mode & Google Documents integration. Improved user interface of Contacts. GNOME Files, GNOME Boxes and GNOME Disks have received a number of improvements. Integration of ownCloud. New GNOME Core Applications: GNOME Clocks and GNOME Weather.
|
||||||
|
|
||||||
|
![GNOME 3.10](https://github.com/paulcarroty/Articles/raw/master/GNOME_History/3.10/GNOME-3-10-Release-Schedule-2.png)
|
||||||
|
|
||||||
|
**GNOME 3.10**, 2013
|
||||||
|
|
||||||
|
A reworked system status area, which gives a more focused overview of the system. A collection of new applications, including GNOME Maps, GNOME Notes, GNOME Music and GNOME Photos. New geolocation features, such as automatic time zones and world clocks. HiDPI support[75] and smart card support. D-Bus activation made possible with GLib 2.38
|
||||||
|
|
||||||
|
![GNOME 3.12](https://github.com/paulcarroty/Articles/raw/master/GNOME_History/3.12/app-folders.png)
|
||||||
|
|
||||||
|
**GNOME 3.12**, 2014
|
||||||
|
|
||||||
|
Improved keyboard navigation and window selection in the Overview. Revamped first set-up utility based on usability tests. Wired networking re-added to the system status area. Customizable application folders in the Applications view. Introduction of new GTK+ widgets such as popovers in many applications. New tab style in GTK+. GNOME Videos GNOME Terminal and gedit were given a fresh look, more consistent with the HIG. A search provider for the terminal emulator is included in GNOME Shell. Improvements to GNOME Software and high-density display support. A new sound recorder application. New desktop notifications API. Progress in the Wayland port has reached a usable state that can be optionally previewed.
|
||||||
|
|
||||||
|
![GNOME 3.14](https://github.com/paulcarroty/Articles/raw/master/GNOME_History/3.14/Top-Features-of-GNOME-3-14-Gallery-459893-2.jpg)
|
||||||
|
|
||||||
|
**GNOME 3.14**, 2014
|
||||||
|
|
||||||
|
Improved desktop environment animations. Improved touchscreen support. GNOME Software supports managing installed add-ons. GNOME Photos adds support for Google. Redesigned UI for Evince, Sudoku, Mines and Weather. Hitori is added as part of GNOME Games.
|
||||||
|
|
||||||
|
![GNOME 3.16](https://github.com/paulcarroty/Articles/raw/master/GNOME_History/3.16/preview-apps.png)
|
||||||
|
|
||||||
|
**GNOME 3.16**, 2015
|
||||||
|
|
||||||
|
33,000 changes. Major changes include UI color scheme goes from black to charcoal. Overlay scroll bars added. Improvements to notifications including integration with Calendar applet. Tweaks to various apps including Files, Image Viewer, and Maps. Access to Preview Apps. Continued porting from X11 to Wayland.
|
||||||
|
|
||||||
|
Thanks to [Wikipedia][2] for short changelogs review and another big thanks for GNOME Project! Stay tuned!
|
||||||
|
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
via: https://tlhp.cf/18-years-of-gnome-evolution/
|
||||||
|
|
||||||
|
作者:[Pavlo Rudyi][a]
|
||||||
|
译者:[译者ID](https://github.com/译者ID)
|
||||||
|
校对:[校对者ID](https://github.com/校对者ID)
|
||||||
|
|
||||||
|
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||||
|
|
||||||
|
[a]:https://tlhp.cf/author/paul/
|
||||||
|
[1]:https://www.gnome.org/
|
||||||
|
[2]:https://en.wikipedia.org/wiki/GNOME
|
@ -0,0 +1,83 @@
|
|||||||
|
Five Years of LibreOffice Evolution (2010-2015)
|
||||||
|
================================================================================
|
||||||
|
注:youtube 视频
|
||||||
|
<iframe width="660" height="371" src="https://www.youtube.com/embed/plo8kP_ts-8?feature=oembed" frameborder="0" allowfullscreen></iframe>
|
||||||
|
|
||||||
|
[LibreOffice][1] – amazing free and open source office suite from The Document Foundation. LO was forked from [OpenOffice.org][2] in September 28, 2010 and OOo is an open-source version of the earlier [StarOffice][3]. The LibreOffice support word processing, the creation and editing of spreadsheets, slideshows, diagrams and drawings, databases, mathematical formulae.
|
||||||
|
|
||||||
|
### Core applications: ###
|
||||||
|
|
||||||
|
- **Writer** – word processor
|
||||||
|
- **Calc** – spreadsheet app, similar to Excel
|
||||||
|
- **Impress** – application for presentations, support Microsoft PowerPoint’s format
|
||||||
|
- **Draw** – vector graphics editor
|
||||||
|
- **Math** – special application for writing and editing mathematical formulae
|
||||||
|
- **Base** – database management
|
||||||
|
|
||||||
|
![LibreOffice 3.3, 2011](https://github.com/paulcarroty/Articles/raw/master/LO_History/3.3/Help-License-Info.png)
|
||||||
|
|
||||||
|
LibreOffice 3.3, 2011
|
||||||
|
|
||||||
|
First version of LibreOffice – fork of OpenOffice.org
|
||||||
|
|
||||||
|
![LibreOffice 3.4](https://github.com/paulcarroty/Articles/raw/master/LO_History/3.4/1cc80d1cada204a061402785b2048f7clibreoffice-3.4.3.png)
|
||||||
|
|
||||||
|
LibreOffice 3.4
|
||||||
|
|
||||||
|
![LibreOffice 3.5](https://raw.githubusercontent.com/paulcarroty/Articles/master/LO_History/3.5/libreoffice35-large_001.jpg)
|
||||||
|
|
||||||
|
LibreOffice 3.5
|
||||||
|
|
||||||
|
![LibreOffice 3.6](https://github.com/paulcarroty/Articles/raw/master/LO_History/3.6/libreoffice-3.6.0.png)
|
||||||
|
|
||||||
|
LibreOffice 3.6
|
||||||
|
|
||||||
|
![Libre Office 4.0](https://github.com/paulcarroty/Articles/raw/master/LO_History/4.0/libreoffice-writer.png)
|
||||||
|
|
||||||
|
LibreOffice 4.0
|
||||||
|
|
||||||
|
![Libre Office 4.1](https://github.com/paulcarroty/Articles/raw/master/LO_History/4.1/Writer1.png)
|
||||||
|
|
||||||
|
LibreOffice 4.1
|
||||||
|
|
||||||
|
![Libre Office 4.2](https://github.com/paulcarroty/Articles/raw/master/LO_History/4.2/libreoffice-4.2.png)
|
||||||
|
|
||||||
|
Libre Office 4.2
|
||||||
|
|
||||||
|
![LibreOffice 4.3](https://github.com/paulcarroty/Articles/raw/master/LO_History/4.3/libreoffice.jpg)
|
||||||
|
|
||||||
|
LibreOffice 4.3
|
||||||
|
|
||||||
|
![LibreOffice 4.4](https://github.com/paulcarroty/Articles/raw/master/LO_History/4.4/LibreOffice_Writer_4_4_2.png)
|
||||||
|
|
||||||
|
LibreOffice 4.4
|
||||||
|
|
||||||
|
![Libre Office 5.0](https://github.com/paulcarroty/Articles/raw/master/LO_History/5.0/LibreOffice_Writer_5.0.png)
|
||||||
|
|
||||||
|
LibreOffice 5.0
|
||||||
|
|
||||||
|
### History of Libre Office from Wikipedia ###
|
||||||
|
|
||||||
|
![StarOffice major derivatives](https://commons.wikimedia.org/wiki/File%3AStarOffice_major_derivatives.svg)
|
||||||
|
|
||||||
|
|
||||||
|
### LibreOffice 5.0 Review ###
|
||||||
|
|
||||||
|
注:youtube 视频
|
||||||
|
|
||||||
|
<iframe width="660" height="371" src="https://www.youtube.com/embed/BVdofVqarAc?feature=oembed" frameborder="0" allowfullscreen></iframe>
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
via: https://tlhp.cf/libreoffice-5years-evolution/
|
||||||
|
|
||||||
|
作者:[Pavlo Rudyi][a]
|
||||||
|
译者:[译者ID](https://github.com/译者ID)
|
||||||
|
校对:[校对者ID](https://github.com/校对者ID)
|
||||||
|
|
||||||
|
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||||
|
|
||||||
|
[a]:https://tlhp.cf/author/paul/
|
||||||
|
[1]:http://www.libreoffice.org/
|
||||||
|
[2]:https://www.openoffice.org/
|
||||||
|
[3]:http://www.staroffice.org/
|
299
sources/talk/20151020 Linux History--24 Years Step by Step.md
Normal file
299
sources/talk/20151020 Linux History--24 Years Step by Step.md
Normal file
@ -0,0 +1,299 @@
|
|||||||
|
Linux History: 24 Years Step by Step
|
||||||
|
================================================================================
|
||||||
|
注:youtube 视频
|
||||||
|
|
||||||
|
<iframe width="660" height="371" src="https://www.youtube.com/embed/84cHeoEebJM?feature=oembed" frameborder="0" allowfullscreen></iframe>
|
||||||
|
|
||||||
|
### Pre-history ###
|
||||||
|
|
||||||
|
Linux success would not be possible without [C programming language][1] and [GNU Project][2] – Environment of Linux.
|
||||||
|
|
||||||
|
![](https://github.com/paulcarroty/Articles/raw/master/Linux_24/00-1.jpg)
|
||||||
|
|
||||||
|
Ken Thompson and Dennis Ritchie
|
||||||
|
|
||||||
|
[Ken Thompson][1] and [Dennis Ritchie][2] was created the Unix Operation System in 1969-1970. Later was released the new [C programming language][3] – high-level and portable PL. Linux kernel written in C with some assembly code.
|
||||||
|
|
||||||
|
![Richard Matthew Stallman](https://github.com/paulcarroty/Articles/raw/master/Linux_24/00-2.jpg)
|
||||||
|
|
||||||
|
Richard Matthew Stallman
|
||||||
|
|
||||||
|
[Richard Matthew Stallman][4] started in 1984 the [GNU Project][5]. One of biggest goals — free Unix-like operation system and totally
|
||||||
|
|
||||||
|
### 1991 – The Beginning ###
|
||||||
|
|
||||||
|
![](https://github.com/paulcarroty/Articles/raw/master/Linux_24/1991-1.jpg)
|
||||||
|
|
||||||
|
Linus Torvalds, 1991
|
||||||
|
|
||||||
|
[Linus Torvalds][5] begin Linux kernel development in Helsinki, Finland – witten programm for hes hardware – Intel 80386 CPU. Hi also use Minix and GNU C compiler. Here is historical message from Linus Torvalds to Minix newsgroup:
|
||||||
|
|
||||||
|
> From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
|
||||||
|
> Newsgroups: comp.os.minix
|
||||||
|
> Subject: What would you like to see most in minix?
|
||||||
|
> Summary: small poll for my new operating system
|
||||||
|
> Message-ID:
|
||||||
|
> Date: 25 Aug 91 20:57:08 GMT
|
||||||
|
> Organization: University of Helsinki
|
||||||
|
>
|
||||||
|
>
|
||||||
|
> Hello everybody out there using minix -
|
||||||
|
>
|
||||||
|
> I'm doing a (free) operating system (just a hobby, won't be big and
|
||||||
|
> professional like gnu) for 386(486) AT clones. This has been brewing
|
||||||
|
> since april, and is starting to get ready. I'd like any feedback on
|
||||||
|
> things people like/dislike in minix, as my OS resembles it somewhat
|
||||||
|
> (same physical layout of the file-system (due to practical reasons)
|
||||||
|
> among other things).
|
||||||
|
>
|
||||||
|
> I've currently ported bash(1.08) and gcc(1.40), and things seem to work.
|
||||||
|
> This implies that I'll get something practical within a few months, and
|
||||||
|
> I'd like to know what features most people would want. Any suggestions
|
||||||
|
> are welcome, but I won't promise I'll implement them :-)
|
||||||
|
>
|
||||||
|
> Linus (torvalds@kruuna.helsinki.fi)
|
||||||
|
|
||||||
|
After this Linux has supported by worldwide volunteers and professional specialists. Name “Linux” was defined by Linus coworker Ari Lemmke – just named directory of project on University Server.
|
||||||
|
|
||||||
|
### 1992 ###
|
||||||
|
|
||||||
|
![](https://github.com/paulcarroty/Articles/raw/master/Linux_24/1992-1.jpg)
|
||||||
|
|
||||||
|
Version 0.12 of Linux Kernel released under GPLv2.
|
||||||
|
|
||||||
|
### 1993 ###
|
||||||
|
|
||||||
|
![Slackware 1.0 ](https://github.com/paulcarroty/Articles/raw/master/Linux_24/1993-1.png)
|
||||||
|
|
||||||
|
First release of Slackware – the oldest Linux Distro with the same leader – Patrick Volkerding. Linux kernel have ~100 Developers.
|
||||||
|
|
||||||
|
![](https://github.com/paulcarroty/Articles/raw/master/Linux_24/1993-2.png)
|
||||||
|
|
||||||
|
Debian
|
||||||
|
|
||||||
|
Debian – one of largest Linux-community also created in 1991.
|
||||||
|
|
||||||
|
### 1994 ###
|
||||||
|
|
||||||
|
Linux 1.0 released and first GUI is available – thanks to XFree86 project.
|
||||||
|
|
||||||
|
![](https://github.com/paulcarroty/Articles/raw/master/Linux_24/1994-1.png)
|
||||||
|
|
||||||
|
Red Hat Linux
|
||||||
|
|
||||||
|
Released Red Hat Linux 1.0
|
||||||
|
|
||||||
|
![](https://github.com/paulcarroty/Articles/raw/master/Linux_24/1994-2.png)
|
||||||
|
|
||||||
|
S.u.S.E Linux
|
||||||
|
|
||||||
|
and [S.u.S.E. Linux][6] 1.0.
|
||||||
|
|
||||||
|
### 1995 ###
|
||||||
|
|
||||||
|
![](https://github.com/paulcarroty/Articles/raw/master/Linux_24/1995-1.png)
|
||||||
|
|
||||||
|
Red Hat Inc.
|
||||||
|
|
||||||
|
Bob Young and Marc Ewing merged their local business to [Red Hat Software][7]. Linux ported to many of hardware platforms.
|
||||||
|
|
||||||
|
### 1996 ###
|
||||||
|
|
||||||
|
![](https://github.com/paulcarroty/Articles/raw/master/Linux_24/1996-1.png)
|
||||||
|
|
||||||
|
### Tux ###
|
||||||
|
|
||||||
|
Tux Penguin – official mascot of Linux. Idea of Linus Torvalds – after visit to National Zoo & Aquarium in Canberra. Linux 2.0 released and support symmetric multiprocessing. Begin of KDE development.
|
||||||
|
|
||||||
|
### 1997 ###
|
||||||
|
|
||||||
|
![](https://github.com/paulcarroty/Articles/raw/master/Linux_24/1997-1.jpg)
|
||||||
|
|
||||||
|
Miguel de Icaza
|
||||||
|
|
||||||
|
Miguel de Icaza and Federico Mena begin development of GNOME – free desktop environment with application. Linus Torvalds win in Linux’s Trademark conflict and Linux becomes the registered trademark of Linus.
|
||||||
|
|
||||||
|
### 1998 ###
|
||||||
|
|
||||||
|
![](https://github.com/paulcarroty/Articles/raw/master/Linux_24/1998-1.jpg)
|
||||||
|
|
||||||
|
The Cathedral and the Bazaar
|
||||||
|
|
||||||
|
[The Cathedral and the Bazaar][8] essay by Eric S. Raymond is published – highly recommend to read. Linux support from big companies: IBM, Oracle, Compaq.
|
||||||
|
|
||||||
|
![](https://github.com/paulcarroty/Articles/raw/master/Linux_24/1998-2.png)
|
||||||
|
|
||||||
|
Mandrake Linux
|
||||||
|
|
||||||
|
First release of Mandrake Linux – Red Hat Linux-based distro with K Desktop Environment.
|
||||||
|
|
||||||
|
### 1999 ###
|
||||||
|
|
||||||
|
![](https://upload.wikimedia.org/wikipedia/commons/4/4f/KDE_1.1.jpg)
|
||||||
|
|
||||||
|
First major KDE release.
|
||||||
|
|
||||||
|
### 2000 ###
|
||||||
|
|
||||||
|
![](https://github.com/paulcarroty/Articles/raw/master/Linux_24/2000-1.jpg)
|
||||||
|
|
||||||
|
Dell support Linux – first big hardware vendor
|
||||||
|
|
||||||
|
### 2001 ###
|
||||||
|
|
||||||
|
![](https://github.com/paulcarroty/Articles/raw/master/Linux_24/2001-1.jpg)
|
||||||
|
|
||||||
|
Revolution OS
|
||||||
|
|
||||||
|
Documentary film “Revolution OS” – 20 years of GNU, Linux, Open Source, Free Software history with iterview of best hackers of Linux and Open Source World.
|
||||||
|
|
||||||
|
### 2002 ###
|
||||||
|
|
||||||
|
![](https://github.com/paulcarroty/Articles/raw/master/Linux_24/2002-1.jpg)
|
||||||
|
|
||||||
|
BitKeeper
|
||||||
|
|
||||||
|
Linux now use BitKeeper – proprietary software for distributed version control.
|
||||||
|
|
||||||
|
### 2003 ###
|
||||||
|
|
||||||
|
![](https://github.com/paulcarroty/Articles/raw/master/Linux_24/2003-1.png)
|
||||||
|
|
||||||
|
SUSE
|
||||||
|
|
||||||
|
Novell buy SuSE Linux AG for $210M. Since 2003 also started epic battle SCO Group vs IBM and Linux community for the Unix copyrights.
|
||||||
|
|
||||||
|
![](https://github.com/paulcarroty/Articles/raw/master/Linux_24/2003-2.png)
|
||||||
|
|
||||||
|
Fedora
|
||||||
|
|
||||||
|
First Release of Fedora Linux from Red Hat and Linux Community.
|
||||||
|
|
||||||
|
### 2004 ###
|
||||||
|
|
||||||
|
![](https://github.com/paulcarroty/Articles/raw/master/Linux_24/2004-1.png)
|
||||||
|
|
||||||
|
X.ORG Foundation
|
||||||
|
|
||||||
|
The XFree86 team is dropped and join to [X.Org Foundation][9], development of X be faster.
|
||||||
|
|
||||||
|
![](https://github.com/paulcarroty/Articles/raw/master/Linux_24/2004-2.jpg)
|
||||||
|
|
||||||
|
Ubuntu 4.10 – First Release
|
||||||
|
|
||||||
|
### 2005 ###
|
||||||
|
|
||||||
|
![](https://github.com/paulcarroty/Articles/raw/master/Linux_24/2005-1.png)
|
||||||
|
|
||||||
|
openSUSE
|
||||||
|
|
||||||
|
Beginning of [openSUSE][10] – free version of enterprise Novell’s OS. OpenOffice.org started support of OpenDocument standards.
|
||||||
|
|
||||||
|
### 2006 ###
|
||||||
|
|
||||||
|
![](https://github.com/paulcarroty/Articles/raw/master/Linux_24/2006-1.png)
|
||||||
|
|
||||||
|
New Linux distribution – Oracle Linux based on Red Hat Enterprise Linux. Microsoft and Novell begin cooperation in IT and both patents protection.
|
||||||
|
|
||||||
|
### 2007 ###
|
||||||
|
|
||||||
|
![](https://github.com/paulcarroty/Articles/raw/master/Linux_24/2007-1.jpg)
|
||||||
|
|
||||||
|
Dell Linux Laptop
|
||||||
|
|
||||||
|
First laptops with preinstalled Linux from Dell.
|
||||||
|
|
||||||
|
### 2008 ###
|
||||||
|
|
||||||
|
![](https://github.com/paulcarroty/Articles/raw/master/Linux_24/2008-1.jpg)
|
||||||
|
|
||||||
|
KDE 4.0
|
||||||
|
|
||||||
|
KDE 4 released in non-stable condition and many users migrate to GNOME.
|
||||||
|
|
||||||
|
### 2009 ###
|
||||||
|
|
||||||
|
![](https://github.com/paulcarroty/Articles/raw/master/Linux_24/2009-1.jpg)
|
||||||
|
|
||||||
|
Red Hat
|
||||||
|
|
||||||
|
Red Hat’s Linux-based success – $2.62 billion market capitalization.
|
||||||
|
|
||||||
|
In 2009 Microsoft sumbitted first patch to Linux kernel under GPLv2 license.
|
||||||
|
|
||||||
|
### 2010 ###
|
||||||
|
|
||||||
|
![](https://github.com/paulcarroty/Articles/raw/master/Linux_24/2010-1.png)
|
||||||
|
|
||||||
|
Novell -> Attachmate
|
||||||
|
|
||||||
|
Novell was sold to The Attachmate Group, Inc. for $2.2 billion. SUSE and Novell – two independs products in new company.
|
||||||
|
|
||||||
|
First release of [systemd][11] and begin of Linux system revolution.
|
||||||
|
|
||||||
|
### 2011 ###
|
||||||
|
|
||||||
|
![](https://github.com/paulcarroty/Articles/raw/master/Linux_24/2011-1.png)
|
||||||
|
|
||||||
|
Unity Desktop in 2011
|
||||||
|
|
||||||
|
Ubuntu Unity released – a lot of criticizm from users.
|
||||||
|
|
||||||
|
![](https://github.com/paulcarroty/Articles/raw/master/Linux_24/2011-2.png)
|
||||||
|
|
||||||
|
GNOME 3.0, 2011
|
||||||
|
|
||||||
|
GNOME 3.0 release – “unholy mess” by Linus Torvalds and also a lot of negative critics. Linux kernel 3.0 released.
|
||||||
|
|
||||||
|
### 2012 ###
|
||||||
|
|
||||||
|
![](https://github.com/paulcarroty/Articles/raw/master/Linux_24/2012-1.png)
|
||||||
|
|
||||||
|
15 million lines of code
|
||||||
|
|
||||||
|
Linux kernel have a 15 million lines of code. Microsoft is one of top Linux contributors.
|
||||||
|
|
||||||
|
### 2013 ###
|
||||||
|
|
||||||
|
![](https://github.com/paulcarroty/Articles/raw/master/Linux_24/2013-1.png)
|
||||||
|
|
||||||
|
Kali Linux 1.0 released – Debian-based Linux distro for penetration testing and digital forensics. Also in 2014 Centos with code developers joined to Red Hat Inc.
|
||||||
|
|
||||||
|
### 2014 ###
|
||||||
|
|
||||||
|
![](https://github.com/paulcarroty/Articles/raw/master/Linux_24/2014-1.jpg)
|
||||||
|
|
||||||
|
Lennart Poettering and Kay Sievers
|
||||||
|
|
||||||
|
systemd – default in Ubuntu and all top Linux distribution. Ubuntu have 22 000 000 users. Big Android progress – 75% of all mobile devices.
|
||||||
|
|
||||||
|
### 2015 ###
|
||||||
|
|
||||||
|
![](https://github.com/paulcarroty/Articles/raw/master/Linux_24/2015-1.jpg)
|
||||||
|
|
||||||
|
Linux kernel 4.0 released. Mandriva was liquidated, but have a lot of forks – Mageia is most popular.
|
||||||
|
|
||||||
|
Written from Linux with love.
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
via: https://tlhp.cf/linux-history/
|
||||||
|
|
||||||
|
作者:[Pavlo Rudyi][a]
|
||||||
|
译者:[译者ID](https://github.com/译者ID)
|
||||||
|
校对:[校对者ID](https://github.com/校对者ID)
|
||||||
|
|
||||||
|
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||||
|
|
||||||
|
[a]:https://tlhp.cf/author/paul/
|
||||||
|
[1]:https://en.wikipedia.org/wiki/C_(programming_language)
|
||||||
|
[2]:https://en.wikipedia.org/wiki/GNU_Project
|
||||||
|
[3]:https://en.wikipedia.org/wiki/Ken_Thompson
|
||||||
|
[4]:https://en.wikipedia.org/wiki/Dennis_Ritchie
|
||||||
|
[5]:https://en.wikipedia.org/wiki/Linus_Torvalds
|
||||||
|
[6]:https://en.wikipedia.org/wiki/SUSE_Linux_distributions
|
||||||
|
[7]:https://en.wikipedia.org/wiki/Red_Hat
|
||||||
|
[8]:https://en.wikipedia.org/wiki/The_Cathedral_and_the_Bazaar
|
||||||
|
[9]:http://www.x.org/
|
||||||
|
[10]:https://en.opensuse.org/Main_Page
|
||||||
|
[11]:https://en.wikipedia.org/wiki/Systemd
|
375
sources/tech/20151020 how to h2 in apache.md
Normal file
375
sources/tech/20151020 how to h2 in apache.md
Normal file
@ -0,0 +1,375 @@
|
|||||||
|
how to h2 in apache
|
||||||
|
================================================================================
|
||||||
|
Copyright (C) 2015 greenbytes GmbH
|
||||||
|
|
||||||
|
Support for HTTP/2 is finally being released with Apache httpd 2.4.17! This pages gives advice on how to build/deploy/configure it. The plan is to update this as people find out new things (read: bugs) or give recommendations on what works best for them.
|
||||||
|
|
||||||
|
Ultimately, this will then flow back into the official Apache documentation and this page will only contain a single link to it. But we are not quite there yet...
|
||||||
|
|
||||||
|
### Sources ###
|
||||||
|
|
||||||
|
You can get the Apache release from [here][1]. HTTP/2 support is included in Apache 2.4.17 and upwards. I will not repeat instructions on how to build the server in general. There is excellent material available in several places, for example [here][2].
|
||||||
|
|
||||||
|
(Any links to experimental packages? Drop me a note on twitter @icing.)
|
||||||
|
|
||||||
|
#### Building with HTTP/2 Support ####
|
||||||
|
|
||||||
|
Should you build from a release, you will need to **configure** first. There are tons of options. The ones specific for HTTP/2 are:
|
||||||
|
|
||||||
|
- **--enable-http2**
|
||||||
|
|
||||||
|
This enables the module 'http2' which does implement the protocol inside the Apache server.
|
||||||
|
|
||||||
|
- **--with-nghttp2=<dir>**
|
||||||
|
|
||||||
|
This specifies a non-standard location for the library libnghttp2 which is necessary for the http2 module. If nghttp2 is in a standard place, the configure process will pick it up automatically.
|
||||||
|
|
||||||
|
- **--enable-nghttp2-staticlib-deps**
|
||||||
|
|
||||||
|
Ultra-rarely needed option that you may use to static link the nghttp2 library to the server. On most platforms, this only has an effect when there is no shared nghttp2 library to be found.
|
||||||
|
|
||||||
|
In case you want to build nghttp2 for yourself, you find documentation at [nghttp2.org][3]. The library is also being shipped in the latest Fedora and other distros will follow.
|
||||||
|
|
||||||
|
#### TLS Support ####
|
||||||
|
|
||||||
|
Most people will want to use HTTP/2 with browsers and browser only support it on TLS connections (**https://** urls). You'll need proper configuration for that which I cover below. But foremost what you will need is an TLS library that supports the ALPN extension.
|
||||||
|
|
||||||
|
ALPN is neccessary to negotiate the protocol to use between server and client. If it is not implemented by the TLS lib on your server, the client will only ever talk HTTP/1.1. So, who does link with Apache and support it?
|
||||||
|
|
||||||
|
- **OpenSSL 1.0.2** and onward.
|
||||||
|
- ???
|
||||||
|
|
||||||
|
If you get your OpenSSL library from your Linux distro, the version number used there might be different from the official OpenSSL releases. Check with your distro in case of doubt.
|
||||||
|
|
||||||
|
### Configuration ###
|
||||||
|
|
||||||
|
One useful addition to your server is to set a good logging level for the http2 module. Add this:
|
||||||
|
|
||||||
|
# this needs to be somewhere
|
||||||
|
LoadModule http2_module modules/mod_http2.so
|
||||||
|
|
||||||
|
<IfModule http2_module>
|
||||||
|
LogLevel http2:info
|
||||||
|
</IfModule>
|
||||||
|
|
||||||
|
When you start your server and look in the error log, you should see one line like:
|
||||||
|
|
||||||
|
[timestamp] [http2:info] [pid XXXXX:tid numbers]
|
||||||
|
mod_http2 (v1.0.0, nghttp2 1.3.4), initializing...
|
||||||
|
|
||||||
|
#### Protocols ####
|
||||||
|
|
||||||
|
So, assume you have the server built and deployed, the TLS library is bleeding edge (sorry), your server starts, you open your browser and...how do you know it is working?
|
||||||
|
|
||||||
|
If you have not added more to your server config, it probably isn't.
|
||||||
|
|
||||||
|
You need to tell the server where to use the protocol. By default, the HTTP/2 protocol is not enabled anywhere in your server. Because that is the safe route and you might have an existing deployment should continue to work.
|
||||||
|
|
||||||
|
You enable the HTTP/2 protocol with the new **Protocols** directive:
|
||||||
|
|
||||||
|
# for a https server
|
||||||
|
Protocols h2 http/1.1
|
||||||
|
...
|
||||||
|
|
||||||
|
# for a http server
|
||||||
|
Protocols h2c http/1.1
|
||||||
|
|
||||||
|
You can add this for the server in general or for specific **vhosts**.
|
||||||
|
|
||||||
|
#### SSL Parameter ####
|
||||||
|
|
||||||
|
HTTP/2 has some special requirements regarding TLS (SSL). See the chapter about [https:// connections][4] for more information.
|
||||||
|
|
||||||
|
### http:// Connections (h2c) ###
|
||||||
|
|
||||||
|
Although no browser currently supports it, the HTTP/2 protocol also works for http:// urls and mod_h[ttp]2 supports this. The only thing you need to do in order to enable it is the Protocols configuration:
|
||||||
|
|
||||||
|
# for a http server
|
||||||
|
Protocols h2c http/1.1
|
||||||
|
|
||||||
|
inside your **httpd.conf**.
|
||||||
|
|
||||||
|
There are several client (and client libraries) that support **h2c**. I'll dicusss some specifics below:
|
||||||
|
|
||||||
|
#### curl ####
|
||||||
|
|
||||||
|
Of course, the command line client for network resources, maintained by Daniel Stenberg. If you have curl on your system, there is an easy way to check its http/2 support:
|
||||||
|
|
||||||
|
sh> curl -V
|
||||||
|
curl 7.43.0 (x86_64-apple-darwin15.0) libcurl/7.43.0 SecureTransport zlib/1.2.5
|
||||||
|
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
|
||||||
|
Features: AsynchDNS IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz UnixSockets
|
||||||
|
|
||||||
|
which is no good. There is no 'HTTP2' among the features. You'd want something like this:
|
||||||
|
|
||||||
|
sh> curl -V
|
||||||
|
url 7.45.0 (x86_64-apple-darwin15.0.0) libcurl/7.45.0 OpenSSL/1.0.2d zlib/1.2.8 nghttp2/1.3.4
|
||||||
|
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
|
||||||
|
Features: IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP HTTP2 UnixSockets
|
||||||
|
|
||||||
|
If you have a curl with the HTTP2 feature, you may check your server with some simple commands:
|
||||||
|
|
||||||
|
sh> curl -v --http2 http://<yourserver>/
|
||||||
|
...
|
||||||
|
> Connection: Upgrade, HTTP2-Settings
|
||||||
|
> Upgrade: h2c
|
||||||
|
> HTTP2-Settings: AAMAAABkAAQAAP__
|
||||||
|
>
|
||||||
|
< HTTP/1.1 101 Switching Protocols
|
||||||
|
< Upgrade: h2c
|
||||||
|
< Connection: Upgrade
|
||||||
|
* Received 101
|
||||||
|
* Using HTTP2, server supports multi-use
|
||||||
|
* Connection state changed (HTTP/2 confirmed)
|
||||||
|
...
|
||||||
|
<the resource>
|
||||||
|
|
||||||
|
Congratulations, id you see the line with **...101 Switching...**, it's working!
|
||||||
|
|
||||||
|
There are cases, where the upgrade to HTTP/2 will not happen. When your first request does have content, for example you do a file upload, the Upgrade will not trigger. For a detailed explanation, see the section [h2c restrictions][5].
|
||||||
|
|
||||||
|
#### nghttp ####
|
||||||
|
|
||||||
|
nghttp2 has its own client and servers that can be build with it. If you have the client on your system, you can verify your installation by simply retrieving a resource:
|
||||||
|
|
||||||
|
sh> nghttp -uv http://<yourserver>/
|
||||||
|
[ 0.001] Connected
|
||||||
|
[ 0.001] HTTP Upgrade request
|
||||||
|
...
|
||||||
|
Connection: Upgrade, HTTP2-Settings
|
||||||
|
Upgrade: h2c
|
||||||
|
HTTP2-Settings: AAMAAABkAAQAAP__
|
||||||
|
...
|
||||||
|
[ 0.005] HTTP Upgrade response
|
||||||
|
HTTP/1.1 101 Switching Protocols
|
||||||
|
Upgrade: h2c
|
||||||
|
Connection: Upgrade
|
||||||
|
|
||||||
|
[ 0.006] HTTP Upgrade success
|
||||||
|
...
|
||||||
|
|
||||||
|
which is very similar to the Upgrade dance we see in the **curl** example above.
|
||||||
|
|
||||||
|
There is another way to use **h2c** hidden in the command line arguments: **-u**. This instructs **nghttp** to perform the HTTP/1 Upgrade dance. But what if we leave this out?
|
||||||
|
|
||||||
|
sh> nghttp -v http://<yourserver>/
|
||||||
|
[ 0.002] Connected
|
||||||
|
[ 0.002] send SETTINGS frame
|
||||||
|
...
|
||||||
|
[ 0.002] send HEADERS frame
|
||||||
|
; END_STREAM | END_HEADERS | PRIORITY
|
||||||
|
(padlen=0, dep_stream_id=11, weight=16, exclusive=0)
|
||||||
|
; Open new stream
|
||||||
|
:method: GET
|
||||||
|
:path: /
|
||||||
|
:scheme: http
|
||||||
|
...
|
||||||
|
|
||||||
|
The connection immediately speaks HTTP/2! This is what the protocol calls the direct mode and it works by some magic 24 bytes that the client sends to the server right away:
|
||||||
|
|
||||||
|
0x505249202a20485454502f322e300d0a0d0a534d0d0a0d0a
|
||||||
|
or in ASCII: PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n
|
||||||
|
|
||||||
|
A **h2c** capable server sees this on a new connection and can immediately switch its HTTP/2 processing on. A HTTP/1.1 server will see a funny request, answer it and close the connection.
|
||||||
|
|
||||||
|
Therefore **direct** mode is only good for clients if they can be resonably sure that the server supports this. For example, because a previous Upgrade dance was successful.
|
||||||
|
|
||||||
|
The charme of **direct** is the zero overhead and that it works for all requests, even those that carry a body (see [h2c restrictions][6]). The direct mode is enabled by default on any server that allows the h2c protocol. If you want to disable it, add the configuration directive:
|
||||||
|
|
||||||
|
注:下面这行打删除线
|
||||||
|
|
||||||
|
H2Direct off
|
||||||
|
|
||||||
|
注:下面这行打删除线
|
||||||
|
to your server.
|
||||||
|
|
||||||
|
For the 2.4.17 release, **H2Direct** is enabled by default on cleartext connection. However there are some modules with whom this is incompatible with. Therefore, in the next release, the default will change to **off** and if you want your server to support it, you need to set it to
|
||||||
|
|
||||||
|
H2Direct on
|
||||||
|
|
||||||
|
### https:// Connections (h2) ###
|
||||||
|
|
||||||
|
Once you get mod_h[ttp]2 working for h2c connections, it's time to get the **h2** sibling going, as browsers only do it with **https:** nowadays.
|
||||||
|
|
||||||
|
The HTTP/2 standard imposes some extra requirements on https: (TLS) connections. The ALPN extension has already been mentioned above. An additional requirement is that no cipher from a specified [black list][7] may be used.
|
||||||
|
|
||||||
|
While the current version of **mod_h[ttp]2** does not enforce these ciphers (but some day will), most clients will do so. If you point your browser at a **h2** server with inappropriate ciphers, you will get the obscure warning **INADEQUATE_SECURITY** and the browser will simply refuse to continue.
|
||||||
|
|
||||||
|
An acceptable Apache SSL configuration regarding this is:
|
||||||
|
|
||||||
|
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK
|
||||||
|
SSLProtocol All -SSLv2 -SSLv3
|
||||||
|
...
|
||||||
|
|
||||||
|
(Yes, it's that long.)
|
||||||
|
|
||||||
|
There are other SSL configuration parameters that should be tweaked, but do not have to: **SSLSessionCache**, **SSLUseStapling**, etc. but those are covered elsewhere. See the excellent [High Performance Browser Networking][8] by Ilya Grigorik, for example.
|
||||||
|
|
||||||
|
#### curl ####
|
||||||
|
|
||||||
|
Time to fire up a shell and use curl again (see the [h2c section about curl][9] for requirements). Using curl, you may check your server with some simple commands:
|
||||||
|
|
||||||
|
sh> curl -v --http2 https://<yourserver>/
|
||||||
|
...
|
||||||
|
* ALPN, offering h2
|
||||||
|
* ALPN, offering http/1.1
|
||||||
|
...
|
||||||
|
* ALPN, server accepted to use h2
|
||||||
|
...
|
||||||
|
<the resource>
|
||||||
|
|
||||||
|
Congratulations, it's working! If not, the reason might be:
|
||||||
|
|
||||||
|
- Your curl does not support HTTP/2, see [this check][10].
|
||||||
|
- Your openssl is old and does not support ALPN.
|
||||||
|
- Your certificate could not be verified or your cipher configuration is not accepted. Try adding the command line option -k to disable those checks in curl. If that works, review yor SSL configuration and certificate.
|
||||||
|
|
||||||
|
#### nghttp ####
|
||||||
|
|
||||||
|
**nghttp** we discussed already for **h2c**. If you use it for a **https:** connection, you will either see the resource or an error like this:
|
||||||
|
|
||||||
|
sh> nghttp https://<yourserver>/
|
||||||
|
[ERROR] HTTP/2 protocol was not selected. (nghttp2 expects h2)
|
||||||
|
|
||||||
|
There are two possiblities for this which you can check by adding -v. Either your get this:
|
||||||
|
|
||||||
|
sh> nghttp -v https://<yourserver>/
|
||||||
|
[ 0.034] Connected
|
||||||
|
[ERROR] HTTP/2 protocol was not selected. (nghttp2 expects h2)
|
||||||
|
|
||||||
|
This means that the TLS library your server uses does not implement ALPN. Getting this installtion correct is sometimes tricky. Use stackoverflow.
|
||||||
|
|
||||||
|
Or you get this:
|
||||||
|
|
||||||
|
sh> nghttp -v https://<yourserver>/
|
||||||
|
[ 0.034] Connected
|
||||||
|
The negotiated protocol: http/1.1
|
||||||
|
[ERROR] HTTP/2 protocol was not selected. (nghttp2 expects h2)
|
||||||
|
|
||||||
|
which means ALPN is working, only the h2 protocol was not selected. You need to check that Protocols is set as described above for yourserver. Try setting it in the general section, in case you do not get it working in a vhost at first.
|
||||||
|
|
||||||
|
#### Firefox ####
|
||||||
|
|
||||||
|
Update: Steffen Land from [Apache Lounge][11] pointed me to the [HTTP/2 indicator Add-on for Firefox][12]. Nice if you want to see in how many places you already talk h2 (Hint: Apache Lounge talks h2 for some time now...).
|
||||||
|
|
||||||
|
In Firefox you can to open the Developer Tools and there the Network tab to check for HTTP/2 connections. When you have those open and reload your html page, you see something like the following:
|
||||||
|
|
||||||
|
![](https://icing.github.io/mod_h2/images/firefox-h2.png)
|
||||||
|
|
||||||
|
Among the response headers, you see this strange **X-Firefox-Spdy** entry listing "h2". That is the indication that HTTP/2 is used on this **https:** connection.
|
||||||
|
|
||||||
|
#### Google Chrome ####
|
||||||
|
|
||||||
|
In Google Chrome, you will not see a HTTP/2 indicator in the developer tools. Instead, Chrome uses the special location **chrome://net-internals/#http2** to give information.
|
||||||
|
|
||||||
|
If you have opened a page on your server and look at that net-internals page, you will see something like this:
|
||||||
|
|
||||||
|
![](https://icing.github.io/mod_h2/images/chrome-h2.png)
|
||||||
|
|
||||||
|
If your server is among the ones listed here, it is working.
|
||||||
|
|
||||||
|
#### Microsoft Edge ####
|
||||||
|
|
||||||
|
HTTP/2 is supported in the Windows 10 successor to Internet Explorer: Edge. Here you can also see the protocol used in the Developer Tools in the Network tab:
|
||||||
|
|
||||||
|
![](https://icing.github.io/mod_h2/images/ie-h2.png)
|
||||||
|
|
||||||
|
#### Safari ####
|
||||||
|
|
||||||
|
In Apple's Safari, you open the Developer Tools and there the Network tab. Reload your server page and select the row in the Developer Tools that shows the load. If you enable the right side details view, look at the **Status**. It should show **HTTP/2.0 200** like here:
|
||||||
|
|
||||||
|
![](https://icing.github.io/mod_h2/images/safari-h2.png)
|
||||||
|
|
||||||
|
#### Renegotiations ####
|
||||||
|
|
||||||
|
Renegotiations on a https: connection means that certain TLS parameters are changed on the running connection. In Apache httpd you can change TLS parameters in directory configurations. If a request arrives for a resource in a certain location, configured TLS parameter are compared to the current TLS parameters. If they differ, renegotiation is triggered.
|
||||||
|
|
||||||
|
Most common use cases for this are cipher changes and client certificates. You can require clients to meet authentication only for special locations, or you might enable more secure, but CPU intensive ciphers for specific resources.
|
||||||
|
|
||||||
|
Whatever your good use cases are, renegotiation are a **MUST NOT** in HTTP/2. With 100s of requests ongoing on the same connection, which renegotiation would otherwise occur when?
|
||||||
|
|
||||||
|
The current **mod_h[ttp]2** does not protect you from such configuration. If you have a site which uses TLS renegotiation, DO NOT enable h2 on it!
|
||||||
|
|
||||||
|
Again, we will address that in future releases so that you can enable it safely.
|
||||||
|
|
||||||
|
### Restrictions ###
|
||||||
|
|
||||||
|
#### Non-HTTP Protocols ####
|
||||||
|
|
||||||
|
Modules implementing protocols other than HTTP may be incompatible with **mod_http2**. This will most certainly be the case when this other protocol requires the server to send data first.
|
||||||
|
|
||||||
|
**NNTP** is one example of such a protocol. If you have a **mod_nntp_like_ssl** configured in your server, do not even load mod_http2. Wait for the next release.
|
||||||
|
|
||||||
|
#### h2c Restrictions ####
|
||||||
|
|
||||||
|
There are some restrictions on the **h2c** implementation, you should be aware of:
|
||||||
|
|
||||||
|
#### Deny h2c on virtual host ####
|
||||||
|
|
||||||
|
You cannot deny **h2c direct** on specific virtual hosts. **direct** gets triggered at connection setup when there is not request to be seen yet. Which makes it impossible to foresee which virtual host Apache needs to look at.
|
||||||
|
|
||||||
|
#### Upgrade on request body ####
|
||||||
|
|
||||||
|
The **h2c** Upgrade dance will not work on requests that have a body. Those are PUT and POST requests (form submits and uploads). If you write a client, you may precede those requests with a simple GET or an OPTIONS * to trigger the upgrade.
|
||||||
|
|
||||||
|
The reason is quite technical in nature, but in case you want to know: during Upgrade, the connection is in a half insane state. The request is coming in HTTP/1.1 format and the response is being written in HTTP/2 frames. If the request carries a body, the server needs to read the whole body before it sends a response back. Because the response might need answers from the client for flow control among other things. But if the HTTP/1.1 request is still being sent, the client is unable to talk HTTP/2 yet.
|
||||||
|
|
||||||
|
In order to make behaviour predictable, several server implementors decided to not do an Upgrade in the presence of any request bodies, even small ones.
|
||||||
|
|
||||||
|
#### Upgrade on 302s ####
|
||||||
|
|
||||||
|
The h2c Upgrade dance also does currently not work when there is a general redirect in place. Seems that rewrite happens before the mod_http2 has a chance to act. Certainly not a deal breaker, but might be confusing when you test a site that has it.
|
||||||
|
|
||||||
|
#### h2 Restrictions ####
|
||||||
|
|
||||||
|
There are some restrictions on the h2 implementation you should be aware of:
|
||||||
|
|
||||||
|
#### Connection Reuse ####
|
||||||
|
|
||||||
|
The HTTP/2 protocol allows reuse of TLS connections under certain conditions: if you have a certiface with wildcards or several altSubject names, browsers will reuse any existing connection they might have. Example:
|
||||||
|
|
||||||
|
You have a certificate for **a.example.org** that has as additional name **b.example.org**. You open in your browser the url **https://a.example.org/**, open another tab and load **https://b.example.org/**.
|
||||||
|
|
||||||
|
Before opening a new connection, the browser sees that it still has the one to **a.example.org** open and that the certificate is also valid for **b.example.org**. So, it sends the request for second tab over the connection of the first one.
|
||||||
|
|
||||||
|
This connection reuse is intentional and makes it easier for sites that have invested in sharding for efficiency in HTTP/1 to also benefit from HTTP/2 without much change.
|
||||||
|
|
||||||
|
In Apache **mod_h[ttp]2** this is not fully implemented, yet. When **a.example.org** and **b.example.org** are separate virtual hosts, Apache will not allow such connection reuse and inform the browser with status code **421 Misdirected Request** about it. The browser will understand that it has to open a new connection to **b.example.org**. All will work, however some efficiency gets lost.
|
||||||
|
|
||||||
|
We expect to have the proper checks in place for the next release.
|
||||||
|
|
||||||
|
Münster, 12.10.2015,
|
||||||
|
|
||||||
|
Stefan Eissing, greenbytes GmbH
|
||||||
|
|
||||||
|
Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without warranty of any kind. See LICENSE for details.
|
||||||
|
|
||||||
|
|
||||||
|
----------
|
||||||
|
|
||||||
|
This project is maintained by [icing][13]
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
via: https://icing.github.io/mod_h2/howto.html
|
||||||
|
|
||||||
|
作者:[icing][a]
|
||||||
|
译者:[译者ID](https://github.com/译者ID)
|
||||||
|
校对:[校对者ID](https://github.com/校对者ID)
|
||||||
|
|
||||||
|
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||||
|
|
||||||
|
[a]:https://github.com/icing
|
||||||
|
[1]:https://httpd.apache.org/download.cgi
|
||||||
|
[2]:https://httpd.apache.org/docs/2.4/install.html
|
||||||
|
[3]:https://nghttp2.org/
|
||||||
|
[4]:https://icing.github.io/mod_h2/howto.html#https
|
||||||
|
[5]:https://icing.github.io/mod_h2/howto.html#h2c-restrictions
|
||||||
|
[6]:https://icing.github.io/mod_h2/howto.html#h2c-restrictions
|
||||||
|
[7]:https://httpwg.github.io/specs/rfc7540.html#BadCipherSuites
|
||||||
|
[8]:http://chimera.labs.oreilly.com/books/1230000000545
|
||||||
|
[9]:https://icing.github.io/mod_h2/howto.html#curl
|
||||||
|
[10]:https://icing.github.io/mod_h2/howto.html#curl
|
||||||
|
[11]:https://www.apachelounge.com/
|
||||||
|
[12]:https://addons.mozilla.org/en-US/firefox/addon/spdy-indicator/
|
||||||
|
[13]:https://github.com/icing
|
Loading…
Reference in New Issue
Block a user