J'ai eu du mal alors j'ai pris une note.
--Créez un environnement virtuel CentOS8 à l'aide de VMware et créez-y un serveur Web.
/ var / www / projectname /
) avec le dossier du projet.$ dnf list | grep httpd
Outre le corps httpd
Vous pouvez voir qu'il y a de telles choses. Installez-les avec l'unité principale car vous en aurez besoin à l'avenir.
$ dnf -y install httpd httpd-tools httpd-devel httpd-manual
$ dnf list --installed | grep httpd #Vérifiez s'il est installé
$ systemctl start httpd
$ systemctl status httpd #Vérifiez si Apache peut être démarré
$ systemctl enable httpd #Activer le démarrage automatique
$ firewall-cmd --add-service=http --zone=public --permanent
$ firewall-cmd --reload
$ firewall-cmd --list-all #Vérifiez si http est ajouté aux services
Tout d'abord, accédez à http: // localhost /. OK si la page de test Apache est affichée. Ensuite, placez le fichier HTML et vérifiez s'il est affiché.
$ touch /var/www/html/index.html
$ vi /var/www/html/index.html #Rédigez le code HTML approprié
Si vous accédez à http: // localhost / et que HTML s'affiche, c'est OK.
Essayez de spécifier le domaine en utilisant / etc / hosts
.
$ vi /etc/hosts #127.0.0.Exemple sur la ligne 1.ajouter com
$ mkdir /var/www/example.com
$ touch /var/www/example.com/index.html
$ vi /var/www/example.com/index.html #Rédigez le code HTML approprié
Modifiez la configuration Apache. Puisque nous prévoyons d'utiliser SSL ou d'utiliser plusieurs domaines plus tard, définissez-le comme VirtualHost.
$ touch /etc/httpd/conf.d/virtual.conf
$ vi /etc/httpd/conf.d/virtual.conf
$ service httpd configtest #Vous pouvez vérifier la syntaxe du fichier de paramètres
conf:/etc/httpd/conf.d/virtual.conf
<VirtualHost *:80>
DocumentRoot /var/www/example.com
ServerName example.com
<Directory "/var/www/example.com">
Require all granted
</Directory>
</VirtualHost>
Au moment du test de configuration
Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
Quand apparaît, spécifiez le ServerName dans httpd.conf
comme on vous l'a dit.
/etc/httpd/conf/httpd.conf (autour des lignes 98-99)
ServerName example.com:80
Enfin redémarrez Apache et vérifiez le fonctionnement
$ systemctl restart httpd
Maintenant, lorsque vous visitez http: // localhost / ou http://example.com, vous verrez / var / www / example.com / index.html
.
$ dnf -y install git #Installez git pour faire un clone git
$ git clone https://github.com/pyenv/pyenv.git /var/www/pyenv
$ vi ~/.bash_profile #Ajoutez ce qui suit
~/.bash_profil (note supplémentaire)
export PYENV_ROOT="/var/www/pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
Initialement, la destination d'installation de pyenv était / root / .pyenv
, mais si elle est sous la racine, il semble qu'elle ne soit accessible qu'avec l'autorité root (Apache n'est pas accessible), donc Apache a l'autorité pour l'installer/ Il a été changé en var / www /
.
source ~/.bash_profile #Appliquer bash
pyenv --version #Contrôle de fonctionnement
A partir de là, nous procéderons en corrigeant la trajectoire tout en émettant des erreurs, donc si vous allez pratiquer cette procédure, nous vous recommandons de la lire jusqu'au bout avant d'essayer.
Tout d'abord, essayez d'installer Python normalement
$ pyenv install 3.x.x
Ensuite, j'ai eu une erreur comme celle-ci.
zipimport.ZipImportError: can't decompress data; zlib not available
Alors installez zlib.
$ dnf -y install zlib zlib-devel
Peut-être que zlib
est déjà installé. Je dois installer certains paquets dans le futur, mais je dois aussi installer -devel
avec le corps principal.
Je retrouve mon esprit et installe Python, mais j'obtiens à nouveau une erreur.
(Extrait)
WARNING: The Python bz2 extension was not compiled. Missing the bzip2 lib?
WARNING: The Python readline extension was not compiled. Missing the GNU readline lib?
ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?
Il y a ERROR et WARNING, mais les deux doivent être résolus à la fin, alors installez le package manquant.
python
$ dnf -y install bzip2 bzip2-devel readline readline-devel openssl openssl-devel
Installez à nouveau Python. Cela réussit, mais un avertissement est donné.
WARNING: The Python sqlite3 extension was not compiled. Missing the SQLite3 lib?
Ce sera également un problème plus tard, alors installez-le.
$ dnf -y install sqlite sqlite-devel
Vous avez enfin installé Python.
pyenv versions #3.x.Assurez-vous que x est installé
pyenv global 3.x.x #Appliquer la version Python à l'ensemble
python --version #3.x.Confirmez que x fonctionne
#Mettez également à jour et confirmez pip
pip install --upgrade pip
pip --version
pip install django
C'est facile à oublier.
mod_wsgi est obtenu par wget à partir des fichiers de téléchargement de PyPI. Il semble qu'il existe différentes manières d'obtenir mod_wsgi, mais pour le moment, j'ai réussi cette méthode, je vais donc la décrire.
$ cd /var/www/
$ wget https://files.pythonhosted.org/packages/...Abréviation.../mod_wsgi-x.x.x.tar.gz
$ tar -zxvf mod_wsgi-x.x.x.tar.gz
$ cd mod_wsgi-x.x.x/
$ ./configure --with-python=/var/www/pyenv/versions/3.x.x/bin/python
Lorsque j'essaye de taper la commande make
ici, j'obtiens l'erreur suivante:
Erreur: /usr/lib/rpm/redhat/redhat-hardened-cc1:Il n'y a pas de tel fichier ou répertoire
Alors installez plus loin redhat-rpm-config
.
$ dnf -y install redhat-rpm-config
Quand je lance à nouveau make`` make install
, j'obtiens l'erreur suivante
'xxx' can not be used when making a shared object; recompile with -fPIC
Cette erreur peut être résolue en ajoutant CFLAGS =" -fPIC "
lors de l'installation de Python. J'ai donc réinstallé Python.
$ CFLAGS="-fPIC" pyenv install 3.x.x
$ make
$ make install
Cela générera / etc / httpd / modules / mod_wsgi.so
.
Maintenant que l'installation de WSGI est terminée, placez le fichier de projet sous / var / www / projectname
, modifiez à nouveau les paramètres Apache et redémarrez.
conf:/etc/httpd/conf.d/virtual.conf
LoadModule wsgi_module /etc/httpd/modules/mod_wsgi.so
WSGIPythonHome /var/www/pyenv/versions/3.x.x
WSGIPythonPath /var/www/pyenv/versions/3.x.x/lib/python3.x/site-packages
WSGIPythonPath /var/www/projectname
<VirtualHost *:80>
DocumentRoot /var/www/projectname
ServerName example.com
WSGIScriptAlias / /var/www/projectname/projectname/wsgi.py
<Directory "/var/www/projectname">
Require all granted
</Directory>
#Collecter de la statique côté projet django
Alias /static/ /var/www/projectname/static/
<Directory "/var/www/projectname/static">
Require all granted
</Directory>
</VirtualHost>
WSGIPythonHome
est un script Python vers lequel sys.prefix
pointe.
L'un des «WSGIPythonPath» est le «sys.path» qui se termine par «site-packages». L'autre est le répertoire personnel du projet Django, qui semble devoir être décrit à la fois.
À partir de là, continuez en vérifiant l'erreur ci-dessous.
tail /etc/httpd/logs/error_log
L'erreur suivante apparaîtra immédiatement, alors agissez.
failed to map segment from shared object
Unable to configure formatter 'django.server'
Ceux-ci peuvent être résolus en désactivant SELinux et en définissant le propriétaire et le groupe de fichiers sous / var / www /
apache.
setenforce 0
chown -R apache:apache /var/www/
Après avoir redémarré Apache, vous devriez voir votre projet Django sur http: // localhost.
Lorsque j'accède à http://example.com, j'obtiens une erreur DisallowedHost
du côté Django, mais comme indiqué dans le message d'erreur, elle est affichée en ajoutant ʻexample.com à ʻALLOWED_HOSTS
dans settings.py
.
Recommended Posts