sudo yum install git
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bash_profile
exec $SHELL
sudo yum groupinstall 'development tools'
sudo yum install @development zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel xz xz-devel libffi-devel findutils
pyenv install 3.8.2
pyenv global 3.8.2
pip install --upgrade pip
Created
June 15, 2020 16:11
-
-
Save mattantonelli/7a277afdb8485f68cdebb01f93d50ef2 to your computer and use it in GitHub Desktop.
Setting up fresh CentOS 7/8 VMs for Python development
sudo yum install git
sudo mkdir /opt/pyenv
sudo chmod 755 /opt/pyenv
git clone https://github.com/pyenv/pyenv.git /opt/pyenv
echo 'export PYENV_ROOT="/opt/pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bash_profile
exec $SHELL
sudo yum groupinstall 'development tools'
sudo yum install @development zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel xz xz-devel libffi-devel findutils nginx policycoreutils-python-utils
pyenv install 2.7.18
pyenv global 2.7.18
pip install --upgrade pip
pip install flask gunicorn
sudo ln -s /opt/pyenv/shims/gunicorn /usr/local/bin/gunicorn
sudo vim /etc/systemd/system/gunicorn.socket
[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target
[Service]
Type=notify
User=nginx
Group=nginx
RuntimeDirectory=gunicorn
WorkingDirectory=/PATH/TO/APP
ExecStart=/usr/local/bin/gunicorn app:app
ExecReload=/bin/kill -s HUP $MAINPID
KillMode=mixed
TimeoutStopSec=5
PrivateTmp=true
[Install]
WantedBy=multi-user.target
sudo vim /etc/systemd/system/gunicorn.service
[Unit]
Description=gunicorn socket
[Socket]
ListenStream=/run/gunicorn.sock
User=nginx
# Mode=600
[Install]
WantedBy=sockets.target
sudo vim /etc/nginx/nginx.conf
...
upstream app_server {
server unix:/run/gunicorn.sock fail_timeout=0;
}
server {
listen 80;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://app_server;
}
}
sudo semanage permissive -a httpd_t
sudo systemctl enable nginx gunicorn.socket
sudo systemctl start nginx gunicorn.socket
openssl req -newkey rsa:2048 -nodes -keyout server.key -x509 -days 365 -out server.crt
sudo chown root:root server.*
sudo mv server.* /etc/nginx
sudo vim /etc/nginx/nginx.conf
...
server {
listen 443 ssl http2;
ssl_certificate "/etc/nginx/server.crt";
ssl_certificate_key "/etc/nginx/server.key";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers PROFILE=SYSTEM;
ssl_prefer_server_ciphers on;
...
}
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment