Django程序在Linux上的部署1.服务器搭建Python环境1.1 安装python3 不过多的描述,请参考安装文章,地址 1.2 创建虚拟环境 virtualenv envsname 1.3 代码传送到服务器 可以使用 git 或者 FZ 1.4 安装第
          - 不过多的描述,请参考安装文章,地址
 
1.3 代码传送到服务器virtualenv envsname
- 可以使用 
git或者FZ 
- 
发布上的代码应该包含
requirement.txtpip freeze > requirements.txt
 - 
激活虚拟环境后执行,到包含
requirement.txt目录下:pip install -r requirements.txt
 - 
 
- 
python manage.py makemigrations
 - 
python manage.py migrate
 - 
本博客只是做简单发布的示例,因此暂时不做数据库的迁移工作。注:如果服务器的数据库支持远程连接,亦可使用Navicat进行数据库的迁移工作
 
- 
查看一下django是否等够正常启动
 - 
 
- 不做描述详情请参考以前的文章,猛击这里,查看安装过程
 
- 将程序在后台运行,并且将终端的输出(打印)指向
nohup.out文件 
nohup python manage.py runserver 127.0.0.1:8000 &
- 
补充:
- 
使用&命令后,作业被提交到后台运行,当前控制台没有被占用,但是一但把当前控制台关掉(退出帐户时),作业就会停止运行。nohup命令可以在你退出帐户之后继续运行相应的进程。nohup就是不挂起的意思( no hang up)。该命令的一般形式为:
nohup command & - 
默认都是输出到
nohup.out文件中,也可以修改指定的文件,这里不在过多描述,请参考这篇文章 
 - 
 - 
此时Django程序已经运行在后台
 - 
使用nginx进行反向代理
 - 
# 修改nginx.conf的配置文件, server { listen 80; server_name 服务器IP; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://127.0.0.1:8000/;#django服务启动的地址 } - 
启动nginx
 - 
cd sbin ./nginx - 
 - 访问成功
 
- 
补充:nginx uwsgi wsgi django 这些东西究竟是什么关系.参考文献
 - 
 
pip install uwsgi
# 新增加一个server配置,此过程繁多建议将文件下载下来修改后在传到服务器上
server {
	listen 8000; #暴露给外部访问的端口
	server_name localhost;
	charset utf-8;
	location / {
		include uwsgi_params;
		uwsgi_pass 127.0.0.1:8997; #外部访问8996就转发到内部8997
	}
	location /static/ {
		alias /data/pythoncode/dejangoTest/web/static/; #项目静态路径设置
	}
}
django自带的wsgiref 在调试模式下使用的wsgi的文件,网关接口,协议
uwsgi:协议
uWSGI:具体实现方式
- 
uwsgi配置文件的格式
conf
py
cnf
xml
json
ini
yaml - 
# uwsgi.ini file [uwsgi] # Django-related settings socket = :8000 # the base directory (full path) chdir = /root/data/pythoncode/testcode/mypro # Django s wsgi file module = mypro.wsgi # process-related settings master = true # home = /root/data/envs/anydjango # maximum number of worker processes processes = 5 #maximum number of worker threads threads = 5 virtualenv=/root/data/envs/anydjango # try to remove all of the generated file/sockets vacuum = true # 使进程在后台运行,并将日志打到指定的日志文件或者udp服务器 daemonize = /root/data/pythoncode/testcode/mypro/log/myuwsgi.log - 
启动
uwsgi --http :8000 --module dejangoTest.wsgi - 
关闭
- 
killall uwsgi 
 - 
 - 
 - 
 - 
另一种启动命令
 
SATAIC_ROOT=os.path.join(BASE_DIR,'web/static/')#由于我的静态文件是放在应用里面的,因此我要在路径前加上应用名
# 执行命令
python manage.py collectstatic
在nginx中配置静态文件;
server {
        listen       80;
        server_name  127.0.0.1;
        # charset UTF-8;
        #access_log  logs/host.access.log  main;
        location / {
           include uwsgi_params;
           uwsgi_pass 127.0.0.1:8000;
       }
	
		location /static {
			alias /www/res/statics;
		}
}
- 
配置完成后启动
uwsgiuwsgi --ini uwsgi.ini - 
重启
nginx./nginx -s reload 
