summaryrefslogtreecommitdiff
path: root/web-server/README-webserver.md
diff options
context:
space:
mode:
Diffstat (limited to 'web-server/README-webserver.md')
-rw-r--r--web-server/README-webserver.md84
1 files changed, 84 insertions, 0 deletions
diff --git a/web-server/README-webserver.md b/web-server/README-webserver.md
new file mode 100644
index 0000000..3f59fe8
--- /dev/null
+++ b/web-server/README-webserver.md
@@ -0,0 +1,84 @@
+# GNU Savannah Git-WWW project - WebServer Configuration
+
+The Web-Server is the public facing 'http://gnu.org' and 'http://nongnu.org'.
+
+To minimize the amount of work required from FSF sys-admins,
+most of the existing configuration stays the same:
+ /etc/apache2/sites-enabled/*.conf
+ /etc/apache2/symlinks
+ /home/wwwcvs/update-* scripts (to update/generate symlinks)
+ /var/www/
+ /var/www/savannah-checkouts/gnu - projects under gnu.org/software/XXX
+ /var/www/savannah-checkouts/non-gnu - projects under nongnu.org/XXX
+ /var/www/savannah-checkouts/translations - translation web files.
+
+The files in `./webserver/wwwcvs-orig-files` are the configuration files
+that are currently being used for gnu.org (to the best of my knowledge),
+see: <https://savannah.gnu.org/task/?13200> .
+
+The files in `./webserver/home-wwwcvs` are the same original update scripts
+with very minor changes (e.g. adding '-L' to the `find` command).
+
+The files in `./webserver/apache-conf` are the same original apache configuration
+files, with minor changes (e.g. working on 'gnu.housegordon.org' instead of 'gnu.org').
+
+TODO:
+One major difference is the mechanism to notify the webserver about new projects.
+The current server uses a 'new.py' hack.
+In the new setup there's no established method yet,
+but since the wwwgit server has a page with recently updated projects,
+The update scripts on this server can simply create new project when they see one.
+
+
+## Manual configuration
+
+ # Create wwwcvs user
+ sudo adduser wwwcvs
+ # TODO: make it member of www-data group ?
+
+ # Apache configuration
+ sudo a2enmod vhost_alias
+ sudo cp ./apache-conf/* /etc/apache2/sites-available/
+ sudo a2ensite 010-www.gnu.org
+ sudo a2ensite 025-www.nongnu.org
+ sudo a2ensite 030-star.nongnu.org
+
+ # Custom Language/Multiviews configuration
+ sudo cp ./apache-conf.d/* /etc/apache2/cond.d/
+
+ # Copy and setup symlink-update scripts
+ sudo mkdir /etc/apache2/symlinks
+ sudo chown wwwcvs:wwwcvs /etc/apache2/symlinks
+ sudo cp ./home-wwwcvs/update-* /home/wwwcvs
+ sudo chown wwwcvs:wwwcvs /home/wwwcvs/update-*
+
+ # create important directories
+ # TODO: which user should own these? wwwcvs probably...
+ sudo mkdir /var/lib/savannah-checkouts/
+
+ # Create a project list file on 'internal.sv.gnu.org',
+ # Using `create-projects-list.sh` script (see `savannah` directory).
+ # Copy the file to this server.
+ # TODO: where to store it? perhaps /home/wwwcvs ?
+
+ # TODO: copy these update scripts to /home/wwwcvs ?
+ # Fetch all projects for the first time.
+ # NOTE: this will take some time...
+ ./update-scripts/create-gnu-sv-www-repo.sh
+
+
+ # Test project updates:
+
+ # Update all repositories:
+ update-all-gnu-sv-www-repo.sh
+
+ # Or update only recently changed repositories:
+ update-recent-gnu-sv-www-repo.sh
+
+
+## Scripts to update the server after every update
+
+ # Update the symlinks maps in
+ # /etc/apache2/symlinks
+ # based on the ".symlinks" file in each repository.
+ sudo -u wwwcvs /home/wwwcvs/update-symlinks.sh