Difference between revisions of "ApacheSetup"

From Cncz
Jump to: navigation, search
(Apache Setup)
(web-docs vervanen door htdocs)
Line 2: Line 2:
  
 
[nl]
 
[nl]
Om de beveiliging van websites te verbeteren gaan we over op een nieuwe opzet voor onze webservers. Tot voor kort was het gebruikelijk om op een webserver één apache httpd te draaien die middels apache virtual hosts meerdere websites afhandelt. Dat heeft een groot voordeel, alle websites delen de beschikbare pool van httpd processen, maar ook  meerdere (grote) nadelen met name wat betreft de onderlinge beveiliging tussen de websites en gemeenschappelijke log files.
+
Om de beveiliging van websites te verbeteren zijn we over gegaan op een nieuwe opzet voor onze webservers. Tot voor kort was het gebruikelijk om op een webserver één apache httpd te draaien die middels apache virtual hosts meerdere websites afhandelt. Dat heeft een groot voordeel, alle websites delen de beschikbare pool van httpd processen, maar ook  meerdere (grote) nadelen met name wat betreft de onderlinge beveiliging tussen de websites en gemeenschappelijke log files.
 
[/nl]
 
[/nl]
 
[en]
 
[en]
In order to improve the security of websites, we transition to a new setup for our webservers. Until recently  we had just one apache httpd running on a webserver. Different websites were served through the apache virtualhosts mechanism. The main advantage of running just one httpd is that all websites share the pool of httpd processes. The main disadvantages are inter-website security and shared log files.
+
In order to improve the security of websites, we have switched to a new setup for our webservers. Until recently  we had just one apache httpd running on a webserver. Different websites were served through the apache virtualhosts mechanism. The main advantage of running just one httpd is that all websites share the pool of httpd processes. The main disadvantages are inter-website security and shared log files.
 
[/en]
 
[/en]
  
 
[nl]
 
[nl]
De nieuwe opzet waarvoor op de webserver <TT>athos</TT> gekozen is, heeft deze nadelen niet. In plaats van virtual hosts files die door &eacute;&eacute;n apache server worden afgehandeld gebruiken we nu per website een eigen httpd met een aparte user per website. Dat heeft tot gevolg dat de bestanden in de web-docs directory niet langer leesbaar hoeven te zijn voor iedere gebruiker op de webserver. Bovendien gaat iedere website nu op een eigen ip-adres draaien wat tot gevolg heeft dat iedere website die https nodig heeft zijn eigen SSL-certificaat kan krijgen.
+
De nieuwe opzet waarvoor gekozen is, heeft deze nadelen niet. In plaats van virtual hosts files die door &eacute;&eacute;n apache server worden afgehandeld gebruiken we nu per website een eigen httpd met een aparte user per website. Dat heeft tot gevolg dat de bestanden in de htdocs directory niet langer leesbaar hoeven te zijn voor iedere gebruiker op de webserver. Bovendien gaat iedere website nu op een eigen ip-adres draaien wat tot gevolg heeft dat iedere website die https nodig heeft zijn eigen SSL-certificaat kan krijgen.
 
[/nl]
 
[/nl]
 
[en]
 
[en]
The new setup that is chosen on the webserver <TT>athos</TT>, doesn't have these disadvantages. Instead of virtual hosts files that are read by just one apache server, we now use a separate apache http for each website. This means that the files in the web-docs directory no longer have to be readable for every user on the webserver. Furthermore every website now gets its own IP address, which means that every website needing https can get its own certificate.
+
The new setup that is chosen doesn't have these disadvantages. Instead of virtual hosts files that are read by just one apache server, we now use a separate apache http for each website. This means that the files in the htdocs directory no longer have to be readable for every user on the webserver. Furthermore every website now gets its own IP address, which means that every website needing https can get its own certificate.
 
[/en]
 
[/en]
  
Line 19: Line 19:
 
* '''/var/www/www1/website'''
 
* '''/var/www/www1/website'''
 
top directory waarbinnen alle bestanden m.b.t. deze website zich bevinden
 
top directory waarbinnen alle bestanden m.b.t. deze website zich bevinden
* '''/var/www/www1/website/web-docs'''
+
* '''/var/www/www1/website/live/htdocs'''
De document root voor de website. De standaard situatie voor de web-docs directory wordt lees- en schrijfbaar voor de unix group met daarin alleen de users die de website beheren. Daarnaast heeft de user waaronder de website-specifieke httpd draait alleen leesrechten.
+
De document root voor de website. De standaard situatie voor de htdocs directory wordt lees- en schrijfbaar voor de unix group met daarin alleen de users die de website beheren. Daarnaast heeft de user waaronder de website-specifieke httpd draait alleen leesrechten.
* '''/var/www/www1/website/test-docs'''
+
* '''/var/www/www1/website/test/htdocs'''
 
De document root voor een test versie van de website, om bijvoorbeeld een nieuwe versie van de website uit te proberen voordat deze ''live''
 
De document root voor een test versie van de website, om bijvoorbeeld een nieuwe versie van de website uit te proberen voordat deze ''live''
gaat. Deze test-versie is bereikbaar via poort 8080, d.w.z. gebruik als URL: http://www.website.science.ru.nl:8080/
+
gaat. Deze test-versie is bereikbaar via poort 82, d.w.z. gebruik als URL: http://www.website.science.ru.nl:82/
en poort 4443 voor https, d.w.z. gebruik als URL: http://www.website.science.ru.nl:4443/ (merk op dat de echte site gebruik maakt van poort
+
en poort 4432 voor https, d.w.z. gebruik als URL: http://www.website.science.ru.nl:4432/ (merk op dat de echte site gebruik maakt van poort
80 voor http en poort 443 voor https). Lees- en schrijfrechten gelijk aan de web-docs directory.
+
80 voor http en poort 443 voor https). Lees- en schrijfrechten gelijk aan de live/htdocs directory.
* '''/var/www/www1/website/httpd/logs'''
+
* '''/var/www/www1/website/live/logs'''
 
De directory waarin de log-bestanden van de httpd voor deze website terecht komen met als belangrijkste access_log en error_log.
 
De directory waarin de log-bestanden van de httpd voor deze website terecht komen met als belangrijkste access_log en error_log.
 
Merk op dat wij er sterk op aandringen dat de eigenaren van de website zelf controleren wat er in met name error_log terecht komt en daarop actie ondernemen om de error_log zoveel mogelijk leeg te houden.
 
Merk op dat wij er sterk op aandringen dat de eigenaren van de website zelf controleren wat er in met name error_log terecht komt en daarop actie ondernemen om de error_log zoveel mogelijk leeg te houden.
* '''/var/www/www1/website/httpd-test/logs'''
+
* '''/var/www/www1/website/test/logs'''
 
Log-directory voor de test-versie van de website
 
Log-directory voor de test-versie van de website
* '''/var/www/www1/website/writable'''
+
* '''/var/www/www1/website/live/writable'''
 
Bij voorkeur de enige directory waar httpd in mag schrijven, standaard maken wij daar ook een ''sessions'' subdirectory in aan
 
Bij voorkeur de enige directory waar httpd in mag schrijven, standaard maken wij daar ook een ''sessions'' subdirectory in aan
 
die door php als session_save_path directory gebruikt wordt.
 
die door php als session_save_path directory gebruikt wordt.
 
Als er een schrijfbare directory nodig is in de website, maak die dan bij voorkeur in deze directory aan.
 
Als er een schrijfbare directory nodig is in de website, maak die dan bij voorkeur in deze directory aan.
* '''/var/www/www1/website/cgi-bin'''
+
* '''/var/www/www1/website/live/cgi-bin'''
 
De cgi-bin directory voor de website.
 
De cgi-bin directory voor de website.
* '''/var/www/www1/website/cgi-bin-test'''
+
* '''/var/www/www1/website/test/cgi-bin'''
 
En natuurlijk een voor de test-versie.
 
En natuurlijk een voor de test-versie.
 
[/nl]
 
[/nl]
Line 44: Line 44:
 
* '''/var/www/www1/website'''
 
* '''/var/www/www1/website'''
 
top directory which contains all files w.r.t. this website
 
top directory which contains all files w.r.t. this website
* '''/var/www/www1/website/web-docs'''
+
* '''/var/www/www1/website/live/htdocs'''
 
The document root for the website. The standard situation for the web-docs directory is that it is readable and writable by the unix group which only contains the users maintaining the website. Next to these users, only the user that runs the website-specific httpd can only read (not write) the files.
 
The document root for the website. The standard situation for the web-docs directory is that it is readable and writable by the unix group which only contains the users maintaining the website. Next to these users, only the user that runs the website-specific httpd can only read (not write) the files.
* '''/var/www/www1/website/test-docs'''
+
* '''/var/www/www1/website/test/htdocs'''
The document root for a test version of the website, e.g. to test a new version of the website before it goes   ''live''. This test-version is available via port 8080, meaning use as URL: http://www.website.science.ru.nl:8080/
+
The document root for a test version of the website, e.g. to test a new version of the website before it goes ''live''. This test-version is available via port 82, use as URL: http://www.website.science.ru.nl:82/
and port 4443 for https, meaning use as URL: http://www.website.science.ru.nl:4443/ (note that the real site uses port
+
and port 4432 for https, use as URL: http://www.website.science.ru.nl:4432/ (note that the real site uses port
80 for http and port 443 for https). Readable and writable by the same users that can read and/or write the web-docs directory.
+
80 for http and port 443 for https). Readable and writable by the same users that can read and/or write the htdocs directory.
* '''/var/www/www1/website/httpd/logs'''
+
* '''/var/www/www1/website/live/logs'''
 
The directory containing the log-files of the httpd for this website, the most important ones are access_log and error_log.
 
The directory containing the log-files of the httpd for this website, the most important ones are access_log and error_log.
 
Note that we strongly advise that the website owners themselves check the errors in error_log and take action  to remedy errors.
 
Note that we strongly advise that the website owners themselves check the errors in error_log and take action  to remedy errors.
* '''/var/www/www1/website/httpd-test/logs'''
+
* '''/var/www/www1/website/test/logs'''
 
Log-directory for the test-version of the website
 
Log-directory for the test-version of the website
* '''/var/www/www1/website/writable'''
+
* '''/var/www/www1/website/live/writable'''
 
Preferably the only directory in which the httpd for this website can write, the standard setup has a 'sessions' subdirectory that is used by php as a session_save_path directory.
 
Preferably the only directory in which the httpd for this website can write, the standard setup has a 'sessions' subdirectory that is used by php as a session_save_path directory.
 
If the website needs a writable directory, please make it in this directory.
 
If the website needs a writable directory, please make it in this directory.
* '''/var/www/www1/website/cgi-bin'''
+
* '''/var/www/www1/website/live/cgi-bin'''
 
The cgi-bin directory for the website.
 
The cgi-bin directory for the website.
* '''/var/www/www1/website/cgi-bin-test'''
+
* '''/var/www/www1/website/test/cgi-bin'''
 
And of course a cgi-bin directory for the test-version.
 
And of course a cgi-bin directory for the test-version.
 
[/en]
 
[/en]
Line 72: Line 72:
  
 
[nl]
 
[nl]
Aankoppelen gaat (onder Windows) via \\www.website.science.ru.nl\wwwwebsite, van buiten de campus kan dat alleen met gebruik van [[vpn]] of nog sneller en eenvoudiger met WinSCP naar lilo.science.ru.nl of stitch.science.ru.nl in de directory /www/website.  
+
Aankoppelen gaat (onder Windows) via \\www.website.science.ru.nl\wwwwebsite, van buiten de campus kan dat alleen met gebruik van [[vpn]] of nog sneller en eenvoudiger met WinSCP naar lilo.science.ru.nl in de directory /www/website.  
 
[/nl]
 
[/nl]
 
[en]
 
[en]
 
The network drive (for Windows) is \\www.website.science.ru.nl\wwwwebsite, for off-campus usage this can only be done through [[vpn]] or easier and faster with WinSCP to lilo.science.ru.nl in the directory /www/website.
 
The network drive (for Windows) is \\www.website.science.ru.nl\wwwwebsite, for off-campus usage this can only be done through [[vpn]] or easier and faster with WinSCP to lilo.science.ru.nl in the directory /www/website.
 
[/en]
 
[/en]

Revision as of 10:08, 10 December 2014

Apache Setup

In order to improve the security of websites, we have switched to a new setup for our webservers. Until recently we had just one apache httpd running on a webserver. Different websites were served through the apache virtualhosts mechanism. The main advantage of running just one httpd is that all websites share the pool of httpd processes. The main disadvantages are inter-website security and shared log files.

The new setup that is chosen doesn't have these disadvantages. Instead of virtual hosts files that are read by just one apache server, we now use a separate apache http for each website. This means that the files in the htdocs directory no longer have to be readable for every user on the webserver. Furthermore every website now gets its own IP address, which means that every website needing https can get its own certificate.

The new directory structure looks like (we use website as an example name):

  • /var/www/www1/website

top directory which contains all files w.r.t. this website

  • /var/www/www1/website/live/htdocs

The document root for the website. The standard situation for the web-docs directory is that it is readable and writable by the unix group which only contains the users maintaining the website. Next to these users, only the user that runs the website-specific httpd can only read (not write) the files.

  • /var/www/www1/website/test/htdocs

The document root for a test version of the website, e.g. to test a new version of the website before it goes live. This test-version is available via port 82, use as URL: http://www.website.science.ru.nl:82/ and port 4432 for https, use as URL: http://www.website.science.ru.nl:4432/ (note that the real site uses port 80 for http and port 443 for https). Readable and writable by the same users that can read and/or write the htdocs directory.

  • /var/www/www1/website/live/logs

The directory containing the log-files of the httpd for this website, the most important ones are access_log and error_log. Note that we strongly advise that the website owners themselves check the errors in error_log and take action to remedy errors.

  • /var/www/www1/website/test/logs

Log-directory for the test-version of the website

  • /var/www/www1/website/live/writable

Preferably the only directory in which the httpd for this website can write, the standard setup has a 'sessions' subdirectory that is used by php as a session_save_path directory. If the website needs a writable directory, please make it in this directory.

  • /var/www/www1/website/live/cgi-bin

The cgi-bin directory for the website.

  • /var/www/www1/website/test/cgi-bin

And of course a cgi-bin directory for the test-version.

Avoid the usage of absolute paths in web pages, this makes it much more troublesome to move the website, because in that case the web pages need to be changed!

The network drive (for Windows) is \\www.website.science.ru.nl\wwwwebsite, for off-campus usage this can only be done through vpn or easier and faster with WinSCP to lilo.science.ru.nl in the directory /www/website.