将Django应用部署到Apache服务器
来源:互联网 发布:java dos 编辑:程序博客网 时间:2024/05/16 08:44
将Django项目部署到CentOS7下的Apache服务器上
一.前期准备:
- Apache服务器的搭建(centos 7系统下) :点我
- MySQL数据库的搭建(centos7系统下):点我
- Navicat for my sql(可选操作)
- python3.6的安装(根据自己项目的python版本选择)
- Django的安装
所需要了解的:
- 开发环境和生产环境的区别:
- 开发环境是程序猿的pc或某专门用于开发的服务器,配置可以比较随意, 为了开发调试方便,一般打开全部错误报告。 例如我们开发的django项目,在开发过程中测试的时候,我们一般都是用python manage.py runserver这样的命令来打开服务器,进行测试,这样的服务器就是开发服务器,它并不能承受实际环境中的大负载量。
- 生产环境则是用于我们项目开发好上线后,运用在真实的生产环境中,它往往有大的负载量(满足多个用户同时访问网站),这样对服务器的性能要求就较高,所以我们不能仅仅使用开发服务器来运行在真实的环境中。
- 开发环境和生产环境的区别:
由于用的搭建的是Django项目,且我的项目是用的Python3.xxx写的,所以还需要配置Python3.xxx的环境(centos7自带的是Python2.7的环境):
安装1:Apache服务器的搭建: :点我
安装2:MySQL数据库的搭建(centos7系统下):点我
安装3:在centos7下配置Python3.6.0的环境:
安装Python3与旧版本Python2.7.5共存
- 安装依赖(需要安装开发工具盒一些额外的库。这些额外的库并不严格的需要,但是如果不安装,新版本的python编译器可能没法工作。)
yum -y groupinstall "Development tools" //可能无效,但不影响yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
- 下载源码包( 我这下的是python3.6)
wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgzmkdir /usr/local/python3 //创建安装目录cd python3mkdir lib //创建/usr/local/python3/lib目录tar -zxvf Python-3.6.0.tgz //解压安装包cd Python-3.6.0 //进入刚才解压的包里面./configure LDFLAGS="-Wl,-rpath /usr/local/python3/lib" --enable-shared --prefix=/usr/local/python3make && make altinstallln -s /usr/local/python3/bin/python3.6 /usr/bin/python3 //创建软连接
对于以上命令的一些说明:
./configure是源代码安装的第一步,主要的作用是对即将安装的软件进行配置,检查当前的环境是否满足要安装软件的依赖关系 –prefix是软件的安装目录
1.这是按照路径的设置,./configure 会生成 makefile;
2.等 make 编译源代码生成相应的动态库或者可执行文件;
3.执行 make install 后,生成的动态库或者可执行文件就会拷贝到/usr/local里面。
4. LDFLAGS=”-Wl,-rpath /usr/local/python3/lib” –enable-shared确保生成python2.7动态链接库,不加此选项,导致后面再编译mod_wsgi,一直提示can not be used when making a shared object;
有个一个非常重要的步骤是我们使用的是make altinstall。如果使用make install,你将会看到在系统中有两个不同版本的Python在/usr/bin/目录中。这将会导致很多问题,而且不好处理。
为了告诉python如何找到动态链接库
打开文件 /etc/ld.so.conf,在该文件末尾加上 /usr/local/python3/lib 再运行
ldconfig //使改变发生
改变后的ld.so.conf文件如下:
include ld.so.conf.d/*.conf/usr/local/python3/lib
现在在终端输入python3查看是否已经安装上了:
安装python3.6的包管理工具pip:(其实python3.6在安装上的时候已经自带的有pip了,我们只需要建一个软连接就可以了)
ln -s /usr/local/python3/bin/pip3.6 /usr/bin/pip3
安装4:Django的安装:
pip3 install Django==1.10.4 //这里安装的Django1.10.4pip3 install PyMySQL //Django1.10连接mysql数据库所需要的
前期准备到此结束,接下来是把项目部署到Apache下。
二.部署过程:
1.把开发好的Django项目复制到CentOS7系统的/usr/local/djangWorkspaces下。改下setting.py文件的数据库配置,统一你的数据库名,密码和安装在CentOS7系统下的是否一致,不一致就更改setting.py的下面配置,使其一致。
然后迁移你的数据库,命令如下:
cd /你的Django项目的manage.py文件的同级目录下python3 manage.py migrate //在CentOS7下的mysql数据库中生成你的数据库表。
2.生成表中的数据(执行sql文件,可选操作)
如过你的Django项目之前是有数据的,那么可以使用Navicat生成数据库表的sql文件,然后执行下面的命令生成数据库中的数据:
source 你生成的sql文件.sql
3.将项目部署到Apache服务器下:
1)使用mod_wsgi:(Django部署到Apache需要的)
wget https://pypi.python.org/packages/56/72/caff357d52a8e9a7cef3b1b25fa58668ce600fb78c69bd3b687abb786cbc/mod_wsgi-4.5.11.tar.gz //下载mod_wsgi//编译并安装mod_wsgitar -zxf mod_wsgi-4.5.11.tar.gzcd mod_wsgi-4.5.11 ./configure --with-python=python3 make&&make install
安装完成之后,mod_wsgi.so会在Apache的modules目录中。
2)主要是修改两个地方:
①.主配置文件是/etc/httpd/conf/httpd.conf。
②.配置存储在的/etc/httpd/conf.d/目录。
修改1:在httpd.conf文件末尾添加:
LoadModule wsgi_module modules/mod_wsgi.so //用来连接django.wsgi,使工程被Apache加载
在Django项目的根目录中新建wsgi目录,在wsgi目录下新建一个django.wsgi文件。具体操作如下:
cd (cd进入你的django项目的根目录)mkdir wsgicd wsgivi django.wsgi //文件中的内容附下://以下是django.wsgi的内容,复制粘贴即可import osimport sysfrom django.core.wsgi import get_wsgi_application# Add this file path to sys.path in order to import settingssys.path.insert(0, os.path.join(os.path.dirname(os.path.realpath(__file__)), '..'))os.environ['DJANGO_SETTINGS_MODULE'] = 'projectname.settings' //projectname改成你的项目名sys.stdout = sys.stderrDEBUG = Trueapplication = get_wsgi_application()//修改完内容,重启Apacheservice httpd restart
修改2:配置django项目虚拟主机
在/etc/httpd/conf.d中添加配置文件projectname.conf,内容如下(注意,下面的目录都要改成你项目所在目录)
<VirtualHost *:80>WSGIScriptAlias / /yourproject/wsgi/django.wsgi #你项目的wsgi文件,修改1处新建的Alias /static/ /yourproject/static/ #你项目所需的静态文件(如项目的bootstrap样式等)位置#ServerName example.com#ServerAlias www.example.com<Directory /yourproject/static/> Options Indexes FollowSymLinks AllowOverride None Require all granted</Directory><Directory /yourproject/wsgi/> Require all granted</Directory>ErrorLog /etc/httpd/logs/web.error.logLogLevel warn</VirtualHost>
//执行下面的命令,不执行Apache有可能不能访问mysqlsetsebool httpd_can_network_connect 1 service mysqld restart
到此django项目已经成功部署到Apache服务器了。
测试:打开浏览器输入localhost:80应该就能访问了。
补充:如果想在真机中通过输入ip地址访问我们部署到虚拟机的Apache服务器下的项目可以做以下操作:
1.查看你部署了项目的CentOS系统的ip地址:(我这为192.168.233.139,虚拟机连接模式是NAT)
在修改2处的projectname.conf文件的<VirtualHost *:80>
处,改为<VirtualHost 192.168.233.139:80>
。再修改一下你django项目的setti.py文件的ALLOWED_HOSTS = ['192.168.233.139']
。再重启Apache即可。
最后效果如下:
- 将Django应用部署到Apache服务器
- 将django部署到Apache服务器
- 将django部署到Apache服务器
- 使用Apache与mod_wsgi部署Django应用到服务器
- 使用mod_wsgi将django部署到apache
- django 部署到Apache服务器上
- 将 Django 应用程序部署到生产服务器
- 将django项目利用mod_wsgi+Apache部署到linux服务器上
- django部署到apache
- Django部署到Apache
- Ubuntu 14.10下部署Django到Apache服务器
- Ubuntu 14.10下部署Django到Apache服务器_
- Windows上Python3.6环境django部署到Apache服务器
- 部署Django项目到Apache服务器(上)
- 部署Django项目到Apache服务器(下)
- 使用Apache服务器wsgi方式部署Django应用
- django 部署到apache配置文件
- 部署django项目到apache
- Java学习路线
- c语言实现二叉树的遍历和创建程序(附带注释)
- 如何优化JAVA代码及提高执行效率
- 用新的思维方式去解决问题
- 华中农大HZAUOJ 1098 Yifan and War3 区间dp
- 将Django应用部署到Apache服务器
- 带权最短路 Dijkstra, SPFA, Bellman-Ford, ASP, Floyd-Warshall 算法分析
- hdu 3595 GG and MM (Every-SG游戏)
- 四、指定struts2处理请求的后缀
- 基于mac上搭建python开发环境
- Eclipse上安装springsource-tool-suite
- 五、struts2的常量
- Nginx源码分析之ngx_hash_t
- 量子遗传算法以及matlab实现