Python35 on CentOS 7
Install packages
yum install -y centos-release-scl
yum install -y rh-python35-python
Enable rh-python35
globally for all users
cat > /etc/profile.d/rh_python35.sh <<_EOF
#!/bin/sh
source /opt/rh/rh-python35/enable
_EOF
Activate without relogin
. /etc/profile.d/rh_python35.sh
List available scl packages
scl --list
Activate rh-python35
in current bash
session:
scl enable rh-python35 bash
Or in bash scripts:
export PATH=/opt/rh/rh-python35/root/usr/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/opt/rh/rh-python35/root/usr/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export MANPATH=/opt/rh/rh-python35/root/usr/share/man:$MANPATH
export PKG_CONFIG_PATH=/opt/rh/rh-python35/root/usr/lib64/pkgconfig${PKG_CONFIG_PATH:+:${PKG_CONFIG_PATH}}
export XDG_DATA_DIRS="/opt/rh/rh-python35/root/usr/share:${XDG_DATA_DIRS:-/usr/local/share:/usr/share}"
python --verion
Or this method:
. /opt/rh/rh-python35/enable
Create virtualenv in Python35:
Python 3 has a built-in support for virtual environments
- https://docs.python.org/3/library/venv.html#module-venv
- https://docs.python.org/3.6/whatsnew/3.6.html#id7
python3 -m venv venv
Use rh-python35
in supervisor
[program:app]
directory = /srv/app
environment = PATH=/srv/app/venv/bin:/opt/rh/rh-python35/root/usr/bin,
LD_LIBRARY_PATH=/opt/rh/rh-python35/root/usr/lib64
command = /srv/app/venv/bin/gunicorn ...
stdout_logfile = /srv/app/logs/%(program_name)s.log
stdout_logfile_maxbytes = 5MB ; max # logfile bytes b4 rotation (default 50MB)
stdout_logfile_backups = 5 ; # of stdout logfile backups (default 10)
redirect_stderr = true
user = nobody
numprocs = 1
autostart = true
autorestart = true
startsecs = 5
stopwaitsecs = 60
Use rh-python35
in systemd
[Unit]
Description=Foo bar service
Requires=nginx.service
Before=nginx.service
After=network.target
[Service]
Type=notify
User=jenkins
Group=jenkins
Environment=LD_LIBRARY_PATH=/opt/rh/rh-python35/root/usr/lib64
Environment=PATH=/srv/app/venv/bin:/opt/rh/rh-python35/root/usr/bin
WorkingDirectory=/srv/app
ExecStart=/srv/app/venv/bin/uwsgi \
--module app.wsgi \
--http :8006 \
...
PIDFile=/srv/app/var/run/app.pid
KillMode=process
Restart=always
KillSignal=SIGTERM
NotifyAccess=all
[Install]
WantedBy=multi-user.target
Ссылки по теме:
Comments
comments powered by Disqus