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

来源:互联网 发布:linux高级运维面试题 编辑:程序博客网 时间:2024/05/22 02:26

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

先说一下最终效果,我之前一直不知道搭建成功是什么样子,因为我可以通过不同的端口分别访问到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/ 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 osfrom os.path import join,dirname,abspathPROJECT_DIR =dirname(dirname(abspath(__file__)))import syssys.path.insert(0,PROJECT_DIR)from django.core.wsgi import get_wsgi_applicationos.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.sqlite3sudo 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
幸运的人看一个就配置好了,不幸的人尝试了一遍又一遍。

阅读全文
0 0