--Installieren Sie das Apache2-Paket unter Ubuntu
Installieren Sie das Apache2-Paket.
$ sudo apt install apache2
Überprüfe die 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"
Überprüfen Sie, ob es ausgeführt wird, indem Sie mit Curl usw. darauf zugreifen.
$ 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
Aktivieren Sie das cgid-Modul mit a2enmod cgi oder 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
Unter einigen Unix-Betriebssystemen kann das Verzweigen eines Prozesses von einem Multithread-Server sehr kostspielig sein. Der Grund ist, dass der neue Prozess alle Threads des übergeordneten Prozesses repliziert. Um diese Kosten bei jedem CGI-Start zu vermeiden, führt mod_cgid einen externen Daemon aus, um untergeordnete Prozesse zum Ausführen von CGI-Skripten zu verzweigen. Der Primärserver verwendet Unix-Domain-Sockets, um mit diesem Daemon zu kommunizieren.
Dieses Modul wird immer anstelle von mod_cgi verwendet, wenn zur Kompilierungszeit Multithread-MPM ausgewählt wird. Auf Benutzerebene entspricht das Setup und Verhalten dieses Moduls genau dem von mod_cgi. Die einzige Ausnahme ist das Hinzufügen der ScriptSock-Direktive, die den Namen des Sockets für die Kommunikation mit dem CGI-Daemon angibt.
Erstellen Sie ein Verzeichnis / var / www / hello.
$ sudo mkdir /var/www/hello
Geben Sie Benutzern, die CGI-Skriptdateien bearbeiten, Berechtigungen.
$ sudo chown hoge:hoge /var/www/hello
Platzieren Sie die Datei index.cgi.
$ vim /var/www/hello/index.cgi
Der Inhalt von index.cgi. Diesmal ist es CGI per Shell-Skript.
#!/usr/bin/sh
echo 'Status: 200 OK'
echo 'Content-Type: text/html;charset=utf-8'
echo ''
echo '<html><body>Hello, world.</body></html>'
Erteilen Sie index.cgi die Ausführungsberechtigung.
$ chmod 755 /var/www/hello/index.cgi
Erstellen Sie eine Datei mit dem Namen hello.conf, indem Sie die Datei 000-default.conf kopieren, die sich im Verzeichnis / etc / apache2 / sites-available befindet.
$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/hello.conf
Ändern Sie den Inhalt der Datei hello.conf.
$ sudo vim /etc/apache2/sites-available/hello.conf
hello.conf
<VirtualHost *:80>
# /etc/apache2/sites-available/000-default.
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
#
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>
$ ls -l /etc/apache2/sites-enabled/ | grep conf
:28 000-default.conf -> ../sites-available/000-default.conf
Inhalt aus conf-Einstellungen kopiert, um CGI auszuführen. Hallo.conf aktivieren und 000-default.conf deaktivieren. 000-default ist derzeit aktiviert. lrwxrwxrwx 1 root root 35 21. Januar 19 Aktivieren Sie hello.conf mit dem Befehl a2ensite.
$ sudo a2ensite hello
Enabling site hello.
To activate the new configuration, you need to run:
systemctl reload apache2
Deaktivieren Sie 000-default.conf mit dem Befehl a2dissite.
$ sudo a2dissite 000-default
Site 000-default disabled.
To activate the new configuration, you need to run:
systemctl reload apache2
Sie können sehen, dass hello.conf aktiviert ist.
$ ls -l /etc/apache2/sites-enabled/ | grep conf
lrwxrwxrwx 1 root root 29. Januar 21 20:03 hello.conf -> ../sites-available/hello.conf
$ sudo systemctl restart apache2
Sie können überprüfen, ob CGI mit dem Befehl curl funktioniert.
$ 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>
Recommended Posts