Apache+WSGI+Django+Python的服务器部署

本文详细介绍了从Python环境搭建到Apache服务器部署Django项目的全过程,包括Python版本安装、Django安装、Apache安装配置以及WSGI模块安装,最终实现项目在Apache服务器上的运行。附带步骤说明和代码示例,旨在帮助新手快速掌握相关技术栈的整合与应用。
部署运行你感兴趣的模型镜像

先说一下,本人菜鸟,Java编程经验两年不到,现在学python,开始感觉python挺整洁好用,到后面生产环境部署服务器时就吃苦头了,版本各种不兼容。网上查了好多资料,ubuntu,apache2,wsgi,django,python各种版本搞得想死的心都有,一周时间总算摸出点头绪。也是写这个的初衷,各位新手们少走些弯路,共同进步。


版本说明:

Apache:2.4.7

Ubuntu:12.04

Python:2.7.6

Django:1.6.8

至于为什么这个搭配,老大说:这个稳定。


具体步骤如下:


一.安装Python

1.#sudo apt-get install python2.7-dev

(1)安装目录默认为/usr/local/lib 

2.确定/usr/bin目录下的Python链接目标是Python2.7,如果不是则删除原本的链接文件,使用sudo ln -s /usr/bin/python2.7 /usr/bin/python创建新的链接文件 


3.命令:#python。如果看到下图则说明Python安装成功。 

(1)这是python的容器,代码可以直接写在这里立即生效。退出control+d。

二.安装Django。

1.#pip install django==1.6.8
2.测试Django是否安装成功

(1)使用:#python进入python容器。
(2)导入Django包:#import django。如果没有报错则说明安装成功。
(3)查看Django的版本:#print django.get_version()。如图: 

三.安装Apache

1.#apt-get install apache2

(1)安装完成后在/etc/apache2目录下会生成如下文件及文件夹 

(2)各文件的详细介绍:
apache2.conf:为Apache的总配置文件。
conf-enabled:应该是正用的配置文件(目前没用到)
conf-available:应该是能用的配置文件(目前没用到)
magic:(没用到)
envvars:(没用到)
ports.conf:配置服务器监听的端口
mods-available:Apache可以使用的模块加载脚本
mods-enabled:Apache正在使用的模块加载脚本
sites-avilable:Apache可以使用的配置站点
sites-enabled:Apache正在使用的配置站点

详细介绍请参考:这里

(3)文件间关系简单介绍:

1) apache2.conf 为Apache的总配置文件,它将加载当前目录下的ports.conf,sites-enabled中的.conf文件(这两类是配置中用到的文件)

2) *-available目录下的文件都是可用文件,但Apache启动时并不会去加载这里面的文件。

3) *-enabled目录下的文件都是包含于*-available目录中的文件,Apache启动时会加载这里面的文件。

4) 配置某个模块或某个网站可用就是在*-enabled目录下面建立一个*-available目录下文件的一个软连接。

5) 软连接的命令:ln -s *-available/filename *-enable/filename(系统命令) 也可以使用应用自带的命令a2enmod filename来操作mods-*目录 a2ensite filename来操作sites-*目录

6) ports.conf文件配置Apache监听的端口号。如需添加一个端口的监听只需要在文件中添加一行 Listen 8888,在类似配置下面(Listen 80)

(4) 服务器操作简单介绍:

启动服务器:sudo service apache2 start

重启服务器:sudo service apache2 restart

停止服务器:sudo service apache2 stop

2.启动服务器,检测Apache是否安装成功。如果你看到下面的界面就说明安装成功。 

(1)第一次启动服务器多会有以下错误:AH00558: apache2: Could not reliably determine the server's fully qualified domain name
(2) 在apache2.conf文件内添加:ServerName localhost

四.安装WSGI模块用来支持Django项目可以在Apache服务器上面运行

1.#apt-get install lib apache2-mod-wsgi

(1)安装后会在/etc/apache2/mods-available目录下看到下面两个文件:

 
(2)说明:wsgi的安装时自动启动的,所以你也可以在mods-enabled目录下看到这两个文件,如果mods-enabled目录里面有这两个文件就要使用《上面的》命令去创建软连接。 

五.测试个组件协同工作。

1.使用Django建立一个项目

(1)进入任意目录执行下面命令以建立新的项目(Apache默认站点目录是/var/www,建议使用这个目录)
(2)#django-admin.py startproject mysite(运行后会产生下面的目录) 


(3)可以先用Django自带的临时服务器测试网站是否可以正常运行。

1) 进入manage.py文件的同级目录执行下面命令

2) #python manage.py runserver 8000

说明:正常运行后的反应如下图: 

然后使用浏览器输入:127.0.0.1:8000进行测试访问。如图: 

由于我的8000端口被占用,我使用的时8001端口,只需要修改启动命令:python manage.py runserver 8001

3) 另外需要说明的Django的临时服务器只能在本地访问,远程是不可访问的。

2.将mysite站点配置到Apache生产服务器上运行。

(1)设置服务器的监听端口(现在只是通过不同的端口访问不同的站点)。

1) 进入/etc/apache2目录下修改ports.conf文件添加监听端口: 

(2)创建站点配置文件。

1) 进入/etc/apache2/sites-available目录下创建新的站点配置文件mysite.conf.命令:# vi mysite.conf

2)配置文件的内容如下:

<VirtualHost *:8081>      
    DocumentRoot /var/www/mysite/mysite      
    <Directory /var/www/mysite/mysite > 
	<Files wsgi.py>
		Require all granted
	</Files>         
        Order allow,deny          
        Allow from all      
    </Directory>      
  
	WSGIScriptAlias / /var/www/mysite/mysite/wsgi.py
</VirtualHost> 

(3)保存后是文件生效(启动加载)。命令:sudo a2ensite mysite.conf就是将*-available中的文件软连接到*-enabled中
(4)在/vat/www/mysite/mysite/wsgi.py文件内添加如下代码

import sys  
sys.path.append("/var/www/mysite/")  


3.重新加载网页:#sudo service apache2 reload
4.重启服务器:#sudo service apache2 restart
5.浏览器访问8081端口:127.0.0.1:8081如图所示表示成功部署测试项目。 

六.写好的Django项目(pycharm自动生成的Django项目)如何部署到Apache服务器。

1.修改wsgi.py文件(pycharm自动生成的文件,在同名与项目的目录下)。

(1)添加如下代码

import sys
sys.path.append(“/home/Web/”)#此处为项目根目录,注意最后“/” 


2.监听新的站点端口。打开/etc/apache2/ports.conf文件,添加:Listen 8090 


3.创建站点文件。进入/etc/apache2/sites-available目录,创建web.conf

	#cp mysite.conf web.conf(拷贝之前mysite.conf文件即可)

4.修改web.conf文件。对应为自己的目录。

(1)修改端口号,8090。
(2)修改DocumentRoot /home/yiqidai/yiqidai
(3)修改Directory /home/yiqidai/yiqidai
(4)修改WSGIScriptAlias  / /home/yiqidai/yiqidai/wsgi.py。如图: 

5.使站点生效。#a2ensite web.conf
6.重新加载网页:#sudo service apache2 reload
7.重启服务器:#sudo service apache2 restart
8.访问测试:localhost:8090如果不报错就正常访问了。



参考资料:

https://docs.djangoproject.com/en/1.6/howto/deployment/wsgi/

http://www.cnblogs.com/fengzheng/p/3619406.html

https://docs.djangoproject.com/en/1.6/howto/deployment/wsgi/modwsgi/

http://blog.youkuaiyun.com/heliang7/article/details/7337331













 



您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值