Préparation des dépendances : Compilation d'OpenSSL
Python 3.11 exige une version récente de la bibliothèque OpenSSL pour fonctionner correctement. Il est donc nécessaire de compiler et d'installer OpenSSL 1.1.1 avant de procéder à la compilation de Python.
OPENSSL_VERSION="1.1.1n"
INSTALL_DIR="/opt/openssl"
# Suppression de l'ancienne version
yum remove -y openssl
cd /opt
wget "https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz"
tar -zxvf "openssl-${OPENSSL_VERSION}.tar.gz"
cd "openssl-${OPENSSL_VERSION}"
# Configuration et compilation
./config --prefix=${INSTALL_DIR} --openssldir=${INSTALL_DIR} shared zlib
make depend
make -j$(nproc) && make install
# Création du lien symbolique et configuration du cache dynamique
ln -sf ${INSTALL_DIR}/bin/openssl /usr/bin/openssl
echo "${INSTALL_DIR}/lib" > /etc/ld.so.conf.d/openssl.conf
ldconfig -v
# Vérification
openssl version
Téléchargement et extraction du code source de Python
Récupérez l'archive source officielle de Python 3.11 et extrayez-la dans le répertoire de travail.
PYTHON_VERSION="3.11.2"
cd /opt
wget "https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tar.xz"
tar -xvJf "Python-${PYTHON_VERSION}.tar.xz"
Installation des outils de compilation
Installez les utilitaires de développement et les bibliothèques C requises pour éviter les erreurs lors de la construction des modules standards.
yum groupinstall -y "Development tools"
yum install -y zlib-devel bzip2-devel openssl-devel ncurses-devel \
sqlite-devel readline-devel tk-devel gdbm-devel \
db4-devel libpcap-devel xz-devel libffi-devel
Configuration et compilation de Python
Configurez le Makefile en spécifiant le répertoire d'installation personnalisé et le chemin vers la nouvelle bibliothèque OpenSSL. L'option --enable-optimizations est recommandée pour améliorer les performances d'exécution.
mkdir -p /opt/python3
cd "/opt/Python-${PYTHON_VERSION}"
./configure --prefix=/opt/python3 \
--with-openssl=/opt/openssl \
--with-openssl-rpath=auto \
--enable-optimizations
# Compilation et installation (altinstall évite d'écraser le python système)
make -j$(nproc)
make altinstall
Configuration des variables d'environnement
Pour rendre les exécutables Python accessibles globalement sans interférer avec le Python 2 natif du système, ajoutez le chemin au PATH via un script dans profile.d.
echo 'export PATH=/opt/python3/bin:$PATH' > /etc/profile.d/python3.sh
source /etc/profile.d/python3.sh
# Vérification des chemins
which python3.11
which pip3.11
Configuration de Pip et création d'un environnement virtuel
Optimisez le gestionnaire de paquets en configurant un miroir local, puis utilisez le module intégré venv pour isoler les dépendances de votre projet.
# Configuration du miroir Pip
mkdir -p ~/.pip
cat <<eof> ~/.pip/pip.conf
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
trusted-host = mirrors.aliyun.com
EOF
# Création de l'environnement virtuel
cd /opt
python3.11 -m venv venv_app
# Activation de l'environnement
source /opt/venv_app/bin/activate
# Vérification de l'isolation
which python
which pip</eof>
Une fois l'environnement activé, le préfixe (venv_app) apparaît dans l'invite de commande. Les variables d'environnement sont modifiées pour pointer vers le répertoire virtuel en priorité. Pour quitter cet environnement, exécutez simplement la commande deactivate.
Installation et configuration du service de cache Redis
Pour les applications nécessitant un cache en mémoire (comme les clusters web ou JumpServer), Redis est indispensable. Notez que la version fournie par les dépôts par défaut (souvent 3.2.x) peut être insuffisante pour les applications récentes ; une compilation manuelle ou un dépôt tiers sera nécessaire pour obtenir une version 6.x ou supérieure.
# Installation via le gestionnaire de paquets
yum install -y redis
# Démarrage et activation au boot
systemctl enable --now redis
# Vérification de l'écoute sur le port 6379
ss -tunlp | grep 6379
# Test de connectivité
redis-cli ping
La commande ping doit retourner PONG, confirmant que le service de base de données en mémoire est opérationnel et prêt à recevoir des connexions.