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