1
votes

I am trying to deploy an existing django app that is running on my Ubuntu Server 14.04. Everything works on localhost from the server, but I have no idea how to link the server's IP address to the django app that I want. I have read countless tutorials and they fail in the sense of lack of information, which leaves me at this final step.


    # This is the main Apache server configuration file.  It contains the
    # configuration directives that give the server its instructions.
    # See http://httpd.apache.org/docs/2.4/ for detailed information about
    # the directives and /usr/share/doc/apache2/README.Debian about Debian specific
    # hints.
    #
    #
    # Summary of how the Apache 2 configuration works in Debian:
    # The Apache 2 web server configuration in Debian is quite different to
    # upstream's suggested way to configure the web server. This is because Debian's
    # default Apache2 installation attempts to make adding and removing modules,
    # virtual hosts, and extra configuration directives as flexible as possible, in
    # order to make automating the changes and administering the server as easy as
    # possible.

    # It is split into several files forming the configuration hierarchy outlined
    # below, all located in the /etc/apache2/ directory:
    #
    #   /etc/apache2/
    #   |-- apache2.conf
    #   |   `--  ports.conf
    #   |-- mods-enabled
    #   |   |-- *.load
    #   |   `-- *.conf
    #   |-- conf-enabled
    #   |   `-- *.conf
    #   `-- sites-enabled
    #       `-- *.conf
    #
    #
    # * apache2.conf is the main configuration file (this file). It puts the pieces
    #   together by including all remaining configuration files when starting up the
    #   web server.
    #
    # * ports.conf is always included from the main configuration file. It is
    #   supposed to determine listening ports for incoming connections which can be
    #   customized anytime.
    #
    # * Configuration files in the mods-enabled/, conf-enabled/ and sites-enabled/
    #   directories contain particular configuration snippets which manage modules,
    #   global configuration fragments, or virtual host configurations,
    #   respectively.
    #
    #   They are activated by symlinking available configuration files from their
    #   respective *-available/ counterparts. These should be managed by using our
    #   helpers a2enmod/a2dismod, a2ensite/a2dissite and a2enconf/a2disconf. See
    #   their respective man pages for detailed information.
    #
    # * The binary is called apache2. Due to the use of environment variables, in
    #   the default configuration, apache2 needs to be started/stopped with
    #   /etc/init.d/apache2 or apache2ctl. Calling /usr/bin/apache2 directly will not
    #   work with the default configuration.


    # Global configuration
    #

    #
    # ServerRoot: The top of the directory tree under which the server's
    # configuration, error, and log files are kept.
    #
    # NOTE!  If you intend to place this on an NFS (or otherwise network)
    # mounted filesystem then please read the Mutex documentation (available
    # at );
    # you will save yourself a lot of trouble.
    #
    # Do NOT add a slash at the end of the directory path.
    #
    #ServerRoot "/etc/apache2"
    ServerName localhost

    #
    # The accept serialization lock file MUST BE STORED ON A LOCAL DISK.
    #
    Mutex file:${APACHE_LOCK_DIR} default

    #
    # PidFile: The file in which the server should record its process
    # identification number when it starts.
    # This needs to be set in /etc/apache2/envvars
    #
    PidFile ${APACHE_PID_FILE}

    #
    # Timeout: The number of seconds before receives and sends time out.
    #
    Timeout 300

    #
    # KeepAlive: Whether or not to allow persistent connections (more than
    # one request per connection). Set to "Off" to deactivate.
    #
    KeepAlive On

    #
    # MaxKeepAliveRequests: The maximum number of requests to allow
    # during a persistent connection. Set to 0 to allow an unlimited amount.
    # We recommend you leave this number high, for maximum performance.
    #
    MaxKeepAliveRequests 100

    #
    # KeepAliveTimeout: Number of seconds to wait for the next request from the
    # same client on the same connection.
    #
    KeepAliveTimeout 5


    # These need to be set in /etc/apache2/envvars
    User ${APACHE_RUN_USER}
    Group ${APACHE_RUN_GROUP}

    #
    # HostnameLookups: Log the names of clients or just their IP addresses
    # e.g., www.apache.org (on) or 204.62.129.132 (off).
    # The default is off because it'd be overall better for the net if people
    # had to knowingly turn this feature on, since enabling it means that
    # each client request will result in AT LEAST one lookup request to the
    # nameserver.
    #
    HostnameLookups Off

    # ErrorLog: The location of the error log file.
    # If you do not specify an ErrorLog directive within a 
    # container, error messages relating to that virtual host will be
    # logged here.  If you *do* define an error logfile for a 
    # container, that host's errors will be logged there and not here.
    #
    ErrorLog ${APACHE_LOG_DIR}/error.log

    #
    # LogLevel: Control the severity of messages logged to the error_log.
    # Available values: trace8, ..., trace1, debug, info, notice, warn,
    # error, crit, alert, emerg.
    # It is also possible to configure the log level for particular modules, e.g.
    # "LogLevel info ssl:warn"
    #
    LogLevel warn

    # Include module configuration:
    IncludeOptional mods-enabled/*.load
    IncludeOptional mods-enabled/*.conf

    # Include list of ports to listen on
    Include ports.conf

    # Sets the default security model of the Apache2 HTTPD server. It does
    # not allow access to the root filesystem outside of /usr/share and /var/www.
    # The former is used by web applications packaged in Debian,
    # the latter may be used for local directories served by the web server. If
    # your system is serving content from a sub-directory in /srv you must allow
    # access here, or in any related virtual host.
    
        Options FollowSymLinks
        AllowOverride None
        Require all denied
    

    
        AllowOverride None
        Require all granted
    

    
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    

    #
    #   Options Indexes FollowSymLinks
    #   AllowOverride None
    #   Require all granted
    #




    # AccessFileName: The name of the file to look for in each directory
    # for additional configuration directives.  See also the AllowOverride
    # directive.
    #
    AccessFileName .htaccess

    #
    # The following lines prevent .htaccess and .htpasswd files from being
    # viewed by Web clients.
    #
    
        Require all denied
    


    #
    # The following directives define some format nicknames for use with
    # a CustomLog directive.
    #
    # These deviate from the Common Log Format definitions in that they use %O
    # (the actual bytes sent including headers) instead of %b (the size of the
    # requested file), because the latter makes it impossible to detect partial
    # requests.
    #
    # Note that the use of %{X-Forwarded-For}i instead of %h is not recommended.
    # Use mod_remoteip instead.
    #
    LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
    LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %O" common
    LogFormat "%{Referer}i -> %U" referer
    LogFormat "%{User-agent}i" agent

    # Include of directories ignores editors' and dpkg's backup files,
    # see README.Debian for details.

    # Include generic snippets of statements
    IncludeOptional conf-enabled/*.conf

    # Include the virtual host configurations:
    IncludeOptional sites-enabled/*.conf

    LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so

    WSGIScriptAlias / /var/www/html/scheduler/sched_app/sched_site/wsgi.py
    WSGIPythonPath /var/www/html/scheduler/sced_app:/home/user/.virtualenvs/sched_app.v0.1/lib/python2.7/site-packages

    
        
            Require all granted
        
    

    Alias /templates/admin/ /var/www/html/scheduler/sched_app/templates/admin/

    
        Require all granted
    

    # vim: syntax=apache ts=4 sw=4 sts=4 sr noet

Error.log:


[Wed May 18 10:23:27.388123 2016] [:error] [pid 11139:tid 140244385715968] [remote 10.128.239.248:6711]   File "/home/openflow/.virtualenvs/sched_app.v0.1/lib/python2.7/site-packages/django/conf/__init__.py", line 43, in _setup
    [Wed May 18 10:23:27.388132 2016] [:error] [pid 11139:tid 140244385715968] [remote 10.128.239.248:6711]     self._wrapped = Settings(settings_module)
    [Wed May 18 10:23:27.388165 2016] [:error] [pid 11139:tid 140244385715968] [remote 10.128.239.248:6711]   File "/home/openflow/.virtualenvs/sched_app.v0.1/lib/python2.7/site-packages/django/conf/__init__.py", line 99, in __init__
    [Wed May 18 10:23:27.388173 2016] [:error] [pid 11139:tid 140244385715968] [remote 10.128.239.248:6711]     mod = importlib.import_module(self.SETTINGS_MODULE)
    [Wed May 18 10:23:27.397408 2016] [:error] [pid 11139:tid 140244385715968] [remote 10.128.239.248:6711]   File "/usr/lib/python3.4/importlib/__init__.py", line 109, in import_module
    [Wed May 18 10:23:27.397428 2016] [:error] [pid 11139:tid 140244385715968] [remote 10.128.239.248:6711]     return _bootstrap._gcd_import(name[level:], package, level)
    [Wed May 18 10:23:27.397461 2016] [:error] [pid 11139:tid 140244385715968] [remote 10.128.239.248:6711]   File "", line 2254, in _gcd_import
    [Wed May 18 10:23:27.397484 2016] [:error] [pid 11139:tid 140244385715968] [remote 10.128.239.248:6711]   File "", line 2237, in _find_and_load
    [Wed May 18 10:23:27.397506 2016] [:error] [pid 11139:tid 140244385715968] [remote 10.128.239.248:6711]   File "", line 2212, in _find_and_load_unlocked
    [Wed May 18 10:23:27.397527 2016] [:error] [pid 11139:tid 140244385715968] [remote 10.128.239.248:6711]   File "", line 321, in _call_with_frames_removed
    [Wed May 18 10:23:27.397548 2016] [:error] [pid 11139:tid 140244385715968] [remote 10.128.239.248:6711]   File "", line 2254, in _gcd_import
    [Wed May 18 10:23:27.397569 2016] [:error] [pid 11139:tid 140244385715968] [remote 10.128.239.248:6711]   File "", line 2237, in _find_and_load
    [Wed May 18 10:23:27.397590 2016] [:error] [pid 11139:tid 140244385715968] [remote 10.128.239.248:6711]   File "", line 2224, in _find_and_load_unlocked
    [Wed May 18 10:23:27.397627 2016] [:error] [pid 11139:tid 140244385715968] [remote 10.128.239.248:6711] ImportError: No module named 'sched_site'
    [Wed May 18 10:46:10.604704 2016] [:error] [pid 11141:tid 140244492294016] Exception ignored in: 
    [Wed May 18 10:46:10.604704 2016] [:error] [pid 11140:tid 140244492294016] Exception ignored in: 
    [Wed May 18 10:46:10.604781 2016] [:error] [pid 11141:tid 140244492294016] Traceback (most recent call last):
    [Wed May 18 10:46:10.604816 2016] [:error] [pid 11141:tid 140244492294016]   File "/usr/lib/python3.4/threading.py", line 1288, in _shutdown
    [Wed May 18 10:46:10.604816 2016] [:error] [pid 11140:tid 140244492294016] Traceback (most recent call last):
    [Wed May 18 10:46:10.604833 2016] [:error] [pid 11140:tid 140244492294016]   File "/usr/lib/python3.4/threading.py", line 1288, in _shutdown
    [Wed May 18 10:46:10.621986 2016] [:error] [pid 11140:tid 140244492294016]     assert tlock is not None
    [Wed May 18 10:46:10.621984 2016] [:error] [pid 11141:tid 140244492294016]     assert tlock is not None
    [Wed May 18 10:46:10.622011 2016] [:error] [pid 11140:tid 140244492294016] AssertionError: 
    [Wed May 18 10:46:10.622019 2016] [:error] [pid 11141:tid 140244492294016] AssertionError: 
    [Wed May 18 10:46:10.664211 2016] [mpm_event:notice] [pid 11136:tid 140244492294016] AH00491: caught SIGTERM, shutting down
    [Wed May 18 10:46:10.677625 2016] [:error] [pid 11139:tid 140244492294016] Exception ignored in: 
    [Wed May 18 10:46:10.677653 2016] [:error] [pid 11139:tid 140244492294016] Traceback (most recent call last):
    [Wed May 18 10:46:10.677671 2016] [:error] [pid 11139:tid 140244492294016]   File "/usr/lib/python3.4/threading.py", line 1288, in _shutdown
    [Wed May 18 10:46:10.678561 2016] [:error] [pid 11139:tid 140244492294016]     assert tlock is not None
    [Wed May 18 10:46:10.678583 2016] [:error] [pid 11139:tid 140244492294016] AssertionError: 
    [Wed May 18 10:46:10.723109 2016] [:error] [pid 11139:tid 140244492294016] Exception ignored in: 
    [Wed May 18 10:46:10.723146 2016] [:error] [pid 11139:tid 140244492294016] Traceback (most recent call last):
    [Wed May 18 10:46:10.723160 2016] [:error] [pid 11139:tid 140244492294016]   File "/usr/lib/python3.4/threading.py", line 1288, in _shutdown
    [Wed May 18 10:46:10.723817 2016] [:error] [pid 11139:tid 140244492294016]     assert tlock is not None
    [Wed May 18 10:46:10.723836 2016] [:error] [pid 11139:tid 140244492294016] AssertionError: 
    [Wed May 18 10:46:11.656848 2016] [so:warn] [pid 11775:tid 140574671251328] AH01574: module wsgi_module is already loaded, skipping
    [Wed May 18 10:46:11.658535 2016] [:warn] [pid 11776:tid 140574671251328] mod_wsgi: Compiled for Python/3.4.0.
    [Wed May 18 10:46:11.658572 2016] [:warn] [pid 11776:tid 140574671251328] mod_wsgi: Runtime using Python/3.4.3.
    [Wed May 18 10:46:11.659664 2016] [mpm_event:notice] [pid 11776:tid 140574671251328] AH00489: Apache/2.4.7 (Ubuntu) mod_wsgi/3.4 Python/3.4.3 configured -- resuming normal operations
    [Wed May 18 10:46:11.659691 2016] [core:notice] [pid 11776:tid 140574671251328] AH00094: Command line: '/usr/sbin/apache2'
    [Wed May 18 10:46:21.527321 2016] [:error] [pid 11779:tid 140574564673280] [remote 10.128.239.248:19735] mod_wsgi (pid=11779): Target WSGI script '/var/www/html/scheduler.marist.edu/sched_app/sched_site/wsgi.py' cannot be loaded as Python module.
    [Wed May 18 10:46:21.527422 2016] [:error] [pid 11779:tid 140574564673280] [remote 10.128.239.248:19735] mod_wsgi (pid=11779): Exception occurred processing WSGI script '/var/www/html/scheduler.marist.edu/sched_app/sched_site/wsgi.py'.
    [Wed May 18 10:46:21.527483 2016] [:error] [pid 11779:tid 140574564673280] [remote 10.128.239.248:19735] Traceback (most recent call last):
    [Wed May 18 10:46:21.527701 2016] [:error] [pid 11779:tid 140574564673280] [remote 10.128.239.248:19735]   File "/var/www/html/scheduler.marist.edu/sched_app/sched_site/wsgi.py", line 16, in 
    [Wed May 18 10:46:21.527713 2016] [:error] [pid 11779:tid 140574564673280] [remote 10.128.239.248:19735]     application = get_wsgi_application()
    [Wed May 18 10:46:21.527845 2016] [:error] [pid 11779:tid 140574564673280] [remote 10.128.239.248:19735]   File "/home/openflow/.virtualenvs/sched_app.v0.1/lib/python2.7/site-packages/django/core/wsgi.py", line 13, in get_wsgi_application
    [Wed May 18 10:46:21.527870 2016] [:error] [pid 11779:tid 140574564673280] [remote 10.128.239.248:19735]     django.setup()
    [Wed May 18 10:46:21.528001 2016] [:error] [pid 11779:tid 140574564673280] [remote 10.128.239.248:19735]   File "/home/openflow/.virtualenvs/sched_app.v0.1/lib/python2.7/site-packages/django/__init__.py", line 17, in setup
    [Wed May 18 10:46:21.528012 2016] [:error] [pid 11779:tid 140574564673280] [remote 10.128.239.248:19735]     configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
    [Wed May 18 10:46:21.528182 2016] [:error] [pid 11779:tid 140574564673280] [remote 10.128.239.248:19735]   File "/home/openflow/.virtualenvs/sched_app.v0.1/lib/python2.7/site-packages/django/conf/__init__.py", line 55, in __getattr__
    [Wed May 18 10:46:21.528193 2016] [:error] [pid 11779:tid 140574564673280] [remote 10.128.239.248:19735]     self._setup(name)
    [Wed May 18 10:46:21.528232 2016] [:error] [pid 11779:tid 140574564673280] [remote 10.128.239.248:19735]   File "/home/openflow/.virtualenvs/sched_app.v0.1/lib/python2.7/site-packages/django/conf/__init__.py", line 43, in _setup
    [Wed May 18 10:46:21.528240 2016] [:error] [pid 11779:tid 140574564673280] [remote 10.128.239.248:19735]     self._wrapped = Settings(settings_module)
    [Wed May 18 10:46:21.528274 2016] [:error] [pid 11779:tid 140574564673280] [remote 10.128.239.248:19735]   File "/home/openflow/.virtualenvs/sched_app.v0.1/lib/python2.7/site-packages/django/conf/__init__.py", line 99, in __init__
    [Wed May 18 10:46:21.528282 2016] [:error] [pid 11779:tid 140574564673280] [remote 10.128.239.248:19735]     mod = importlib.import_module(self.SETTINGS_MODULE)
    [Wed May 18 10:46:21.528442 2016] [:error] [pid 11779:tid 140574564673280] [remote 10.128.239.248:19735]   File "/usr/lib/python3.4/importlib/__init__.py", line 109, in import_module
    [Wed May 18 10:46:21.528453 2016] [:error] [pid 11779:tid 140574564673280] [remote 10.128.239.248:19735]     return _bootstrap._gcd_import(name[level:], package, level)
    [Wed May 18 10:46:21.528478 2016] [:error] [pid 11779:tid 140574564673280] [remote 10.128.239.248:19735]   File "", line 2254, in _gcd_import
    [Wed May 18 10:46:21.528501 2016] [:error] [pid 11779:tid 140574564673280] [remote 10.128.239.248:19735]   File "", line 2237, in _find_and_load
    [Wed May 18 10:46:21.528524 2016] [:error] [pid 11779:tid 140574564673280] [remote 10.128.239.248:19735]   File "", line 2212, in _find_and_load_unlocked
    [Wed May 18 10:46:21.528546 2016] [:error] [pid 11779:tid 140574564673280] [remote 10.128.239.248:19735]   File "", line 321, in _call_with_frames_removed
    [Wed May 18 10:46:21.528568 2016] [:error] [pid 11779:tid 140574564673280] [remote 10.128.239.248:19735]   File "", line 2254, in _gcd_import
    [Wed May 18 10:46:21.528589 2016] [:error] [pid 11779:tid 140574564673280] [remote 10.128.239.248:19735]   File "", line 2237, in _find_and_load
    [Wed May 18 10:46:21.528611 2016] [:error] [pid 11779:tid 140574564673280] [remote 10.128.239.248:19735]   File "", line 2224, in _find_and_load_unlocked
    [Wed May 18 10:46:21.528642 2016] [:error] [pid 11779:tid 140574564673280] [remote 10.128.239.248:19735] ImportError: No module named 'sched_site'

Directory Structure:

app: /var/www/html/scheduler/sched_app/sched_app
wsgi.py: /var/www/html/scheduler/sched_app/sched_site
virtualenv: /~/.virtualenvs/sched_app.v0.1
2
could you post the code of Apache conf file? and Apache error log would be also helpful.Leonard2
your django wsgi file needs to be pointed to by your apache virtualhost file in your sites_enabled and sites_available folders. Your server uses these files to figure out which application folder to hitChris Hawkes
First of all, thanks for the speedy response The wsgi file I believe is pointed, I am not sure though. @Anoop I went through the tutorial and I get a '404 error' when I type in the IP address of the server in my browserM. Barbieri
Youcompleted all the steps and getting a 404 error now? Can you check the apache error log?Anoop

2 Answers

1
votes

Add this to wsgi.py file and try.

import sys

sys.path.append('/var/www/html/scheduler/sched_app')
0
votes

Try this guide:

yum check-update 
yum groupinstall -y "Development tools"
----------------------------------------------------------------
Apache2.4
----------------------------------------------------------------
yum install -y httpd httpd-devel
systemctl start httpd.service
systemctl enable httpd.service
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload

chgrp -R apache /var/www/html
find /var/www/html -type d -exec chmod g+rx {} +
find /var/www/html -type f -exec chmod g+r {} +

chown -R myuser /var/www/html/
find /var/www/html -type d -exec chmod u+rwx {} +
find /var/www/html -type f -exec chmod u+rw {} +

find /var/www/html -type d -exec chmod g+s {} +

----------------------------------------------------------------
MySQL
----------------------------------------------------------------
yum install -y mariadb-server mariadb
systemctl start mariadb.service
systemctl enable mariadb.service
mysql_secure_installation
----------------------------------------------------------------
php, phpmyadmin along with other dependencies
----------------------------------------------------------------
subscription-manager repos --enable=rhel-7-server-optional-rpms

yum install -y php php-mysql php-gd php-pear php-mbstring php-pgsql phpmyadmin
vi /etc/httpd/conf.d/phpMyAdmin.conf
Add IP in conf.
systemctl restart httpd.service
----------------------------------------------------------------
Python3.5 along with lib and devel packages
----------------------------------------------------------------
yum install -y https://rhel7.iuscommunity.org/ius-release.rpm
yum install -y python35u python35u-libs python35u-devel python35u-pip
pip3.5 install virtualenv
----------------------------------------------------------------
mod-wsgi
----------------------------------------------------------------
wget https://github.com/GrahamDumpleton/mod_wsgi/archive/4.5.14.tar.gz
tar -zxvf 4.5.14.tar.gz
cd mod_wsgi-4.5.14
./configure --with-python=/usr/bin/python3.5
make
make install
chmod 755 /usr/lib64/httpd/modules/mod_wsgi.so
----------------------------------------------------------------
myportal.conf
----------------------------------------------------------------
vi /etc/httpd/conf.d/myportal.conf

LoadModule wsgi_module /usr/lib64/httpd/modules/mod_wsgi.so
<VirtualHost *:80>
  ServerAdmin [email protected]
  ServerName myportal
  ServerAlias myportal.com
  DocumentRoot /var/www/html/myportal/src/

  WSGIDaemonProcess myportal python-path=/var/www/html/myportal/src:/var/www/html/myportal/venv/lib/python3.5/site-packages
  WSGIApplicationGroup myportal
  WSGIScriptAlias / /var/www/html/myportal/src/myportal/wsgi.py process-group=myportal

  <Directory /var/www/html/myportal/src>
    Require all granted
  </Directory>

  <Directory /var/www/html/myportal/src/myportal>
    <Files wsgi.py>
      Require all granted
    </Files>
  </Directory>

</VirtualHost>