That makes sense. We did indeed rearrange the structure - we were following
the "Two-Scoops of Django" book, which recommended the config folder.
I've changed the line in wsgi.py to os.environ["DJANGO_SETTINGS_MODULE"] =
"gov_salaries.config.settings" and then changed it in the manage.py file to
match.
I've gotten rid of the sys.path.append() calls and added
python-path=/usr/local/webapps to the daemon process in the httpd.conf as
you recommend
Unfortunately I'm still getting the 'Target WSGI script cannot be loaded..."
On Wednesday, February 7, 2018 at 3:27:05 PM UTC-8, Graham Dumpleton wrote:
>
> There are a few issues here to sort out.
>
> You said the wsgi.py file contained:
>
> import sys
> import site
> import os
>
> sys.path.append('/usr/local/webapps/gov_salaries')
> sys.path.append('/usr/local/webapps/gov_salaries/salaries')
>
> from django.core.wsgi import get_wsgi_application
>
> #os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings")
> os.environ["DJANGO_SETTINGS_MODULE"] = "gov_salaries.settings"
> application = get_wsgi_application()
>
>
> The sys.path.append() calls are intended to say where the project code is.
> It should add the directory which is parent to the project, not the project
> directory itself. You shouldn't have to add any sub directories of the
> project directory either.
>
> Ideally though you would not do it this way when using mod_wsgi daemon
> mode. The better way is to use the python-path option to WSGIDaemonProcess.
>
> WSGIDaemonProcess salaries \
> python-home=/usr/local/webapps/gov_salaries/gov_venv \
> python-path=/usr/local/webapps
>
>
> Problem is that what you are setting DJANGO_SETTINGS_MODULE to in the
> wsgi.py file doesn't match what you are using. You said the Django settings
> file was at:
>
> /usr/local/webapps/gov_salaries/config/settings.py
>
> The import path for that would mean should use:
>
> os.environ["DJANGO_SETTINGS_MODULE"] = "gov_salaries.config.settings"
>
> Normally it would be:
>
> os.environ["DJANGO_SETTINGS_MODULE"] = "gov_salaries.settings"
>
> but your code appears to have been reorganised.
>
> When pushing config down a level like that you need to be a bit careful
> and ensure BASE_DIR in the settings module file has been changed to correct
> work out the top level directory.
>
> To sort out what probably has to be used, look in the manage.py file and
> see what DJANGO_SETTINGS_MODULE was being set to in that. It should be the
> same.
>
> Graham
>
> On 8 Feb 2018, at 10:11 am, David Cansler <[email protected] <javascript:>>
> wrote:
>
> /usr/local/webapps/gov_salaries/config/settings.py
>
> On Wednesday, February 7, 2018 at 3:05:37 PM UTC-8, Graham Dumpleton wrote:
>
>> Lets try this a different way. What is the full path to the Django
>> settings.py file for the project.
>>
>> Graham
>>
>> On 8 Feb 2018, at 9:36 am, David Cansler <[email protected]> wrote:
>>
>> Thanks for your quick response Graham.
>> This is our first django app and while we have developed the app somewhat
>> successfully (it's still a work in progress), deployment has been left to
>> me. I couldn't find a 'definitive' place where I should put the app, so I
>> made a webapps directory at /usr/local (/usr/local/webapps/gov_salaries)
>> Here's my attempt at doing what you asked to help me troubleshoot.
>> (again, thanks for taking the time):
>>
>> (gov_venv) [devwebuser@87670-newsdev gov_salaries]$ python manage.py shell
>> Python 3.6.4 (default, Feb 2 2018, 16:08:02)
>> [GCC 4.4.7 20120313 (Red Hat 4.4.7-18)] on linux
>> Type "help", "copyright", "credits" or "license" for more information.
>> (InteractiveConsole)
>> >>> print(gov_salaries.__file__)
>> Traceback (most recent call last):
>> File "<console>", line 1, in <module>
>> NameError: name 'gov_salaries' is not defined
>> >>> import gov_salaries
>> Traceback (most recent call last):
>> File "<console>", line 1, in <module>
>> ModuleNotFoundError: No module named 'gov_salaries'
>> >>> import salaries
>> >>> print(salaries.__file__)
>> /usr/local/webapps/gov_salaries/salaries/__init__.py
>>
>>
>>
>>> Where is the gov_salaries package installed?
>>>
>>> If you can import it from command line Python, what does:
>>>
>>> print(gov_salaries.__file__)
>>>
>>> show?
>>>
>>> Graham
>>>
>>> On 8 Feb 2018, at 7:09 am, David Cansler <[email protected]> wrote:
>>>
>>> I'm trying to deploy a Django app onto a Centos 6.9 server and I'm
>>> getting the error Target WSGI script "wsgi.py" cannot be loaded as pyhton
>>> module.
>>> I've run through the troubleshooting tips and am now at a point where I
>>> could use some help.
>>> Here's my setup
>>>
>>> *The server:*
>>> Last Update Run: Sun Feb 04 09:00:34 +0000 2018, state OK
>>> Patching Group : auto
>>> OS Detection : CentOS 6.9 amd64 (yum)
>>> KERNEL updates : false (2.6.32-504.23.4.el6.x86_64)
>>>
>>>
>>> *[devwebuser@87670-newsdev gov_salaries]$ httpd -V*
>>> Server version: Apache/2.2.15 (Unix)
>>> Server built: Oct 19 2017 16:43:38
>>> Server's Module Magic Number: 20051115:25
>>> Server loaded: APR 1.3.9, APR-Util 1.3.9
>>> Compiled using: APR 1.3.9, APR-Util 1.3.9
>>> Architecture: 64-bit
>>> Server MPM: Prefork
>>> threaded: no
>>> forked: yes (variable process count)
>>> Server compiled with....
>>> -D APACHE_MPM_DIR="server/mpm/prefork"
>>> -D APR_HAS_SENDFILE
>>> -D APR_HAS_MMAP
>>> -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
>>> -D APR_USE_SYSVSEM_SERIALIZE
>>> -D APR_USE_PTHREAD_SERIALIZE
>>> -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
>>> -D APR_HAS_OTHER_CHILD
>>> -D AP_HAVE_RELIABLE_PIPED_LOGS
>>> -D DYNAMIC_MODULE_LIMIT=128
>>> -D HTTPD_ROOT="/etc/httpd"
>>> -D SUEXEC_BIN="/usr/sbin/suexec"
>>> -D DEFAULT_PIDLOG="run/httpd.pid"
>>> -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
>>> -D DEFAULT_LOCKFILE="logs/accept.lock"
>>> -D DEFAULT_ERRORLOG="logs/error_log"
>>> -D AP_TYPES_CONFIG_FILE="conf/mime.types"
>>> -D SERVER_CONFIG_FILE="conf/httpd.conf"
>>>
>>> *Installed python3.6.4:*
>>> ./configure --prefix=/usr/local --enable-shared LDFLAGS="-Wl,-rpath
>>> /usr/local/lib"
>>>
>>> *Installed mod_wsgi-4.5.24*
>>> ./configure --with-python=/usr/local/bin/python3.6
>>> LD_RUN_PATH=/usr/local/lib make
>>> sudo make install
>>>
>>> *Looks good with mod_wsgi and shared python library:*
>>> [devwebuser@87670-newsdev modules]$ ldd /etc/httpd/modules/mod_wsgi.so
>>> linux-vdso.so.1 => (0x00007fff9f3f3000)
>>> libpython3.6m.so.1.0 => /usr/local/lib/libpython3.6m.so.1.0
>>> (0x00007f4aa66a6000)
>>> libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f4aa647a000)
>>> libdl.so.2 => /lib64/libdl.so.2 (0x00007f4aa6276000)
>>> libutil.so.1 => /lib64/libutil.so.1 (0x00007f4aa6073000)
>>> librt.so.1 => /lib64/librt.so.1 (0x00007f4aa5e6a000)
>>> libm.so.6 => /lib64/libm.so.6 (0x00007f4aa5be6000)
>>> libc.so.6 => /lib64/libc.so.6 (0x00007f4aa5852000)
>>> /lib64/ld-linux-x86-64.so.2 (0x00000032f0c00000)
>>>
>>> *Create virtual environment, etc.:*
>>> [devwebuser@87670-newsdev gov_salaries]$ python3 -m venv
>>> /usr/local/webapps/gov_salaries/gov_venv
>>> [devwebuser@87670-newsdev gov_salaries]$ source
>>> /usr/local/webapps/gov_salaries/gov_venv/bin/activate
>>> (gov_venv) [devwebuser@87670-newsdev gov_salaries]$ pip install -r
>>> requirements.txt
>>> (gov_venv) [devwebuser@87670-newsdev gov_salaries]$ pip freeze
>>> Django==1.11.4
>>> django-bootstrap4==0.0.4
>>> django-crispy-forms==1.6.1
>>> django-debug-toolbar==1.9.1
>>> django-filter==1.0.4
>>> django-tables2==1.10.0
>>> psycopg2==2.7.3.2
>>> pytz==2017.2
>>> sqlparse==0.2.4
>>>
>>> *Location of virtual environment:*
>>> (gov_venv) [devwebuser@87670-newsdev gov_salaries]$ python -c 'import
>>> sys; print(sys.prefix)'
>>> /usr/local/webapps/gov_salaries/gov_venv
>>>
>>> *httpd.conf file (I deleted most commented lines for brevity):*
>>>
>>> ServerRoot "/etc/httpd"
>>>
>>> PidFile run/httpd.pid
>>>
>>> Timeout 60
>>>
>>> KeepAlive Off
>>> MaxKeepAliveRequests 100
>>>
>>> KeepAliveTimeout 15
>>>
>>> <IfModule prefork.c>
>>> StartServers 8
>>> MinSpareServers 5
>>> MaxSpareServers 20
>>> ServerLimit 256
>>> MaxClients 256
>>> MaxRequestsPerChild 4000
>>> </IfModule>
>>>
>>> <IfModule worker.c>
>>> StartServers 4
>>> MaxClients 300
>>> MinSpareThreads 25
>>> MaxSpareThreads 75
>>> ThreadsPerChild 25
>>> MaxRequestsPerChild 0
>>> </IfModule>
>>>
>>> Listen 80
>>>
>>> LoadModule auth_basic_module modules/mod_auth_basic.so
>>> LoadModule auth_digest_module modules/mod_auth_digest.so
>>> LoadModule authn_file_module modules/mod_authn_file.so
>>> LoadModule authn_alias_module modules/mod_authn_alias.so
>>> LoadModule authn_anon_module modules/mod_authn_anon.so
>>> LoadModule authn_dbm_module modules/mod_authn_dbm.so
>>> LoadModule authn_default_module modules/mod_authn_default.so
>>> LoadModule authz_host_module modules/mod_authz_host.so
>>> LoadModule authz_user_module modules/mod_authz_user.so
>>> LoadModule authz_owner_module modules/mod_authz_owner.so
>>> LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
>>> LoadModule authz_dbm_module modules/mod_authz_dbm.so
>>> LoadModule authz_default_module modules/mod_authz_default.so
>>> LoadModule ldap_module modules/mod_ldap.so
>>> LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
>>> # LoadModule include_module modules/mod_include.so
>>> LoadModule log_config_module modules/mod_log_config.so
>>> LoadModule logio_module modules/mod_logio.so
>>> LoadModule env_module modules/mod_env.so
>>> LoadModule ext_filter_module modules/mod_ext_filter.so
>>> LoadModule mime_magic_module modules/mod_mime_magic.so
>>> LoadModule expires_module modules/mod_expires.so
>>> LoadModule deflate_module modules/mod_deflate.so
>>> LoadModule headers_module modules/mod_headers.so
>>> LoadModule usertrack_module modules/mod_usertrack.so
>>> LoadModule setenvif_module modules/mod_setenvif.so
>>> LoadModule mime_module modules/mod_mime.so
>>> LoadModule dav_module modules/mod_dav.so
>>> LoadModule status_module modules/mod_status.so
>>> # LoadModule autoindex_module modules/mod_autoindex.so
>>> # LoadModule info_module modules/mod_info.so
>>> LoadModule dav_fs_module modules/mod_dav_fs.so
>>> LoadModule vhost_alias_module modules/mod_vhost_alias.so
>>> LoadModule negotiation_module modules/mod_negotiation.so
>>> LoadModule dir_module modules/mod_dir.so
>>> LoadModule actions_module modules/mod_actions.so
>>> LoadModule speling_module modules/mod_speling.so
>>> # LoadModule userdir_module modules/mod_userdir.so
>>> LoadModule alias_module modules/mod_alias.so
>>> LoadModule substitute_module modules/mod_substitute.so
>>> LoadModule rewrite_module modules/mod_rewrite.so
>>> LoadModule proxy_module modules/mod_proxy.so
>>> LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
>>> LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
>>> LoadModule proxy_http_module modules/mod_proxy_http.so
>>> LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
>>> LoadModule proxy_connect_module modules/mod_proxy_connect.so
>>> LoadModule cache_module modules/mod_cache.so
>>> LoadModule suexec_module modules/mod_suexec.so
>>> LoadModule disk_cache_module modules/mod_disk_cache.so
>>> LoadModule cgi_module modules/mod_cgi.so
>>> LoadModule version_module modules/mod_version.so
>>> #LoadModule passenger_module
>>> /usr/lib64/ruby/gems/1.8/gems/passenger-4.0.59/buildout/apache2/mod_passenger.so
>>> #
>>> # The following modules are not loaded by default:
>>> #
>>> #LoadModule asis_module modules/mod_asis.so
>>> #LoadModule authn_dbd_module modules/mod_authn_dbd.so
>>> #LoadModule cern_meta_module modules/mod_cern_meta.so
>>> #LoadModule cgid_module modules/mod_cgid.so
>>> #LoadModule dbd_module modules/mod_dbd.so
>>> #LoadModule dumpio_module modules/mod_dumpio.so
>>> #LoadModule filter_module modules/mod_filter.so
>>> #LoadModule ident_module modules/mod_ident.so
>>> #LoadModule log_forensic_module modules/mod_log_forensic.so
>>> #LoadModule unique_id_module modules/mod_unique_id.so
>>> LoadModule wsgi_module modules/mod_wsgi.so
>>> WSGISocketPrefix /var/run/wsgi
>>>
>>> Include conf.d/*.conf
>>>
>>> #
>>> # ExtendedStatus controls whether Apache will generate "full" status
>>> # information (ExtendedStatus On) or just basic information
>>> (ExtendedStatus
>>> # Off) when the "server-status" handler is called. The default is Off.
>>> #
>>> ExtendedStatus On
>>>
>>> #
>>> # If you wish httpd to run as a different user or group, you must run
>>> # httpd as root initially and it will switch.
>>> #
>>> # User/Group: The name (or #number) of the user/group to run httpd as.
>>> # . On SCO (ODT 3) use "User nouser" and "Group nogroup".
>>> # . On HPUX you may not be able to use shared memory as nobody, and the
>>> # suggested workaround is to create a user www and use that user.
>>> # NOTE that some kernels refuse to setgid(Group) or semctl(IPC_SET)
>>> # when the value of (unsigned)Group is above 60000;
>>> # don't use Group #-1 on these systems!
>>> #
>>> User apache
>>> Group apache
>>>
>>> ### Section 2: 'Main' server configuration
>>> #
>>> ServerAdmin [email protected]
>>>
>>> ServerName newsdev.oregonian.com:80 <http://newsdev.oregonian.com/>
>>>
>>> UseCanonicalName Off
>>>
>>> DocumentRoot "/var/www/html/newsdev.oregonian.com"
>>>
>>> <Directory />
>>> Order Deny,Allow
>>> deny from all
>>> </Directory>
>>>
>>> #
>>> # This should be changed to whatever you set DocumentRoot to.
>>> #
>>> <Directory "/var/www/html/newsdev.oregonian.com">
>>>
>>> #
>>> # Possible values for the Options directive are "None", "All",
>>> # or any combination of:
>>> # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI
>>> MultiViews
>>> #
>>> # Note that "MultiViews" must be named *explicitly* --- "Options All"
>>> # doesn't give it to you.
>>> #
>>> # The Options directive is both complicated and important. Please see
>>> # http://httpd.apache.org/docs/2.2/mod/core.html#options
>>> # for more information.
>>> #
>>> Options -Indexes FollowSymLinks
>>>
>>> #
>>> # AllowOverride controls what directives may be placed in .htaccess
>>> files.
>>> # It can be "All", "None", or any combination of the keywords:
>>> # Options FileInfo AuthConfig Limit
>>> #
>>> AllowOverride None
>>>
>>> #
>>> # Controls who can get stuff from this server.
>>> #
>>> Order allow,deny
>>> Allow from all
>>>
>>> </Directory>
>>>
>>> #
>>> # UserDir: The name of the directory that is appended onto a user's home
>>> # directory if a ~user request is received.
>>> #
>>> # The path to the end user account 'public_html' directory must be
>>> # accessible to the webserver userid. This usually means that ~userid
>>> # must have permissions of 711, ~userid/public_html must have permissions
>>> # of 755, and documents contained therein must be world-readable.
>>> # Otherwise, the client will only receive a "403 Forbidden" message.
>>> #
>>> # See also: http://httpd.apache.org/docs/misc/FAQ.html#forbidden
>>> #
>>> #<IfModule mod_userdir.c>
>>> #
>>> # UserDir is disabled by default since it can confirm the presence
>>> # of a username on the system (depending on home directory
>>> # permissions).
>>> #
>>> # UserDir disabled
>>>
>>> #
>>> # To enable requests to /~user/ to serve the user's public_html
>>> # directory, remove the "UserDir disabled" line above, and uncomment
>>> # the following line instead:
>>> #
>>> #UserDir public_html
>>>
>>> #</IfModule>
>>>
>>>
>>> DirectoryIndex index.html index.html.var
>>>
>>> #
>>> # 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.
>>> #
>>> <Files ~ "^\.ht">
>>> Order allow,deny
>>> Deny from all
>>> Satisfy All
>>> </Files>
>>>
>>> #
>>> # TypesConfig describes where the mime.types file (or equivalent) is
>>> # to be found.
>>> #
>>> TypesConfig /etc/mime.types
>>>
>>> DefaultType text/plain
>>>
>>> #
>>> # The mod_mime_magic module allows the server to use various hints from
>>> the
>>> # contents of the file itself to determine its type. The MIMEMagicFile
>>> # directive tells the module where the hint definitions are located.
>>> #
>>> <IfModule mod_mime_magic.c>
>>> # MIMEMagicFile /usr/share/magic.mime
>>> MIMEMagicFile conf/magic
>>> </IfModule>
>>>
>>> HostnameLookups Off
>>>
>>> ErrorLog logs/error_log
>>>
>>> LogLevel info
>>>
>>> LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""
>>> combined
>>> LogFormat "%h %l %u %t \"%r\" %>s %b" common
>>> LogFormat "%{Referer}i -> %U" referer
>>> LogFormat "%{User-agent}i" agent
>>>
>>> CustomLog logs/access_log combined
>>>
>>> ServerSignature On
>>>
>>> ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
>>>
>>> #
>>> # "/var/www/cgi-bin" should be changed to whatever your ScriptAliased
>>> # CGI directory exists, if you have that configured.
>>> #
>>> <Directory "/var/www/cgi-bin">
>>> AllowOverride None
>>> Options None
>>> Order allow,deny
>>> Allow from all
>>> </Directory>
>>>
>>> AddLanguage ca .ca
>>> AddLanguage cs .cz .cs
>>> AddLanguage da .dk
>>> AddLanguage de .de
>>> AddLanguage el .el
>>> AddLanguage en .en
>>> AddLanguage eo .eo
>>> AddLanguage es .es
>>> AddLanguage et .et
>>> AddLanguage fr .fr
>>> AddLanguage he .he
>>> AddLanguage hr .hr
>>> AddLanguage it .it
>>> AddLanguage ja .ja
>>> AddLanguage ko .ko
>>> AddLanguage ltz .ltz
>>> AddLanguage nl .nl
>>> AddLanguage nn .nn
>>> AddLanguage no .no
>>> AddLanguage pl .po
>>> AddLanguage pt .pt
>>> AddLanguage pt-BR .pt-br
>>> AddLanguage ru .ru
>>> AddLanguage sv .sv
>>> AddLanguage zh-CN .zh-cn
>>> AddLanguage zh-TW .zh-tw
>>>
>>> LanguagePriority en ca cs da de el eo es et fr he hr it ja ko ltz nl nn
>>> no pl pt pt-BR ru sv zh-CN zh-TW
>>>
>>> ForceLanguagePriority Prefer Fallback
>>>
>>> AddDefaultCharset UTF-8
>>>
>>> AddType application/x-compress .Z
>>> AddType application/x-gzip .gz .tgz
>>>
>>> AddType application/x-x509-ca-cert .crt
>>> AddType application/x-pkcs7-crl .crl
>>>
>>>
>>> AddHandler type-map var
>>>
>>> AddType text/html .shtml
>>> AddOutputFilter INCLUDES .shtml
>>>
>>>
>>> Alias /error/ "/var/www/error/"
>>>
>>> <IfModule mod_negotiation.c>
>>> <IfModule mod_include.c>
>>> <Directory "/var/www/error">
>>> AllowOverride None
>>> Options IncludesNoExec
>>> AddOutputFilter Includes html
>>> AddHandler type-map var
>>> Order allow,deny
>>> Allow from all
>>> LanguagePriority en es de fr
>>> ForceLanguagePriority Prefer Fallback
>>> </Directory>
>>>
>>> # ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var
>>> # ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html.var
>>> # ErrorDocument 403 /error/HTTP_FORBIDDEN.html.var
>>> # ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var
>>> # ErrorDocument 405 /error/HTTP_METHOD_NOT_ALLOWED.html.var
>>> # ErrorDocument 408 /error/HTTP_REQUEST_TIME_OUT.html.var
>>> # ErrorDocument 410 /error/HTTP_GONE.html.var
>>> # ErrorDocument 411 /error/HTTP_LENGTH_REQUIRED.html.var
>>> # ErrorDocument 412 /error/HTTP_PRECONDITION_FAILED.html.var
>>> # ErrorDocument 413 /error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var
>>> # ErrorDocument 414 /error/HTTP_REQUEST_URI_TOO_LARGE.html.var
>>> # ErrorDocument 415 /error/HTTP_UNSUPPORTED_MEDIA_TYPE.html.var
>>> # ErrorDocument 500 /error/HTTP_INTERNAL_SERVER_ERROR.html.var
>>> # ErrorDocument 501 /error/HTTP_NOT_IMPLEMENTED.html.var
>>> # ErrorDocument 502 /error/HTTP_BAD_GATEWAY.html.var
>>> # ErrorDocument 503 /error/HTTP_SERVICE_UNAVAILABLE.html.var
>>> # ErrorDocument 506 /error/HTTP_VARIANT_ALSO_VARIES.html.var
>>>
>>> </IfModule>
>>> </IfModule>
>>>
>>> #
>>> # The following directives modify normal HTTP response behavior to
>>> # handle known problems with browser implementations.
>>> #
>>> BrowserMatch "Mozilla/2" nokeepalive
>>> BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
>>> BrowserMatch "RealPlayer 4\.0" force-response-1.0
>>> BrowserMatch "Java/1\.0" force-response-1.0
>>> BrowserMatch "JDK/1\.0" force-response-1.0
>>>
>>> #
>>> # The following directive disables redirects on non-GET requests for
>>> # a directory that does not include the trailing slash. This fixes a
>>> # problem with Microsoft WebFolders which does not appropriately handle
>>> # redirects for folders with DAV methods.
>>> # Same deal with Apple's DAV filesystem and Gnome VFS support for DAV.
>>> #
>>> BrowserMatch "Microsoft Data Access Internet Publishing Provider"
>>> redirect-carefully
>>> BrowserMatch "MS FrontPage" redirect-carefully
>>> BrowserMatch "^WebDrive" redirect-carefully
>>> BrowserMatch "^WebDAVFS/1.[0123]" redirect-carefully
>>> BrowserMatch "^gnome-vfs/1.0" redirect-carefully
>>> BrowserMatch "^XML Spy" redirect-carefully
>>> BrowserMatch "^Dreamweaver-WebDAV-SCM1" redirect-carefully
>>>
>>> #
>>> # Allow server status reports generated by mod_status,
>>> # with the URL of http://servername/server-status
>>> # Change the ".example.com" to match your domain to enable.
>>> #
>>> <Location /server-status>
>>> SetHandler server-status
>>> Order allow,deny
>>> Allow from all
>>> </Location>
>>>
>>> #
>>> # Allow remote server configuration reports, with the URL of
>>> # http://servername/server-info (requires that mod_info.c be loaded).
>>> # Change the ".example.com" to match your domain to enable.
>>> #
>>> #<Location /server-info>
>>> # SetHandler server-info
>>> # Order deny,allow
>>> # Deny from all
>>> # Allow from .example.com
>>> #</Location>
>>>
>>> #
>>> # Proxy Server directives. Uncomment the following lines to
>>> # enable the proxy server:
>>> #
>>> #<IfModule mod_proxy.c>
>>> #ProxyRequests On
>>> #
>>> #<Proxy *>
>>> # Order deny,allow
>>> # Deny from all
>>> # Allow from .example.com
>>> #</Proxy>
>>>
>>> #
>>> # Enable/disable the handling of HTTP/1.1 "Via:" headers.
>>> # ("Full" adds the server version; "Block" removes all outgoing Via:
>>> headers)
>>> # Set to one of: Off | On | Full | Block
>>> #
>>> #ProxyVia On
>>>
>>> #
>>> # To enable a cache of proxied content, uncomment the following lines.
>>> # See http://httpd.apache.org/docs/2.2/mod/mod_cache.html for more
>>> details.
>>> #
>>> #<IfModule mod_disk_cache.c>
>>> # CacheEnable disk /
>>> # CacheRoot "/var/cache/mod_proxy"
>>> #</IfModule>
>>> #
>>>
>>> #</IfModule>
>>> # End of proxy directives.
>>>
>>> # Load Passenger module for Ruby
>>>
>>> <IfModule mod_passenger.c>
>>> PassengerRoot /usr/lib64/ruby/gems/1.8/gems/passenger-4.0.59
>>> PassengerDefaultRuby /usr/bin/ruby
>>> </IfModule>
>>>
>>> ### Section 3: Virtual Hosts
>>> #
>>>
>>> <VirtualHost *:80>
>>> ServerAdmin [email protected]
>>> ServerName newsdev.oregonian.com
>>> DocumentRoot /var/www/html/newsdev.oregonian.com
>>> RewriteEngine On
>>> <Directory /var/www/html/newsdev.oregonian.com>
>>> Options -Indexes FollowSymLinks
>>> AllowOverride All
>>> Order allow,deny
>>> Allow from all
>>> </Directory>
>>>
>>> Alias /static/ /var/www/static/
>>>
>>> WSGIDaemonProcess salaries
>>> python-home=/usr/local/webapps/gov_salaries/gov_venv
>>> WSGIApplicationGroup %{GLOBAL}
>>> WSGIScriptAlias /salaries
>>> /usr/local/webapps/gov_salaries/config/wsgi.py process-group=salaries
>>>
>>> <Directory /usr/local/webapps/gov_salaries>
>>> Order allow,deny
>>> Allow from all
>>> </Directory>
>>>
>>> <Directory /usr/local/webapps/gov_salaries/config>
>>> <Files wsgi.py>
>>> Order allow,deny
>>> Allow from all
>>> </Files>
>>> </Directory>
>>>
>>> <Directory /var/www/static>
>>> Order allow,deny
>>> Allow from all
>>> </Directory>
>>>
>>>
>>>
>>> </VirtualHost>
>>>
>>> <VirtualHost *:80>
>>> ServerAdmin [email protected]
>>> ServerName datawrapper.oregonian.com
>>> DocumentRoot /var/www/html/datawrapper/www
>>> #RewriteEngine On
>>> <Directory /var/www/html/datawrapper/www/>
>>> Options -Indexes FollowSymLinks
>>> AllowOverride All
>>> Order allow,deny
>>> Allow from all
>>> </Directory>
>>> </VirtualHost>
>>>
>>> <VirtualHost *:80>
>>> ServerAdmin [email protected]
>>> ServerName charts.oregonian.com
>>> DocumentRoot /var/www/html/datawrapper/charts/static
>>> RewriteEngine On
>>> <Directory /var/www/html/datawrapper/charts/static/>
>>> Options -Indexes FollowSymLinks
>>> AllowOverride All
>>> Order allow,deny
>>> Allow from all
>>> </Directory>
>>> </VirtualHost>
>>>
>>>
>>> <VirtualHost *:80>
>>> ServerAdmin [email protected]
>>> ServerName testapp.oregonian.com
>>> DocumentRoot /var/www/html/newsdev.oregonian.com/recipes/current/public
>>>
>>> #<Location /assets>
>>> #ProxyPass !
>>> #</Location>
>>> #<Location /system>
>>> #ProxyPass !
>>> #</Location>
>>> ProxyPass / http://127.0.0.1:9292/
>>> ProxyPassReverse / http://127.0.0.1:9292/
>>>
>>> <Directory /var/www/html/
>>> newsdev.oregonian.com/recipes/current/public/system>
>>> Options -Indexes FollowSymLinks
>>> AllowOverride All
>>> Order allow,deny
>>> Allow from all
>>> </Directory>
>>>
>>> <Directory /var/www/html/
>>> newsdev.oregonian.com/recipes/current/public/assets>
>>> Options -Indexes FollowSymLinks
>>> AllowOverride All
>>> Order allow,deny
>>> Allow from all
>>> </Directory>
>>> </VirtualHost>
>>>
>>>
>>> <VirtualHost *:80>
>>> ServerAdmin [email protected]
>>> ServerName testapp2.oregonian.com
>>> DocumentRoot /var/www/html/
>>> newsdev.oregonian.com/restaurants/current/public
>>>
>>> #<Location /assets>
>>> #ProxyPass !
>>> #</Location>
>>> #<Location /system>
>>> #ProxyPass !
>>> #</Location>
>>> ProxyPass / http://127.0.0.1:9293/
>>> ProxyPassReverse / http://127.0.0.1:9293/
>>>
>>> <Directory /var/www/html/
>>> newsdev.oregonian.com/current/public/system>
>>> Options -Indexes FollowSymLinks
>>> AllowOverride All
>>> Order allow,deny
>>> Allow from all
>>> </Directory>
>>>
>>> <Directory /var/www/html/
>>> newsdev.oregonian.com/restaurants/current/assets>
>>> Options -Indexes FollowSymLinks
>>> AllowOverride All
>>> Order allow,deny
>>> Allow from all
>>> </Directory>
>>> </VirtualHost>
>>>
>>> Alias /news_contacts /var/www/html/news_contacts/current/public
>>> <Directory /var/www/html/
>>> newsdev.oregonian.com/news_contacts/current/public>
>>> Options -Indexes FollowSymLinks
>>> AllowOverride All
>>> Order allow,deny
>>> Allow from all
>>> </Directory>
>>>
>>> *httpd error log:*
>>> [Wed Feb 07 11:09:48 2018] [notice] suEXEC mechanism enabled (wrapper:
>>> /usr/sbin/suexec)
>>> [Wed Feb 07 11:09:48 2018] [info] Init: Seeding PRNG with 256 bytes of
>>> entropy
>>> [Wed Feb 07 11:09:48 2018] [info] Init: Initializing (virtual) servers
>>> for SSL
>>> [Wed Feb 07 11:09:48 2018] [info] mod_ssl/2.2.15 compiled against
>>> Server: Apache/2.2.15, Library: OpenSSL/1.0.1e-fips
>>> [Wed Feb 07 11:09:48 2018] [notice] Digest: generating secret for digest
>>> authentication ...
>>> [Wed Feb 07 11:09:48 2018] [notice] Digest: done
>>> [Wed Feb 07 11:09:48 2018] [info] APR LDAP: Built with OpenLDAP LDAP SDK
>>> [Wed Feb 07 11:09:48 2018] [info] LDAP: SSL support available
>>> [Wed Feb 07 11:09:48 2018] [info] Init: Seeding PRNG with 256 bytes of
>>> entropy
>>> [Wed Feb 07 11:09:48 2018] [info] Shared memory session cache initialised
>>> [Wed Feb 07 11:09:48 2018] [info] Init: Initializing (virtual) servers
>>> for SSL
>>> [Wed Feb 07 11:09:48 2018] [info] mod_ssl/2.2.15 compiled against
>>> Server: Apache/2.2.15, Library: OpenSSL/1.0.1e-fips
>>> [Wed Feb 07 11:09:48 2018] [info] mod_wsgi (pid=9174): Starting process
>>> 'salaries' with uid=48, gid=48 and threads=15.
>>> [Wed Feb 07 11:09:48 2018] [info] mod_wsgi (pid=9174): Python home
>>> /usr/local/webapps/gov_salaries/gov_venv.
>>> [Wed Feb 07 11:09:48 2018] [info] mod_wsgi (pid=9174): Initializing
>>> Python.
>>> [Wed Feb 07 11:09:48 2018] [notice] Apache/2.2.15 (Unix) DAV/2
>>> mod_wsgi/4.5.24 Python/3.6 PHP/5.3.3 mod_ssl/2.2.15 OpenSSL/1.0.1e-fips
>>> configured -- resuming normal operations
>>> [Wed Feb 07 11:09:48 2018] [info] Server built: Oct 19 2017 16:43:38
>>> [Wed Feb 07 11:09:48 2018] [info] mod_wsgi (pid=9177): Initializing
>>> Python.
>>> [Wed Feb 07 11:09:48 2018] [info] mod_wsgi (pid=9176): Initializing
>>> Python.
>>> [Wed Feb 07 11:09:48 2018] [info] mod_wsgi (pid=9175): Initializing
>>> Python.
>>> [Wed Feb 07 11:09:48 2018] [info] mod_wsgi (pid=9178): Initializing
>>> Python.
>>> [Wed Feb 07 11:09:48 2018] [info] mod_wsgi (pid=9179): Initializing
>>> Python.
>>> [Wed Feb 07 11:09:48 2018] [info] mod_wsgi (pid=9180): Initializing
>>> Python.
>>> [Wed Feb 07 11:09:48 2018] [info] mod_wsgi (pid=9181): Initializing
>>> Python.
>>> [Wed Feb 07 11:09:48 2018] [info] mod_wsgi (pid=9182): Initializing
>>> Python.
>>> [Wed Feb 07 11:09:48 2018] [info] mod_wsgi (pid=9177): Attach
>>> interpreter ''.
>>> [Wed Feb 07 11:09:48 2018] [info] mod_wsgi (pid=9175): Attach
>>> interpreter ''.
>>> [Wed Feb 07 11:09:48 2018] [info] mod_wsgi (pid=9174): Attach
>>> interpreter ''.
>>> [Wed Feb 07 11:09:48 2018] [info] mod_wsgi (pid=9181): Attach
>>> interpreter ''.
>>> [Wed Feb 07 11:09:48 2018] [info] mod_wsgi (pid=9179): Attach
>>> interpreter ''.
>>> [Wed Feb 07 11:09:48 2018] [info] mod_wsgi (pid=9178): Attach
>>> interpreter ''.
>>> [Wed Feb 07 11:09:48 2018] [info] mod_wsgi (pid=9176): Attach
>>> interpreter ''.
>>> [Wed Feb 07 11:09:48 2018] [info] mod_wsgi (pid=9180): Attach
>>> interpreter ''.
>>> [Wed Feb 07 11:09:48 2018] [info] mod_wsgi (pid=9182): Attach
>>> interpreter ''.
>>> [Wed Feb 07 11:10:32 2018] [info] [client 50.202.228.131] mod_wsgi
>>> (pid=9174, process='salaries', application=''): Loading WSGI script
>>> '/usr/local/webapps/gov_salaries/config/wsgi.py'.
>>> [Wed Feb 07 11:10:32 2018] [error] [client 50.202.228.131] mod_wsgi
>>> (pid=9174): Target WSGI script
>>> '/usr/local/webapps/gov_salaries/config/wsgi.py' cannot be loaded as Python
>>> module.
>>> [Wed Feb 07 11:10:32 2018] [error] [client 50.202.228.131] mod_wsgi
>>> (pid=9174): Exception occurred processing WSGI script
>>> '/usr/local/webapps/gov_salaries/config/wsgi.py'.
>>> [Wed Feb 07 11:10:32 2018] [error] [client 50.202.228.131] Traceback
>>> (most recent call last):
>>> [Wed Feb 07 11:10:32 2018] [error] [client 50.202.228.131] File
>>> "/usr/local/webapps/gov_salaries/config/wsgi.py", line 21, in <module>
>>> [Wed Feb 07 11:10:32 2018] [error] [client 50.202.228.131]
>>> application = get_wsgi_application()
>>> [Wed Feb 07 11:10:32 2018] [error] [client 50.202.228.131] File
>>> "/usr/local/webapps/gov_salaries/gov_venv/lib/python3.6/site-packages/django/core/wsgi.py",
>>>
>>> line 13, in get_wsgi_application
>>> [Wed Feb 07 11:10:32 2018] [error] [client 50.202.228.131]
>>> django.setup(set_prefix=False)
>>> [Wed Feb 07 11:10:32 2018] [error] [client 50.202.228.131] File
>>> "/usr/local/webapps/gov_salaries/gov_venv/lib/python3.6/site-packages/django/__init__.py",
>>>
>>> line 22, in setup
>>> [Wed Feb 07 11:10:32 2018] [error] [client 50.202.228.131]
>>> configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
>>> [Wed Feb 07 11:10:32 2018] [error] [client 50.202.228.131] File
>>> "/usr/local/webapps/gov_salaries/gov_venv/lib/python3.6/site-packages/django/conf/__init__.py",
>>>
>>> line 56, in __getattr__
>>> [Wed Feb 07 11:10:32 2018] [error] [client 50.202.228.131]
>>> self._setup(name)
>>> [Wed Feb 07 11:10:32 2018] [error] [client 50.202.228.131] File
>>> "/usr/local/webapps/gov_salaries/gov_venv/lib/python3.6/site-packages/django/conf/__init__.py",
>>>
>>> line 41, in _setup
>>> [Wed Feb 07 11:10:32 2018] [error] [client 50.202.228.131]
>>> self._wrapped = Settings(settings_module)
>>> [Wed Feb 07 11:10:32 2018] [error] [client 50.202.228.131] File
>>> "/usr/local/webapps/gov_salaries/gov_venv/lib/python3.6/site-packages/django/conf/__init__.py",
>>>
>>> line 110, in __init__
>>> [Wed Feb 07 11:10:32 2018] [error] [client 50.202.228.131] mod =
>>> importlib.import_module(self.SETTINGS_MODULE)
>>> [Wed Feb 07 11:10:32 2018] [error] [client 50.202.228.131] File
>>> "/usr/local/lib/python3.6/importlib/__init__.py", line 126, in import_module
>>> [Wed Feb 07 11:10:32 2018] [error] [client 50.202.228.131] return
>>> _bootstrap._gcd_import(name[level:], package, level)
>>> [Wed Feb 07 11:10:32 2018] [error] [client 50.202.228.131] File
>>> "<frozen importlib._bootstrap>", line 994, in _gcd_import
>>> [Wed Feb 07 11:10:32 2018] [error] [client 50.202.228.131] File
>>> "<frozen importlib._bootstrap>", line 971, in _find_and_load
>>> [Wed Feb 07 11:10:32 2018] [error] [client 50.202.228.131] File
>>> "<frozen importlib._bootstrap>", line 941, in _find_and_load_unlocked
>>> [Wed Feb 07 11:10:32 2018] [error] [client 50.202.228.131] File
>>> "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
>>> [Wed Feb 07 11:10:32 2018] [error] [client 50.202.228.131] File
>>> "<frozen importlib._bootstrap>", line 994, in _gcd_import
>>> [Wed Feb 07 11:10:32 2018] [error] [client 50.202.228.131] File
>>> "<frozen importlib._bootstrap>", line 971, in _find_and_load
>>> [Wed Feb 07 11:10:32 2018] [error] [client 50.202.228.131] File
>>> "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked
>>> [Wed Feb 07 11:10:32 2018] [error] [client 50.202.228.131]
>>> ModuleNotFoundError: No module named 'gov_salaries'
>>>
>>> *wsgi.py file:*
>>> import sys
>>> import site
>>> import os
>>>
>>> sys.path.append('/usr/local/webapps/gov_salaries')
>>> sys.path.append('/usr/local/webapps/gov_salaries/salaries')
>>>
>>> from django.core.wsgi import get_wsgi_application
>>>
>>> #os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings")
>>> os.environ["DJANGO_SETTINGS_MODULE"] = "gov_salaries.settings"
>>> application = get_wsgi_application()
>>>
>>>
>>> --
>>> 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 [email protected].
>>> To post to this group, send email to [email protected].
>>> Visit this group at https://groups.google.com/group/modwsgi.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>>
>>>
>> --
>> 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 [email protected].
>> To post to this group, send email to [email protected].
>> Visit this group at https://groups.google.com/group/modwsgi.
>> For more options, visit https://groups.google.com/d/optout.
>>
>>
>>
> --
> 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 [email protected] <javascript:>.
> To post to this group, send email to [email protected] <javascript:>
> .
> Visit this group at https://groups.google.com/group/modwsgi.
> For more options, visit https://groups.google.com/d/optout.
>
>
>
--
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 [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/modwsgi.
For more options, visit https://groups.google.com/d/optout.