refresher, best method to run a django web app with mod wsgi?

34 views
Skip to first unread message

js

unread,
Dec 13, 2019, 8:17:28 PM12/13/19
to modwsgi
hey im launching a website for school project. i could just use a refresher on the best way to set up a stable website. ive done this before but im not entirely clear from the docs at https://modwsgi.readthedocs.io/en/develop/index.html

Im running ubuntu 18 x64 on digital ocean, i installed apache2 and mysql.  i set up a django project at /var/www/djang0 . i set up a python3 venv here. i pip3 installed

django django-ckeditor django-safedelete mock mod-wsgi pillow

I believe i need some redirect for my site to force SSL.

Here are previous config files.  the doc says i dont necesarrily have to manually set up apache conf files, but Im skeptical (due to ssl redirect and my domain)

1.  could you advice on best way to configure this to serve my django web app for a longer term stable website? note since python deprecated the venv command, there is no venv folder,
there is bin, lib, share folders and a pyvenv.cfg file.  so would i change the daemon process path to ' python-home=/var/www/djang0/bin '  ?

2.   do i need to load a wsgi file? add the confs to /etc/apache2/sites-available, then a2enmod djang0 to enable. run cerbot for ssl after this to apply the ssl configuration?  many thanks



    # OLD WORKING vhosts for django project djang0 

 
# sudo nano /etc/apache2/sites-available/djang0.conf

<VirtualHost *:80>
                ServerName skylinedev.net
                ServerAlias www.skylinedev.net
                #Redirect permanent / https://www.skylinedev.net/
                WSGIDaemonProcess djang0 python-home=/var/www/djang0/venv python-path=/var/www/djang0/djang0 user=sldadmin group=www-data processes=2 threads=5
                WSGIProcessGroup djang0
                WSGIApplicationGroup %{GLOBAL}
                WSGIScriptAlias / /var/www/djang0/djang0/djang0/wsgi.py
                <Directory /var/www/djang0/djang0/djang0/>
                <Files wsgi.py>
                        Order allow,deny
                        Allow from all
                </Files>
                </Directory>

                Alias /static /var/www/djang0/djang0/static
                <Directory /var/www/djang0/djang0/static>
                        Order allow,deny
                        Allow from all
                </Directory>

                Alias /robots.txt /var/www/djang0/djang0/static/robots.txt
                Alias /favicon.ico /var/www/djang0/djang0/static/favicon.ico

                Alias /media /var/www/djang0/djang0/media
                <Directory /var/www/djang0/djang0/media>
                        Order allow,deny
                        Allow from all
                </Directory>

                ErrorLog /var/www/djang0/logs/a2/error.log
                LogLevel warn
                CustomLog /var/www/djang0/logs/a2/access.log combined

RewriteEngine on
RewriteCond %{SERVER_NAME} =www.skylinedev.net [OR]
RewriteCond %{SERVER_NAME} =skylinedev.net
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
</VirtualHost>



# sudo nano /etc/apache2/sites-available/000-default-le-ssl.conf

<IfModule mod_ssl.c>
<VirtualHost *:443>
        # The ServerName directive sets the request scheme, hostname and port that
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request's Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.
        #ServerName www.example.com

        #ServerAdmin webmaster@localhost
        #DocumentRoot /var/www/html

        WSGIProcessGroup djang0
        WSGIApplicationGroup %{GLOBAL}
        WSGIScriptAlias / /var/www/djang0/djang0/djang0/wsgi.py
        <Directory /var/www/djang0/djang0/djang0/>
        <Files wsgi.py>
                Order allow,deny
                Allow from all
        </Files>
        </Directory>

        Alias /static /var/www/djang0/djang0/static
        <Directory /var/www/djang0/djang0/static>
                Order allow,deny
                Allow from all
        </Directory>

        Alias /robots.txt /var/www/djang0/djang0/static/robots.txt
        Alias /favicon.ico /var/www/djang0/djang0/static/favicon.ico

        Alias /media /var/www/djang0/djang0/media
        <Directory /var/www/djang0/djang0/media>
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog /var/www/djang0/logs/ssl/error.log
        LogLevel warn
        CustomLog /var/www/djang0/logs/ssl/access.log combined
       
        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn

        #ErrorLog ${APACHE_LOG_DIR}/error.log
        #CustomLog ${APACHE_LOG_DIR}/access.log combined

        # For most configuration files from conf-available/, which are
        # enabled or disabled at a global level, it is possible to
        # include a line for only one particular virtual host. For example the
        # following line enables the CGI configuration for this host only
        # after it has been globally disabled with "a2disconf".
        #Include conf-available/serve-cgi-bin.conf
SSLCertificateFile /etc/letsencrypt/live/skylinedev.net/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/skylinedev.net/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
ServerName skylinedev.net
ServerAlias www.skylinedev.net
</VirtualHost>
               
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
</IfModule>

Graham Dumpleton

unread,
Dec 15, 2019, 7:08:55 PM12/15/19
to mod...@googlegroups.com

On 14 Dec 2019, at 11:51 am, js <skyline...@gmail.com> wrote:

hey im launching a website for school project. i could just use a refresher on the best way to set up a stable website. ive done this before but im not entirely clear from the docs at https://modwsgi.readthedocs.io/en/develop/index.html

Im running ubuntu 18 x64 on digital ocean, i installed apache2 and mysql.  i set up a django project at /var/www/djang0 . i set up a python3 venv here. i pip3 installed

django django-ckeditor django-safedelete mock mod-wsgi pillow

I believe i need some redirect for my site to force SSL.

Here are previous config files.  the doc says i dont necesarrily have to manually set up apache conf files, but Im skeptical (due to ssl redirect and my domain)

1.  could you advice on best way to configure this to serve my django web app for a longer term stable website? note since python deprecated the venv command,

Not sure if you are misinterpreting things.

Deprecated since version 3.6: pyvenv was the recommended tool for creating virtual environments for Python 3.3 and 3.4, and is deprecated in Python 3.6.

Changed in version 3.5: The use of venv is now recommended for creating virtual environments.

The env command wasn't deprecated. The pyvenv command was.

You can still use:

    python -m venv

there is no venv folder,
there is bin, lib, share folders and a pyvenv.cfg file.  so would i change the daemon process path to ' python-home=/var/www/djang0/bin '  ?

2.   do i need to load a wsgi file? add the confs to /etc/apache2/sites-available, then a2enmod djang0 to enable. run cerbot for ssl after this to apply the ssl configuration?  many thanks

These are all things I can't help with as they are specific to your Linux distribution as to how they are handled.

In general, I would suggest making sure you read:


and watch:


Graham

--
You received this message because you are subscribed to the Google Groups "modwsgi" group.
To unsubscribe from this group and stop receiving emails from it, send an email to modwsgi+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/modwsgi/5736fe78-3515-4b3a-953a-1a440831584c%40googlegroups.com.

Reply all
Reply to author
Forward
0 new messages