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

腾讯云+Apache+Ubuntu Server16.04 部署Django

2018-03-25 11:23 127 查看
最近在学习Python Web中的Django框架,自己跟着官方文档写了小的demo。在编写完代码后,想把它部署在腾讯云上,一开始没有什么想法,后来也看了别人的部署的过程,但还是遇到了很多坑,这里把我自己部署的过程记录下来,已做以后查看,同时也分享给大家。
首先声明下我的部署环境:腾讯云+Apache 2.4.18+python3.5+Django2.0+Ubuntu Server 16.04 LTSStep 1:检查自己服务器自带的Python版本腾讯云的Ubuntu系统默认好像是装有2个Python版本的,一个是Python 2.X,另外一个是Python 3.X,可以通过查看/user/bin目录来看到,下面是我的目录下的结构,可以看到系统中同时有Python 2.7和Python 3.5。ls /user/bin | grep python



这是推荐大家使用Python 3(原因你懂的.......),系统默认是Python 2.X,这里大家可以通过创建软链接的方法来将默认的版本改为Python 3(具体的命令可以自行百度或者Google,很简单的)。
更改完后,在终端下输入 "python -V"查看更改后系统默认的Python版本python -V



可以看到系统中的Python已经变成了Python 3.5.2。接下来大家需要继续安装pip,setuptools等安装工具,可以通过Ubuntu的"apt-get install XXX"命令来进行安装,由于本文的侧重点在于具体的部署部分,所以这里安装工具的命令就不多讲,大家可以试着安装.
Step 2: 安装Django这里安装Django,我们完全可以通过Python的pip工具来进行安装pip install Django==2.0.0
安装完成后即可使用Django了
Step 3: 安装Apache 2和mod_wsgi在Ubuntu的命令行中,我们使用apt-get install 命令来安装Apache 2 和mod_wsgiapt-get install apache2
apt-get install libapache2-mod-wsgi-py3
安装完成后,我们可以在系统的 /etc/init.d/下可以看到有一个apache2的文件ls /etc/init.d/ | apache2


启动apache2,查看是否安装成功/etc/init.d/apache2 start输入上面的命令后,在浏览器地址栏中输入 "XXX.XXX.XXX.XXX:80"(其中将"XXX.XXX.XXX.XXX"替换为你服务器的IP地址),如果显示是ubuntu的默认欢迎界面,说明apache2已安装成功。
Tip:如果没有打开成功,则很有可能是你的服务器安全组中缺少一个配置来源为all,端口协议为TCP:80的入站规则,必须自己手动添加一个,具体方式请参见:添加腾讯云服务器安全组
Step 4:确认安装的Apache版本号输入 “apachectl -v”来查看版本好apachectl -v


这里看到我安装的是Apache 2.4.18
Step 5: 创建一个网站配置文件,建立新网站在 /etc/apache2/sites-available/下新建一个文件 这里我把它命名为mysite.conf,文件名可任意取。sudo vim /etc/apache2/sites-available/mysite.conf在mysite.conf文件下输入:<VirtualHost *:80>
ServerName www.XXX.com(这里替换成你自己域名)
ServerAlias anothername.com
ServerAdmin XXX.@XX.com(这里替换成你自己的邮箱)
DocumentRoot /var/www/Calculator/ (这里的参数替换成你自己的项目的目录)
Alias /media/ /var/www/Calculator/media/
Alias /static/ /var/www/Calculator/static/

<Directory /var/www/Calculator/media>
Require all granted
</Directory>

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

WSGIScriptAlias / /var/www/Calculator/new_calc/wsgi.py
<Directory /var/www/Calculator/new_calc>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
</VirtualHost>这里我的项目地址位置 /var/www/Calculator/目录下
Step 6:修改项目中的wsgi.py文件修改你项目中的wsgi.py文件,改为以下内容sudo vim /var/www/Calculator/new_calc/wsgi.py
"""
WSGI config for new_calc project.

It exposes the WSGI callable as a module-level variable named ``application``.

For more information on this file, see https://docs.djangoproject.com/en/2.0/howto/deployment/wsgi/ """

import os
from os.path import join,dirname,abspath
import sys
PROJECT_DIR = dirname(dirname(abspath(__file__)))
from django.core.wsgi import get_wsgi_application
sys.path.insert(0,PROJECT_DIR)
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "new_calc.settings")
#这里将settings文件换成你自己的settings即可
application = get_wsgi_application()
设置完成后,你还需要修改自己的项目的目录文件的权限,将自己项目目录的权限设置为0755,普通文件的权限设置为0644。
Tip:我这里用的是sqlite3数据库,还需要给它写的权限,如果没有给它写权限,在启动服务器后,会看到服务器返回500的状态码。
Step 7: 加载新网站,测试
a2ensite /etc/apache2/sites-available/mysite.conf //加载自己新的网站
a2dissite /etc/apache2/sites-available/000-default.conf //让默认的失效
/etc/init.d/apache2 reload  //重新加载
/etc/init.d/apache2 restart //重启apache服务
执行完上面的命令后,我们的部署工作就完成了,这时候在浏览器输入你的域名就可以正常访问网站了。
Tip:在项目里如果在settings.py文件中将Debug设置为False,那么你需要将自己的IP地址或者域名添加自己的ALLOWED_HOSTS中,如果你的项目遇到错误,可以将Debug设置为True,通过查看TraceStack来检查错误。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息