--Installez le package apache2 sur Ubuntu
Installez le package apache2.
$ sudo apt install apache2
Vérifiez la version.
$ /usr/sbin/apachectl -V
Server version: Apache/2.4.41 (Ubuntu)
Server built: 2019-08-14T14:36:32
Server's Module Magic Number: 20120211:88
Server loaded: APR 1.6.5, APR-UTIL 1.6.1
Compiled using: APR 1.6.5, APR-UTIL 1.6.1
Architecture: 64-bit
Server MPM: event
threaded: yes (fixed thread count)
forked: yes (variable process count)
Server compiled with....
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=256
-D HTTPD_ROOT="/etc/apache2"
-D SUEXEC_BIN="/usr/lib/apache2/suexec"
-D DEFAULT_PIDLOG="/var/run/apache2.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="mime.types"
-D SERVER_CONFIG_FILE="apache2.conf"
Vérifiez qu'il fonctionne en y accédant avec curl etc.
$ curl -I http://localhost/
HTTP/1.1 200 OK
Date: Tue, 21 Jan 2020 10:47:37 GMT
Server: Apache/2.4.41 (Ubuntu)
Last-Modified: Tue, 21 Jan 2020 10:28:46 GMT
ETag: "2aa6-59ca3df7ac2c0"
Accept-Ranges: bytes
Content-Length: 10918
Vary: Accept-Encoding
Content-Type: text/html
Activez le module cgid avec a2enmod cgi ou a2enmod cgid.
$ sudo a2enmod cgi
Your MPM seems to be threaded. Selecting cgid instead of cgi.
Enabling module cgid.
To activate the new configuration, you need to run:
systemctl restart apache2
mod \ _cgid \ -Apache HTTP Server Version 2 \ .4
Sur certains systèmes d'exploitation Unix, forger des processus à partir d'un serveur multithread peut être une opération très coûteuse. La raison en est que le nouveau processus réplique tous les threads du processus parent. Pour éviter ce coût à chaque démarrage de CGI, mod_cgid exécute un démon externe pour forger les processus enfants afin d'exécuter des scripts CGI. Le serveur principal utilise des sockets de domaine Unix pour communiquer avec ce démon.
Ce module est toujours utilisé à la place de mod_cgi lorsque MPM multithread est choisi au moment de la compilation. Au niveau de l'utilisateur, la configuration et le comportement de ce module sont exactement les mêmes que mod_cgi. La seule exception est l'ajout de la directive ScriptSock, qui spécifie le nom du socket pour la communication avec le démon CGI.
Créez un répertoire / var / www / hello.
$ sudo mkdir /var/www/hello
Accordez des autorisations aux utilisateurs qui modifient les fichiers de script CGI.
$ sudo chown hoge:hoge /var/www/hello
Placez le fichier index.cgi.
$ vim /var/www/hello/index.cgi
Le contenu de index.cgi. Cette fois, c'est CGI par script shell.
#!/usr/bin/sh
echo 'Status: 200 OK'
echo 'Content-Type: text/html;charset=utf-8'
echo ''
echo '<html><body>Hello, world.</body></html>'
Accordez l'autorisation d'exécution à index.cgi.
$ chmod 755 /var/www/hello/index.cgi
Créez un fichier appelé hello.conf en copiant le fichier 000-default.conf situé dans le répertoire / etc / apache2 / sites-available.
$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/hello.conf
Modifiez le contenu du fichier hello.conf.
$ sudo vim /etc/apache2/sites-available/hello.conf
Remplacez le fichier hello.conf par le contenu suivant.
hello.conf
<VirtualHost *:80>
# /etc/apache2/sites-available/000-default.Contenu copié depuis conf
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
#Paramètres pour exécuter CGI
ScriptAlias /hello/ /var/www/hello/
<Directory "/var/www/hello/">
Options ExecCGI
AddHandler cgi-script .cgi
DirectoryIndex index.cgi
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
Actuellement, 000 par défaut est activé.
$ ls -l /etc/apache2/sites-enabled/ | grep conf
lrwxrwxrwx 1 racine racine 35 21 janvier 19:28 000-default.conf -> ../sites-available/000-default.conf
Activez hello.conf avec la commande a2ensite.
$ sudo a2ensite hello
Enabling site hello.
To activate the new configuration, you need to run:
systemctl reload apache2
Désactivez 000-default.conf avec la commande a2dissite.
$ sudo a2dissite 000-default
Site 000-default disabled.
To activate the new configuration, you need to run:
systemctl reload apache2
Vous pouvez voir que hello.conf est activé.
$ ls -l /etc/apache2/sites-enabled/ | grep conf
lrwxrwxrwx 1 racine racine 29 janvier 21 20:03 hello.conf -> ../sites-available/hello.conf
$ sudo systemctl restart apache2
Vous pouvez vérifier que CGI fonctionne avec la commande curl.
$ curl -i http://localhost/hello/
HTTP/1.1 200 OK
Date: Tue, 21 Jan 2020 11:09:41 GMT
Server: Apache/2.4.41 (Ubuntu)
Content-Length: 40
Content-Type: text/html;charset=utf-8
<html><body>Hello, world.</body></html>