I am using Ubuntu 18 servers and using nginx with gunicorn I follow Digitalocean tutorial for server setup. I successfully did for one project but now I need to run multiple projects under by server.
Here is my gunicorn setup
command:
sudo nano /etc/systemd/system/gunicorn.service
file:
[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target
[Service]
User=rfr
Group=www-data
WorkingDirectory=/home/rfr/helpdesk/helpdesk
ExecStart=/home/rfr/helpdesk/env/bin/gunicorn \
--access-logfile - \
--workers 3 \
--bind unix:/run/gunicorn.sock \
helpdesk.wsgi:application
[Install]
WantedBy=multi-user.target
And also here is my nginx setup
command:
sudo nano /etc/nginx/sites-available/helpdesk
file:
server {
listen 80;
server_name 192.168.11.252;
location = /favicon.ico { access_log off; log_not_found off; }
location /assets/ {
root /home/rfr/helpdesk/helpdesk;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
}
Now how can I add another project under the following IP? I want to configure my nginx setup for access project like this
192.168.11.252/firstProject
192.168.11.252/secoundproject
I try a few googles but not help me more.
You use a proxy_pass with two different sockets. Setup gunicorn on the first project to listen on a socket called first_project.sock, and setup gunicorn on the second project to listen on a socket called second_project.sock.
gunicorn for first project
[Unit]
Description=gunicorn for firstProject
Requires=gunicorn.socket
After=network.target
[Service]
User=rfr
Group=www-data
WorkingDirectory=/home/rfr/first_project/first_project
ExecStart=/home/rfr/first_project/env/bin/gunicorn \
--access-logfile - \
--workers 3 \
--bind unix:/run/first_project.sock \
first_project.wsgi:application
[Install]
WantedBy=multi-user.target
gunicorn for second project
[Unit]
Description=gunicorn for secondProject
Requires=gunicorn.socket
After=network.target
[Service]
User=rfr
Group=www-data
WorkingDirectory=/home/rfr/second_project/second_project
ExecStart=/home/rfr/second_project/env/bin/gunicorn \
--access-logfile - \
--workers 3 \
--bind unix:/run/second_project.sock \
second_project.wsgi:application
[Install]
WantedBy=multi-user.target
nginx configuration
server {
listen 80;
server_name 192.168.11.252;
location = /favicon.ico { access_log off; log_not_found off; }
location /firstProject/assets/ {
root /home/rfr/first_project/first_project;
}
location /secondProject/assets/ {
root /home/rfr/second_project/second_project;
}
location /firstProject {
include proxy_params;
rewrite /firstProject(.*) $1;
proxy_pass http://unix:/run/first_project.sock;
}
location /secondProject {
include proxy_params;
rewrite /secondProject(.*) $1;
proxy_pass http://unix:/run/second_project.sock;
}
}
The heavy lifting here is by the nginx rewrite
directive which will let your app think of the url as everything after firstProject
or secondProject
in the url.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With