You’re right, @Antonis, that I don’t want my Django source code exposed. No 
sysadmin would.  I have since moved my Django project folder to my home 
user’s directory. However (out of curiosity), if I continued to house 
Django in my public_html folder (which I am not any more, but say if i did) 
I would think that my .htaccess config file would prevent unauthorized 
access to my Django source.  Am I right?

I didn’t realize that Django was suppose to be run using wsgi.  I was just 
foolishly running the server with ``$ python manage.py runserver 
0.0.0.0:8000`` like when I was testing locally when I was coding my app. 
The keyword here is mod_wsgi.  So I found this guide 
<https://www.digitalocean.com/community/tutorials/how-to-serve-django-applications-with-apache-and-mod_wsgi-on-ubuntu-14-04>.
 
I followed along but the issue I now have is that Apache serves my 
public_html folder (just some light  HTML, CSS and Js).  Serving these 
contents take priority over Django.  I’m OK with this. I would prefer to 
keep my public_html folder accessible as it is, but how do I arrange for 
wsgi to serve Django from a subdirectory, say: www.angeles4four.info/cel2fah 
or something like that? 

@Mulianto:

An example of a static file would be a style sheet, like: 
~/cel2fah/static/admin/css/responsive.css

How would trying to access this CSS file help?

I tried: 

http://www.angeles4four.info:8000/cel2fah/static/admin/css/responsive.css 

https://www.angeles4four.info:8000/cel2fah/static/admin/css/responsive.css 
<http://www.angeles4four.info:8000/cel2fah/static/admin/css/responsive.css> 

Both show “This site can’t be reached”

Here are the contents of my two apache configuration files.

/etc/apache2/sites-available/angeles4four.info.conf :

<VirtualHost *:80>



        ServerAdmin [email protected]

        ServerName angeles4four.info

        ServerAlias www.angeles4four.info

        DocumentRoot /var/www/html/angeles4four.info/public_html


        <Directory "/var/www/html/angeles4four.info/public_html">

                Options Indexes FollowSymlinks

                AllowOverride All

                Require all granted

        </Directory>


        ErrorLog ${APACHE_LOG_DIR}/error.log

        CustomLog ${APACHE_LOG_DIR}/access.log combined


        RewriteEngine on

        RewriteCond %{SERVER_NAME} =angeles4four.info [OR]

        RewriteCond %{SERVER_NAME} =www.angeles4four.info

        RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} 
[END,NE,R=permanent]


        Alias /static /home/tranq/cel2fah/static


        <Directory /home/tranq/cel2fah/static>

                Require all granted

        </Directory>


        <Directory /home/user/cel2fah/cel2fah/>

                <Files wsgi.py>

                Require all granted

                </Files>

        </Directory>


        WSGIDaemonProcess cel2fah python-path=/home/tranq/cel2fah 
python-home=/home/tranq/cel2fah/venv

        WSGIProcessGroup cel2fah

        WSGIScriptAlias / /home/tranq/cel2fah/cel2fah/wsgi.py


</VirtualHost>



And /etc/apache2/sites-available/angeles4four.info.conf :

<IfModule mod_ssl.c>



<VirtualHost *:443>

        ServerAdmin [email protected]

        ServerName angeles4four.info

        ServerAlias www.angeles4four.info

        DocumentRoot /var/www/html/angeles4four.info/public_html



        ErrorLog ${APACHE_LOG_DIR}/error.log

        CustomLog ${APACHE_LOG_DIR}/access.log combined


        Alias /static /home/tranq/cel2fah/static


        <Directory /home/tranq/cel2fah/static>

                Require all granted

        </Directory>


        <Directory /home/user/cel2fah/cel2fah/>

                <Files wsgi.py>

                Require all granted

                </Files>

        </Directory>


        # WSGIDaemonProcess cel2fah python-path=/home/tranq/cel2fah 
python-home=/home/tranq/cel2fah/venv

        # WSGIProcessGroup cel2fah

        # WSGIScriptAlias / /home/tranq/cel2fah/cel2fah/wsgi.py


        SSLCertificateFile /etc/letsencrypt/live/angeles4four.info/cert.pem

        SSLCertificateKeyFile 
/etc/letsencrypt/live/angeles4four.info/privkey.pem

        Include /etc/letsencrypt/options-ssl-apache.conf

        SSLCertificateChainFile 
/etc/letsencrypt/live/angeles4four.info/chain.pem

</VirtualHost>


</IfModule>


Thanks to you both for your help so far.

On Saturday, January 20, 2018 at 10:00:57 PM UTC-5, drone4four wrote:
>
> I’ve played with a little Django (v2.0.1) locally. Now I am trying to 
> implement a test case on my production Apache web server. I’m running an 
> Ubuntu 14.04 DigitalOcean droplet (will upgrade to 18.04 later this year).
>
> I got Django running.
>
> Here it is: http://www.angeles4four.info:8000/
>
> Before I log into my admin panel, I figure it’s best practices to set up 
> HTTPS first. But when I visit that URL, Chrome throws this message:
>
>
> This site can’t provide a secure connection http://www.angeles4four.info 
>> sent an invalid response. ERR_SSL_PROTOCOL_ERROR
>
>
> And my shell on my server shows this message:
>
> [20/Jan/2018 23:54:39] "GET / HTTP/1.1" 200 16559 [21/Jan/2018 00:01:23] 
>> code 400, message Bad request syntax 
>> ('\x16\x03\x01\x00Ì\x01\x00\x00È\x03\x03&6U\x10µ\x82\x97\x7f´8\x1e«\x0e¿ÿ§\x89æ\x82\r¢G§\x01ç°P%\x80)ÕÃ\x00\x00\x1c
>>  
>> * À+À/À,À0̨̩À\x13À\x14\x00\x9c\x00\x9d\x00/\x005\x00') [21/Jan/2018 
>> 00:01:23] *You're accessing the development server over HTTPS, but it 
>> only supports HTTP.*
>
>
> That’s because SSL isn’t set up. My current SSL Certificate Authority is 
> Let’s Encrypt. SSL is running properly for my public_html content but not 
> for my recent deployment of Django.
>
> I found some resources elsewhere on SO for setting up SSL with Django.
>
> In an SO post titled, “Configure SSL Certificate on Apache for Django 
> Application (mod_wsgi)”, a highly upvoted answer by Alexey Kuleshevich 
> suggests a template for 000-default.conf and default-ssl.conf for Apache 
> vhosts. See here: Configure SSL Certificate on Apache for Django 
> Application (mod_wsgi) 
> <https://stackoverflow.com/questions/32812570/configure-ssl-certificate-on-apache-for-django-application-mod-wsgi>
>
> I did my best to change up the suggested values and entries so that they 
> refer to my specific configuration. Here are what these two vhost 
> configuration files of mine look like now.
>
> /etc/apache2/sites-available/angeles4four.info-le-ssl.conf:
>
> <IfModule mod_ssl.c> 
> <VirtualHost *:443>
> #ServerName http://www.example.com
> ServerAdmin [email protected]
> ServerName angeles4four.info
> ServerAlias http://www.angeles4four.info
> DocumentRoot /var/www/html/angeles4four.info/public_html
>
>
> ErrorLog ${APACHE_LOG_DIR}/error.log
> CustomLog ${APACHE_LOG_DIR}/access.log combined
>
>
> # Django Application
> Alias /static /var/www/html/
> angeles4four.info/public_html/Cel2FahConversion
> <Directory /var/www/html/angeles4four.info/public_html/Cel2FahConversion>
> Require all granted
> </Directory>
> <Directory /var/www/html/angeles4four.info/public_html/Cel2FahConversion>
> <Files wsgi.py>
> Require all granted
> </Files>
> </Directory>
> WGIDaemonProcess cel python-path=/var/www/html/
> angeles4four.info/public_html/Cel2FahConversion/venv/bin/python3
> WSGIProcessGroup cel
> WSGIScriptAlias / /var/www/html/
> angeles4four.info/public_html/Cel2FahConversion/Cel2FahConversion/Cel2FahConversion/wsgi.py
>
>
> SSLCertificateFile /etc/letsencrypt/live/angeles4four.info/cert.pem
> SSLCertificateKeyFile /etc/letsencrypt/live/angeles4four.info/privkey.pem
> Include /etc/letsencrypt/options-ssl-apache.conf
> SSLCertificateChainFile /etc/letsencrypt/live/angeles4four.info/chain.pem
> </VirtualHost>
> </IfModule>
>
>
> angeles4four.info.conf:
>
> Quote:
> <VirtualHost *:80>
>
>
> #ServerName http://www.example.com
> ServerAdmin [email protected]
> ServerName angeles4four.info
> ServerAlias http://www.angeles4four.info
> DocumentRoot /var/www/html/angeles4four.info/public_html
> <Directory "/var/www/html/angeles4four.info/public_html">
> Options Indexes FollowSymlinks
> AllowOverride All
> Require all granted
> </Directory>
>
>
> ErrorLog ${APACHE_LOG_DIR}/error.log
> CustomLog ${APACHE_LOG_DIR}/access.log combined
>
>
> RewriteEngine on
> RewriteCond %{SERVER_NAME} =angeles4four.info [OR]
> RewriteCond %{SERVER_NAME} =www.angeles4four.info
> RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
> </VirtualHost>
>
> No dice. I still get the same traceback as I initially shared.
>
> The next SO post I came across suggests modifying settings.py. Here it is: 
> Error 
> "You're accessing the development server over HTTPS, but it only supports 
> HTTP" 
> <https://stackoverflow.com/questions/35536491/error-youre-accessing-the-development-server-over-https-but-it-only-supports/41444706>
>
> The upvoted suggestion here by YoYo is to modify session cookies and 
> secure SSL redirect. YoYo also recommends managing base, local, production 
> settings which doesn’t really apply to me. So I tried adding these three 
> lines to my settings.py:
>
>
> SESSION_COOKIE_SECURE = True
> CSRF_COOKIE_SECURE = True
> SECURE_SSL_REDIRECT = True
>
>
> My python3 manage.py runserver shell traceback still says: *“You're 
> accessing the development server over HTTPS, but it only supports HTTP.”*
>
> Any ideas? What else could I try?
>
> Thanks for your attention.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/89ddc6b5-140a-485f-9493-9e850fbb741a%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to