Jusqu'à ce que PythonCGI s'exécute sur UbuntuServer18.04 + Apache2

Contexte

--Windows 10 sur le bureau est fou --Django n'a pas pu être utilisé ――Mais je veux le faire ressembler à une application Web!

___C'est tout! Faisons CGI! ___ J'ai décidé de commencer par un processus très pathétique. Quand je l'ai essayé, il est resté coincé dans un endroit délicat, donc je vais vous présenter ___ que cela devrait fonctionner pour le moment si vous suivez cette rue.

Préparation

Préparation à Apache2

Installation

sudo apt install apache2

Il n'y a aucun problème avec cette ligne. Si "LAMP Server" est sélectionné lors de l'installation d'Ubuntu Server, l'installation est déjà terminée et peut être ignorée.

Activer le module cgi

user@hostname:~# sudo a2enmod cgid
Enabling module cgid.
To activate the new configuration, you need to run:
  systemctl restart apache2
user@hostname:~# sudo systemctl restart apache2

Si l'activation est réussie, / usr / lib / cgi-bin sera reconnu comme la racine du document de CGI. Dans l'état actuel des choses, l'emplacement est trop différent de la racine normale du document / var / www / html et c'est gênant, alors changez la racine du document.

Changer la racine du document #optionnel

Créez un nouveau fichier.

user@hostname:~# sudo vi /etc/apache2/conf-available/cgi-bin.conf

Contenu

/etc/apache2/conf-available/cgi-bin.conf


<Directory "/var/www/cgi-bin">
    Options +ExecCGI
    AddHandler cgi-script .cgi .py
</Directory>

Une fois créé, Apache2 doit reconnaître le fichier de configuration.

user@hostname:~# mkdir /var/www/cgi-bin
user@hostname:~# sudo a2enconf cgi-bin
Enabling conf cgi-bin.
To activate the new configuration, you need to run:
  service apache2 reload
user@hostname:~# sudo systemctl restart apache2

Notes de codage

--Shebang est requis

Si vous obtenez une erreur

403 Interdit

Les autorisations du fichier peuvent être incorrectes. Ouvrez l'emplacement du fichier dans le terminal et définissez les autorisations.

user@hostname:~# sudo chmod 755 xxx.cgi

500 Erreur de serveur interne (erreur de script)

Probablement le code d'erreur le plus déroutant. Voici deux éléments les plus courants pour consulter le journal des erreurs.

1. Le module Python n'est pas installé

Si ModuleNotFoundError: No module named'hoge' s'affiche, appuyez simplement sur pip install hoge. Si vous ne pouvez pas l'installer avec la commande pip, vous pouvez le rechercher depuis Github.

2. Une erreur se produit lors de la saisie du japonais

Dans l'exemple que j'ai réellement rencontré, si seuls des caractères demi-largeur étaient utilisés, ils étaient affichés sans problème, mais si des caractères pleine largeur étaient inclus, une erreur se produisait. Il est difficile de le traiter dans le script car il était brouillé au moment de la lecture du fichier par tous les moyens. Par conséquent, modifiez les paramètres d'Apache2.

/etc/apache2/conf-available/charset.conf


#PostScript d'une ligne
AddDefaultCharset UTF-8

Dans le cas de l'auteur, cela a été résolu.

502 Bad Gateway (pas de réponse)

-Est-ce que le port du routeur est ouvert?

Re-examinons ces possibilités.

Recommended Posts

Jusqu'à ce que PythonCGI s'exécute sur UbuntuServer18.04 + Apache2
Jusqu'à ce que OSD335X exécute U-boot sur une carte personnalisée (Remarque)
Jusqu'à docker-compose sur CentOS7
L'installation d'Apache échoue sur CentOS 8.2