Django - Apache, Gunicorn and Nginx on cloud
sudo adduser nilesh
sudo usermod -aG sudo nilesh
> sudo apt-get update
> sudo apt-get install python3-pip apache2 libapache2-mod-wsgi-py3
> sudo pip3 install virtualenv
> mkdir /var/www/workspace
> copy django code in location `/var/www/workspace`
> create virtual environment
> pip install -r vps/sample/req.txt
> python manage.py collectstatic
> sudo vim /etc/apache2/sites-available/000-default.conf
We can change port by changing
Need to add
Listen
as well on top.
Need to add on top.
Listen 8000
<VirtualHost *:8000>
<VirtualHost *:80>
ServerAdmin nilshmeharkar43@gmail.com
#DocumentRoot /var/www/workspace
<Directory /var/www/workspace/vps/sample/sample>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess myproject python-home=/var/www/workspace/venv python-path=/var/www/workspace/vps/sample
WSGIProcessGroup myproject
WSGIScriptAlias / /var/www/workspace/vps/sample/sample/wsgi.py
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
python-home -> Show environment location.
python-path -> Show Project location.
wsgi file location.
Enable the site.
sudo a2ensite 000-default.conf
Disable the site.
sudo a2dissite 000-default.conf
Check apache error logs.
sudo tail -f 15 /var/log/apache2/error.log
Reload the server.
sudo systemctl reload apache2
> pip install gunicorn
> cd /var/www/workspace/vps/sample
> gunicorn --bind 0.0.0.0:8500 sample.wsgi
> sudo apt install nginx
> sudo ufw app list
> sudo ufw allow 'Nginx Full'
>
> sudo vim /etc/nginx/sites-available/sample
server {
listen 9000;
server_name 206.81.7.153;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /var/www/workspace/vps/sample;
}
location / {
include proxy_params;
proxy_pass http://206.81.7.153;
}
}
>
> sudo ln -s /etc/nginx/sites-available/sample /etc/nginx/sites-enabled
> sudo systemctl restart nginx
> sudo systemctl reload nginx
> sudo tail -f 15 /var/log/nginx/error.log