Django+wsgi+Apache+Ubuntu 部署相关

Django+wsgi+Apache+Ubuntu 部署相关

学校的项目,一个web健康照护平台,因为我近在学python,所以尝试用django来写这个项目。初期为了方便调试,在自己的电脑上windows写跑的开发服务器,python manage.py runserver 8001。后期网站也写的差不多了,跟着教程部署到服务器上的时候遇到了麻烦,现在记录下来。

首先说明下我的环境:Python2.7   Django1.8    Apache2.4.7    Ubuntu14.04            

时间:2015.12

先上教程:http://www.ziqiangxuetang.com/django/django-deploy.html

按照上面的教程,可能遇到的问题的解决方法:

1.apache同时访问不同的服务,如php+django等

因为项目之外还有其他人需要使用服务器,用的是php,他的文件是放在 var/www/html中的,这个位置是由apache默认配置文件000-default.conf决定的(以前版本中叫httpd.conf)

由于000-default.conf中也是使用80端口,所以在我的sitename1.conf中不能使用80端口(或者同时使用80端口,但用不同的域名区分开,网上有方法,可是我没域名)。

我的方法是:通过区分不同的端口号来区分php或django服务。

首先,在apache的安装目录下找到配置文件ports.conf

sudo vi /etc/apache2/ports.conf

发现里面只有:

# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf

Listen 80

<IfModule ssl_module>
	Listen 443
</IfModule>

<IfModule mod_gnutls.c>
	Listen 443
</IfModule>

加上一个新的端口,要确保端口不被占用,我这里加的是8026端口:

Listen 8026

其次,新建一个配置文件sitename1.conf,和000-default同目录

sudo vi /etc/apache2/sites-available/sitename1.conf

输入配置(根据自己的项目目录来):

<VirtualHost *:8026>
    ServerName www.domain.com
    ServerAdmin email@qq.com
    DocumentRoot "/home/geron/site1/mysite"    

    Alias /media/ /home/geron/site1/mysite/media
    Alias /images/ /home/geron/site1/mysite/media/images
  
    <Directory /home/geron/site1/mysite/media>
        Require all granted
    </Directory>
  
    <Directory /home/geron/site1/mysite/media/images>
        Require all granted
    </Directory>
  
    WSGIScriptAlias / /home/geron/site1/mysite/mysite/wsgi.py
  
    <Directory /home/geron/site1/mysite/mysite>
    <Files wsgi.py>
        Require all granted
    </Files>
    </Directory>
</VirtualHost>

重启apache2服务:

sudo service apache2 restart

此时直接访问服务器ip地址可以转到默认的80端口,访问服务器ip地址+端口号8026即可访问django服务。

2. 报错

Invalid command 'WSGIScriptAlias', perhaps misspelled or defined by a module not included in the server configurationAction 'configtest' failed.

 解决: 

sudo a2enmod wsgi

3.Ubuntu下安装mysql-python

sudo apt-get install python-mysqldb