Pkgi est écrit dans un but de lancer l'application sous un user unix non root. Ceci est un gros avantage en terme de sécurité et de maintenance. Cependant l'inconvénient est qu'il n'est pas possible d'écouter sur un port < 1024 et en particulier, le serveur apache ne pourra pas écouter sur le port 80.
Si vous souhaitez absolument lancer le serveur apache sur le port 80 (c'est le cas si vous ne disposez pas de reverse proxy en amont) alors il existe une solution plus propre que de lancer l'application tout entière en tant que root. La solution passe par une utilisation restreinte de la commande sudo :
/usr/sbin/apache2ctl (utilisée pour contrôler le démon apache)pkgi/apache/usr/sbin/apache2ctl
Je suppose ici que votre utilisateur applicatif se nomme monappli. Ajoutez la ligne suivante dans le fichier /etc/sudoers pour lui donner les droits root uniquement sur la commande /usr/sbin/apache2ctl :
monappli ALL = NOPASSWD: /usr/sbin/apache2ctl
Intervenez de préférence dans votre module pkgi applicatif et surchargez le fichier suivant :
pkgi/apache/usr/sbin/apache2ctl
Rajoutez alors sudo en début de ligne comme ceci :
<?php echo '#!/bin/bash'; ?> sudo /usr/sbin/apache2ctl -f <?php echo getenv('APPNAME_HOME') ?>/etc/apache2/apache2.conf $*
Relancez ensuite ./pkgi/build et lancez votre serveur ./etc/init.d/apache2 start