Revision: 862
          
http://svn.savannah.gnu.org/viewvc/?view=rev&root=administration&revision=862
Author:   ineiev
Date:     2026-03-18 08:26:17 -0400 (Wed, 18 Mar 2026)
Log Message:
-----------
partially update on Apache-to-nginx migration

Modified Paths:
--------------
    trunk/sviki/FrontEndDevelopmentSite.mdwn
    trunk/sviki/FrontEndHostRedirection.mdwn
    trunk/sviki/FrontEndSetup.mdwn
    trunk/sviki/HomePage.mdwn
    trunk/sviki/HomepageAvailabilityOfPhpAndMysql.mdwn
    trunk/sviki/HomepageUpload.mdwn
    trunk/sviki/HowToAdminThisWiki.mdwn
    trunk/sviki/MailSystem.mdwn
    trunk/sviki/SavannahHosts.mdwn
    trunk/sviki/SavannahServices.mdwn
    trunk/sviki/Stats.mdwn
    trunk/sviki/https.mdwn

Modified: trunk/sviki/FrontEndDevelopmentSite.mdwn
===================================================================
--- trunk/sviki/FrontEndDevelopmentSite.mdwn    2026-01-12 19:53:02 UTC (rev 
861)
+++ trunk/sviki/FrontEndDevelopmentSite.mdwn    2026-03-18 12:26:17 UTC (rev 
862)
@@ -1,6 +1,11 @@
 FrontEnd Development Sites
 ==========================
 
+*This page is obsolete.  First, since 2025-12, frontend uses nginx rather than
+Apache; second, Savane is quite easy to [[setup locally|RunndingSavaneLocally]]
+if anyone wants to work on it; then, the idea about giving per-user development
+sites has never been really implemented.*
+
 With the new servers we aim to provide development copies of the frontend's PHP
 code, enabling savannah admins/volunteers to develop features and fix bugs more
 quickly.

Modified: trunk/sviki/FrontEndHostRedirection.mdwn
===================================================================
--- trunk/sviki/FrontEndHostRedirection.mdwn    2026-01-12 19:53:02 UTC (rev 
861)
+++ trunk/sviki/FrontEndHostRedirection.mdwn    2026-03-18 12:26:17 UTC (rev 
862)
@@ -1,5 +1,4 @@
-FrontEnd GNU/NONGNU host redirection
-====================================
+# FrontEnd GNU/NONGNU host redirection
 
 Savannah handles three types of hosts redirection:
 
@@ -12,11 +11,10 @@
     `file.savannah.gnu.org/submission-uploads/`) and non-file requests
    from `file.savannah.*.org` to the original domain.
 
-Shortcut URL redirection
-------------------------
+## Shortcut URL redirection
 
 Shortcurt URL redirection (.e.g `*.sv.gnu.org` => `*.savannah.gnu.org`)
-is handled entirely in the Apache configuration.
+is handled entirely in the web server configuration.
 
 This would've been simple, if it were't for two complications:
 
@@ -34,102 +32,10 @@
    while still requiring that <https://sv.gnu.org/p/coreutils>
    redirects to the full <https://savannah.gnu.org/p/coreutils>.
 
-The [[FrontEndDevelopmentSite]] currently uses the following method:
+FIXME: Document the nginx setup for the production website.
 
-    <VirtualHost *:80>
-       ServerName   jsmith.frontend0.savannah.gnu.org
-       ServerAlias  jsmith.frontend0.savannah.nongnu.org
-       ServerAlias  jsmith.frontend0.sv.gnu.org
-       ServerAlias  jsmith.frontend0.sv.nongnu.org
+## GNU/NONGNU redirection
 
-       <If "%{HTTP_HOST} == 'jsmith.frontend0.savannah.gnu.org' && 
%{REQUEST_URI} !~ /\.well-known/" >
-        RedirectMatch "(.*)" https://jsmith.frontend0.savannah.gnu.org$1
-       </If>
-       <ElseIf "%{HTTP_HOST} == 'jsmith.frontend0.savannah.gnu.org' && 
%{REQUEST_URI} !~ /\.well-known/" >
-        RedirectMatch "(.*)" https://jsmith.frontend0.savannah.nongnu.org$1
-       </ElseIf>
-       <ElseIf "%{HTTP_HOST} == 'jsmith.frontend0.sv.gnu.org' && 
%{REQUEST_URI} !~ /\.well-known/" >
-        RedirectMatch "(.*)" https://jsmith.frontend0.savannah.gnu.org$1
-       </ElseIf>
-       <ElseIf "%{HTTP_HOST} == 'jsmith.frontend0.sv.nongnu.org' && 
%{REQUEST_URI} !~ /\.well-known/" >
-        RedirectMatch "(.*)" https://jsmith.frontend0.savannah.nongnu.org$1
-       </ElseIf>
-       Include sites-available/certbot-wellknown.inc
-    </VirtualHost>
-
-
-    <VirtualHost *:443>
-      ServerAlias jsmith.frontend0.sv.gnu.org
-      ServerAlias jsmith.frontend0.sv.nongnu.org
-      ServerName  jsmith.frontend0.savannah.gnu.org
-      ServerAlias jsmith.frontend0.savannah.nongnu.org
-
-      <If "%{HTTP_HOST} == 'jsmith.frontend0.savannah.gnu.org'">
-        SetEnv SAVANE_CONF /home/jsmith/savannah/etc/savane/
-      </If>
-      <ElseIf "%{HTTP_HOST} == 'jsmith.frontend0.savannah.nongnu.org'">
-        SetEnv SAVANE_CONF /home/jsmith/savannah/etc/savane/nongnu-conf/
-      </ElseIf>
-      # If the '.sv.gnu.org' shortcut is used, redirect to the full
-      # '.savannah.gnu.org' URL.
-      <ElseIf "%{HTTP_HOST} == 'jsmith.frontend0.sv.gnu.org'">
-        RedirectMatch "(.*)" https://jsmith.frontend0.savannah.gnu.org$1
-      </ElseIf>
-      <ElseIf "%{HTTP_HOST} == 'jsmith.frontend0.sv.nongnu.org'">
-        RedirectMatch "(.*)" https://jsmith.frontend0.savannah.nongnu.org$1
-      </ElseIf>
-      [...]
-    </VirtualHost>
-
-Note that certbot's configuration uses `Alias`, which has lower precedence
-in Apache than `RedirectMatch` - requiring some fiddling with the conditions.
-
-FIXME: If there's a better configuration, please write to
[email protected] .
-
-FIXME: Document the Apache setup for the production website, which use:
-
-     sites-enabled/000-vhosts-gnu.org.conf -> ../sites-available/vhosts-gnu.org
-     sites-enabled/vhosts-nongnu.org.conf -> 
../sites-available/vhosts-nongnu.org
-
-     # in sites-available/vhosts-gnu.org:
-     <VirtualHost *:80>
-       Include sites-available/sv.gnu.inc
-     </VirtualHost>
-     <VirtualHost *:443>
-      Include sites-available/sv.gnu.inc
-     </VirtualHost>
-     <VirtualHost *:443>
-       ServerName frontend0.savannah.gnu.org
-       Include sites-available/sv.inc
-     </VirtualHost>
-
-     # in sites-available/vhosts-nongnu.org:
-     <VirtualHost *:80>
-       Include sites-available/sv.nongnu.inc
-     </VirtualHost>
-     <VirtualHost *:443>
-       Include sites-available/sv.nongnu.inc
-     </VirtualHost>
-     <VirtualHost *:443>
-       ServerName frontend0.savannah.nongnu.org
-       SetEnv SV_LOCAL_INC_PREFIX /etc/savane/nongnu-conf
-       Include sites-available/sv.inc
-     </VirtualHost>
-
-     # in sites-available/sv.gnu.inc:
-     ServerName savannah.gnu.org
-     Include sites-available/sv.inc
-
-     # in sites-available/sv.nongnu.org:
-     ServerName savannah.nongnu.org
-     SetEnv SV_LOCAL_INC_PREFIX /etc/savane/nongnu-conf
-     Include sites-available/sv.inc
-
-
-GNU/NONGNU redirection
-----------------------
-
 gnu/nongnu redirection is handled entirely in the PHP code, based on
 whether the viewed group belongs in GNU or not (sometimes referred
 to as 'brother' site in the code/config files).
@@ -138,12 +44,10 @@
 they are redirected to <https://savannah.gnu.org/projects/coreutils>
 because coreutils is an official GNU package.
 
-
 ### Enabling/Disabling redirection
 
-In `.savane.conf.php`, setting the boolean variable
-`$sys_debug_nobasehost` to `true` disables redirection completely -
-useful for [[FrontEndDevelopmentSite]].
+In `/etc/savane/savane.conf.php`, setting the boolean variable
+`$sys_debug_nobasehost` to `true` disables redirection completely.
 
 
 ### Group-based redirection
@@ -166,35 +70,6 @@
     +---------+------------------------------------+---------------------+
     5 rows in set (0.00 sec)
 
-Meaning: if redirection is enabled on a development site, these values
-will cause redirection to the real website.
-
-To test redirection on a [[FrontEndDevelopmentSite]], do the following
-(*on a development database copy, never on the real database `savane`*):
-
-    mysql> update group_type set base_host = 
"jsmith.frontend0.savannah.gnu.org" where type_id in (1,3,6);
-    Query OK, 3 rows affected (0.00 sec)
-    Rows matched: 3  Changed: 3  Warnings: 0
-
-    mysql> update group_type set base_host = 
"jsmith.frontend0.savannah.nongnu.org" where type_id in (2,4);
-    Query OK, 2 rows affected (0.00 sec)
-    Rows matched: 2  Changed: 2  Warnings: 0
-
-    mysql> select type_id, name, base_host from group_type ;
-    
+---------+------------------------------------+--------------------------------------+
-    | type_id | name                               | base_host                 
           |
-    
+---------+------------------------------------+--------------------------------------+
-    |       1 | Official GNU software              | 
jsmith.frontend0.savannah.gnu.org    |
-    |       2 | non-GNU software and documentation | 
jsmith.frontend0.savannah.nongnu.org |
-    |       3 | www.gnu.org portions               | 
jsmith.frontend0.savannah.gnu.org    |
-    |       4 | GUG                                | 
jsmith.frontend0.savannah.nongnu.org |
-    |       6 | www.gnu.org translation teams      | 
jsmith.frontend0.savannah.gnu.org    |
-    
+---------+------------------------------------+--------------------------------------+
-    5 rows in set (0.00 sec)
-
-Then set `$sys_debug_nobasehost=false;` the development `.savane.conf.php` 
file.
-
-
 ### PHP Code
 
 The variable `$sys_debug_nobasehost` is mentioned in the following files:
@@ -217,8 +92,7 @@
      }
 
 
-Auto-login to 'brother' site
-----------------------------
+## Auto-login to 'brother' site
 
 When a user visits the login page on
 <https://savannah.gnu.org/account/login.php>, there's is a check-box
@@ -225,7 +99,7 @@
 at the bottom of the page asking for "Login also in
 savannah.nongnu.org".
 
-This is called a "brother" site in the code and config files.
+This is called a 'brother' site in the code and config files.
 It is implemented using several HTTP redirects from
 one site to the other (e.g from the default 'savannah.gnu.org'
 to 'savannah.nongnu.org') sending hashed session IDs back and
@@ -233,43 +107,25 @@
 physical server and share PHP session cookies).
 
 
-In `/etc/savane/.savane.conf.php` there are these two variables:
+In `/etc/savane/savane.conf.php` there are these two variables:
 
     $sys_default_domain="savannah.gnu.org";
     $sys_brother_domain="savannah.nongnu.org";
-    $sys_incdir="/etc/savane/content/gnu-content";
 
-In the correspnding `/etc/savane/nongnu-conf/.savane.conf.php` the
+In the correspnding `/etc/savane/nongnu-conf/savane.conf.php` the
 default/brother hosts are swapped:
 
     $sys_default_domain="frontend0.savannah.nongnu.org";
     $sys_https_host="$sys_default_domain";
     $sys_brother_domain="frontend0.savannah.gnu.org";
-    $sys_incdir="/etc/savane/content/nongnu-content";
 
+The nginx configuration must be set appropriately for each domain.
 
-If using a development site [[FrontEndDevelopmentSite]],
-use the following in `/home/jsmith/savannah/etc/savane/.savane.conf.php`:
-
-    $sys_default_domain="jsmith.frontend0.savannah.gnu.org";
-    $sys_brother_domain="jsmith.frontend0.savannah.nongnu.org";
-    $sys_incdir="/home/jsmith/savannah/etc/savane/content/gnu-content";
-
-and in `/home/jsmith/savannah/etc/savane/nongnu-conf/.savane.conf.php`:
-
-    $sys_default_domain="jsmith.frontend0.savannah.nongnu.org";
-    $sys_https_host="$sys_default_domain";
-    $sys_brother_domain="jsmith.frontend0.savannah.gnu.org";
-    $sys_incdir="/home/jsmith/savannah/etc/savane/content/nongnu-content";
-
-The Apache configuration must be set appropriately for each domain.
-See `SAVANE_CONF` settings above.
-
 *NOTE*:
 If the "login to [brother] set" checkbox is set,
 Savannah will do the redirection even if the variable is set
 (`$sys_debug_nobasehost=true`).
-If you forget to update the settings in `nongnu-conf/.savane.conf.php`,
+If you forget to update the settings in `nongnu-conf/savane.conf.php`,
 you might get redirected to the real website (e.g. `savannah.nongnu.org`),
 which will not only confuse things, but will also cause troubles
 with cookie authentication (you'll see an error message saying
@@ -288,26 +144,9 @@
    that `$from_brother=1`, and will set the cookie/session for this domain
    as well, then redirect back to `savannah.gnu.org/`.
 
-File redirection
-----------------
+## File redirection
 
 Since July 2020, Savannah serves user-supplied files from a separate
-domain for security reasons.  Old URLs are redirected to that domain,
-non-file requests are redirected to the main domain.
-
-    ServerAlias file.savannah.gnu.org
-
-    <If "%{HTTP_HOST} == 'savannah.gnu.org'">
-      RedirectPermanent /submissions_uploads/ \
-        https://file.savannah.gnu.org/submissions_uploads/
-      RedirectPermanent /file https://file.savannah.gnu.org/file
-    </If>
-    <If "%{REQUEST_URI} =~ m#^/((submissions_uploads/)|(file((/.*)?)$))#">
-      # Empty section: the server will redirect when %{REQUEST_URI}
-      # does _not_ match the above regular expression.
-    </If>
-    <ElseIf "%{HTTP_HOST} == 'file.savannah.gnu.org'">
-      RedirectPermanent / https://savannah.gnu.org/
-    </ElseIf>
-
-Likewise, for savanah.nongnu.org.
+domain (file.savannah.{non,}gnu.org) for security reasons.  Old URLs
+are redirected to that domain, non-file requests are redirected
+to the main domain (savannah.{non,}gnu.org).

Modified: trunk/sviki/FrontEndSetup.mdwn
===================================================================
--- trunk/sviki/FrontEndSetup.mdwn      2026-01-12 19:53:02 UTC (rev 861)
+++ trunk/sviki/FrontEndSetup.mdwn      2026-03-18 12:26:17 UTC (rev 862)
@@ -34,6 +34,8 @@
 
 ## Apache/PHP configuration file location
 
+*This section os obsolete.  Since late 2025-12, frontend uses nginx.*
+
 `init.php` accepts a fallback variable `SV_LOCAL_INC_PREFIX`, which
 is referenced in sites-available/vhosts-nongnu.inc:
 `SetEnv SV_LOCAL_INC_PREFIX /etc/savane/nongnu-conf`.

Modified: trunk/sviki/HomePage.mdwn
===================================================================
--- trunk/sviki/HomePage.mdwn   2026-01-12 19:53:02 UTC (rev 861)
+++ trunk/sviki/HomePage.mdwn   2026-03-18 12:26:17 UTC (rev 862)
@@ -21,8 +21,8 @@
 "there's also the fact that CVS doesn't handle symlinks") - use
 .symlinks instead.  Add a file named .symlinks in each directory where
 you want to make symbolic links.  Each line of the file lists a real
-file name followed by the name of the symbolic link.  The symbolic
-links are built every hour.
+file name, a directory or an external URL followed by the name
+of the symbolic link.  The symbolic links are built twice an hour.
 
 ## .htaccess
 

Modified: trunk/sviki/HomepageAvailabilityOfPhpAndMysql.mdwn
===================================================================
--- trunk/sviki/HomepageAvailabilityOfPhpAndMysql.mdwn  2026-01-12 19:53:02 UTC 
(rev 861)
+++ trunk/sviki/HomepageAvailabilityOfPhpAndMysql.mdwn  2026-03-18 12:26:17 UTC 
(rev 862)
@@ -1,11 +1,14 @@
-Neither PHP nor MySQL are available for projects' web pages on Savannah.
+# Tools for Savannah group web pages
+
+See also: [[HomePage]].
+
+Neither PHP nor MySQL are available for group web pages on Savannah.
 We could offer this facility if anyone is ready to volunteer to maintain
 this for Savannah and gnu.org in the long run. Installing it is not a
 big deal; however, making sure it actually works as expected day after
 day requires lot of attention (and perpetual worry).
 
-The same goes for Perl, Python, or any other CGI.  Apache SSI is
-available.
+The same goes for Perl, Python, or any other CGI.  SSI is available.
 
 An excerpt from a mail exchange with (past FSF sysadmin) James Blair:
 
@@ -19,8 +22,7 @@
         at the moment, and I'm not sure we should be adding any more
         work for them.
 
-Comments
---------
+## Comments
 
 **sandboxing and virtualization** --foo, Thu, 23 Sep 2010 23:38:19 +0000
 

Modified: trunk/sviki/HomepageUpload.mdwn
===================================================================
--- trunk/sviki/HomepageUpload.mdwn     2026-01-12 19:53:02 UTC (rev 861)
+++ trunk/sviki/HomepageUpload.mdwn     2026-03-18 12:26:17 UTC (rev 862)
@@ -65,15 +65,19 @@
 
 A successful call should result in an empty HTTP-200, e.g.:
 
-    # curl -D /dev/stderr http://www.gnu.org/new-savannah-project/new.py -s -F 
type=non-gnu -F project=pretest 2>&1   
+    # curl -D /dev/stderr http://www.gnu.org/new-savannah-project/new.py \
+      -s -F type=non-gnu -F project=pretest 2>&1
     HTTP/1.1 100 Continue
 
     HTTP/1.1 200 OK
-    Date: Thu, 01 Dec 2016 04:29:15 GMT
-    Server: Apache/2.4.7
+    Date: Wed, 18 Mar 2026 12:08:26 GMT
+    Server: Apache
+    Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
+    X-Frame-Options: sameorigin
+    X-Content-Type-Options: nosniff
     Access-Control-Allow-Origin: (null)
     Cache-Control: max-age=0
-    Expires: Thu, 01 Dec 2016 04:29:15 GMT
+    Expires: Wed, 18 Mar 2026 12:08:26 GMT
     Content-Length: 0
     Content-Type: text/html
     Content-Language: en

Modified: trunk/sviki/HowToAdminThisWiki.mdwn
===================================================================
--- trunk/sviki/HowToAdminThisWiki.mdwn 2026-01-12 19:53:02 UTC (rev 861)
+++ trunk/sviki/HowToAdminThisWiki.mdwn 2026-03-18 12:26:17 UTC (rev 862)
@@ -300,6 +300,9 @@
 
 ### Apache configuration
 
+*This section is outdated.  Since late 2025-12, sviki uses nginx rather than
+Apache.*
+
 If you have an apache server running locally, the following configuration
 mimics the GNU Savannah settings:
 

Modified: trunk/sviki/MailSystem.mdwn
===================================================================
--- trunk/sviki/MailSystem.mdwn 2026-01-12 19:53:02 UTC (rev 861)
+++ trunk/sviki/MailSystem.mdwn 2026-03-18 12:26:17 UTC (rev 862)
@@ -85,11 +85,11 @@
 (postfix on those systems) and then out to eggs.gnu.org, then to
 lists.gnu.org and out to the mailing list for delivery.
 
-If there is an error in sending, PHP and Apache combination should
-log an error to the frontend1:/var/log/apache2/error.log file.
+If there is an error in sending, PHP and nginx combination should
+log an error to the frontend2:/var/log/nginx/error.log file.
 
 All of the mail status should be logged to
-`frontend1:/var/log/mail.*`.  When a message is sent, you should see
+`frontend2:/var/log/mail.*`.  When a message is sent, you should see
 the transaction logged there.
 
 Logs are rotated.  If you are looking back into the past you will need

Modified: trunk/sviki/SavannahHosts.mdwn
===================================================================
--- trunk/sviki/SavannahHosts.mdwn      2026-01-12 19:53:02 UTC (rev 861)
+++ trunk/sviki/SavannahHosts.mdwn      2026-03-18 12:26:17 UTC (rev 862)
@@ -627,7 +627,7 @@
 to enable safer troubleshooting of database issues
 (see `internal0:/root/agn/create-savane-readonly-user.sh` for full details)
 
-   GRANT SELECT, SHOW VIEW ON savane.* TO [email protected] 
IDENTIFIED BY '******';
+   GRANT SELECT, SHOW VIEW ON savane.\* TO 
[email protected] IDENTIFIED BY '******';
 
 To remove and discard an access revoke it.
 
@@ -652,8 +652,11 @@
     /root/ChangeLog : -u : [email protected]
     /root/.ssh/authorized_keys : -u : [email protected]
 
-## Host frontend1
+## Host frontend
 
+*This section is outdated.  Since 2025-12, frontend uses nginx rather than
+Apache.*
+
 The IPv4 address for frontend1 is 209.51.188.72.  It does not
 currently have an IPv6 address.  This is needed to provide universal
 access to Savannah and is yet to be allocated.  It also needs a
@@ -683,7 +686,7 @@
       database        = savane
     chmod go-rw /root/.my.cnf
 
-Install Apache and PHP7.  As a future direction I (Bob Proulx) would
+Install Apache and PHP.  As a future direction I (Bob Proulx) would
 much prefer this to be Nginx and FPM.
 
     apt-get install apache2 apache2-mpm-prefork

Modified: trunk/sviki/SavannahServices.mdwn
===================================================================
--- trunk/sviki/SavannahServices.mdwn   2026-01-12 19:53:02 UTC (rev 861)
+++ trunk/sviki/SavannahServices.mdwn   2026-03-18 12:26:17 UTC (rev 862)
@@ -33,7 +33,7 @@
 
 - Main page: <https://savannah.gnu.org> and <https://savannah.nongnu.org>.
 
-- Apache local setup in `/etc/apache2/sites-available/` is under Git.
+- nginx local setup in `/etc/apache2/sites-available/` is under Git.
 
 - PHP code runs defined in `frontend2:/etc/apache2/sites-available/sv.inc`,
   stored in `frontend2:/var/www/savane/frontend/php/`.

Modified: trunk/sviki/Stats.mdwn
===================================================================
--- trunk/sviki/Stats.mdwn      2026-01-12 19:53:02 UTC (rev 861)
+++ trunk/sviki/Stats.mdwn      2026-03-18 12:26:17 UTC (rev 862)
@@ -1,5 +1,4 @@
-Admin stats
------------
+## Admin stats
 
 A word of warning: try not to compare VCSs using the stats provided
 here: first, they are partial (only HTTP), and second, each VCS has its
@@ -53,13 +52,8 @@
     Average number of concurrent users, frequency of commits, frequency
     all users exit, etc.?". It would be good to be able answer such
     questions.
--   Apache:
-    <http://savannah.gnu.org/server-status/>
--   PHP XCache:
-    <http://savannah.gnu.org/xcache/>
 
-User stats
-----------
+## User stats
 
 We have about no stats. It would be good to fix that eventually.
 
@@ -75,6 +69,6 @@
 >     descriptors is likely to break). Now that we have mirrors this may
 >     not be much relevant anyway.
 
-#### subtopics:
+### subtopics:
 
 -   [[SqlQueries]]

Modified: trunk/sviki/https.mdwn
===================================================================
--- trunk/sviki/https.mdwn      2026-01-12 19:53:02 UTC (rev 861)
+++ trunk/sviki/https.mdwn      2026-03-18 12:26:17 UTC (rev 862)
@@ -243,8 +243,11 @@
             # Many more SSL-specific configuration
 
 
-### Frontend0 apache configuration
+### Frontend apache configuration
 
+*This section is outdated.  Since late 2025-12, frontend uses nginx
+rather than Apache*
+
 The majority of the Apache configurations are in
 `/etc/apache2/sites-available/sv.inc`.  However this file does *not*
 contain SSL configuration - as it is included twice in other files


Reply via email to