您的位置:首页 > 运维架构 > Apache

Debian+Django1.11+Apache2.4+mod_wsgi+python2.7搭建服务器

2017-09-07 17:39 531 查看
这两天都在为了搭建这个服务器而忙活着,遇到了很多坑,在网上参考了很多人的介绍,但是都不顺利,所以说一说自己的过程,为以后的人提供一下帮助。

先说一下最终效果,我之前一直不知道搭建成功是什么样子,因为我可以通过不同的端口分别访问到Apache和Django的配置成功界面,所以我就一直纠结搭建成功时什么样子。

搭建成功了,不需要在django项目下 runserver 就可以通过输入 访问Apache 的It works页面方式访问到django的it works的页面,因为已经不需要django自带的服务器了,我之前一直以为要运行自带服务器。在我的系统上就是 直接在浏览器上输入 ip+端口号(自己设置的Apache监听端口),就可以显示django的it works,第一次可能需要刷新一下。

安装好各部分以后,就是配置了。

步骤如下:

1、将django项目放到
/var/www
目录下,因为这是Apache的默认访问目录,里面的html就是 It works 的页面文件。这一步是为了方便Apache找到django项目,放到其他地方操作会复杂一点。

2、修改配置文件:
sudo nano /etc/apache2/sites-available/yoursite.conf
,这个yoursite.conf是你自己创建的,名字随意,也可以用vi等其他命令,我喜欢用 nano 和Windows上的操作类似,不容易出错。yoursite.conf内容如下

#<VirtualHost *:8089>
ServerName your_domain_or_ip
#ServerAlias other_domain_or_ip

Alias /media/ /var/www/your_Project_Name/media/
4000

Alias /static/ /var/www/your_Project_Name/static/

<Directory /var/www/your_Project_Name/static/>
Require all granted
</Directory>

WSGIScriptAlias / /var/www/your_Project_Name/your_Project_Name/wsgi.py
<Directory /var/www/your_Project_Name/your_Project_Name/>
<Files wsgi.py>
Require all granted
</Files>
</Directory>

</VirtualHost>


解释一下:

第一行的8089是我自己端口号,需要修改成你自己Apache的端口号,默认是80,如果要改要到
/etc/apache2
下的 port.conf里改。

下面两句 Alias 是告诉 媒体文件和静态文件的目录,接着下面是允许通过网络访问。

接下来配置wsgi,这是最重要的部分,wsgi是链接Apache和django的桥梁。your_Project_Name是你的django项目名字。

3、激活 yoursite.conf,
sudo a2ensite yoursite.conf
,然后reload Apache,输入
sudo service apache2 reload
,当然如果重启服务器
sudo service apache2 restart
也可以,前提是你的服务器不需要提供其他服务。这条命令才能使的Apache不去找它的默认网页而是找你django项目。

4、修改django项目文件。

现在还只是让Apache找到了django项目,但是django愿不愿意和他合作就不一定了。所以还需要修改django项目下的setting.py和wsgi.py。

修改setting.py中的
ALLOWED_HOST=[‘your_ip_or_domain’]
,把服务器ip或者域名加入,有多个用逗号隔开。这一步相当于允许进门来。

然后修改wsgi.py,

import os
from os.path import join,dirname,abspath
PROJECT_DIR =dirname(dirname(abspath(__file__)))
import sys
sys.path.insert(0,PROJECT_DIR)

from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "Your_Project_Name.settings")

application = get_wsgi_application()


把上面的Your_Project_Name替换成你的项目名就可以了。

现在这一步完成,就基本完成90%了,如果没有出错的话那说明你非常幸运,我当初配置这个东西用来3天,配置成功的时候兴奋到睡不着!

5、给Apache修改数据库的权限

sudo chown www-data:www-data /var/www/your_project_name/db.sqlite3
sudo chown www-data:www-data /var/www/your_project_name


到此,就差不多了,在浏览器中输入你的域名或者ip+你自己设置的端口号就可以访问了,正常的应该访问到django的页面,而不应该是Apache的默认页面,否则就说明有问题啊。

切记~每次修改了Apache的文件都要
sudo service apache2 reload
或者
sudo service apache2 restart


参考文章 :

http://www.jianshu.com/p/b40a4a12fff1

https://www.howtoing.com/how-to-serve-django-applications-with-apache-and-mod-wsgi-on-debian-8/

http://code.ziqiangxuetang.com/django/django-deploy.html

幸运的人看一个就配置好了,不幸的人尝试了一遍又一遍。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: