部署Django+nginx+uwsgi到ubuntu服务器

40 篇文章 0 订阅
14 篇文章 0 订阅

前提:Django程序可以正常运行,注意服务器python版本和本地版本可能不一致,有可能不能正常运行Django程序。

安装过程

更新ubuntu的python

比如更新到3.6,先拉取新的仓库,再更新安装

sudo add-apt-repository ppa:jonathonf/python-3.6
sudo apt update 
sudo apt install python3.6 
创建虚拟环境

安装虚拟环境命令
sudo pip install virtualenv
建立虚拟环境文件夹
mkdir vpython3.6
进入该文件夹
cd vpython3.6/
建立py3.6的虚拟环境,名称为biokg,注意在创建 virtualenv 时增加 --no-site-packages 选项的 virtualenv 就不会读取系统包
virtualenv -p /usr/bin/python3.6 biokg
激活该文件夹
source biokg/bin/activate
如果项目有很多包要装,可以写到一个文件里,如: requirements.txt中,使用如下安装命令,批量安装包。
pip install -r requirements.txt

安装ngnix

sudo apt-get install nginx

安装uwsgi

如果使用conda安装的,在3.6报错时,运行一下命令:
conda虚拟环境安装uwsig
conda install -c conda-forge uwsgi
有可能碰到 libiconv.so动态库找不到的问题,同样可以用conda安装
conda install -c conda-forge libiconv

如果使用本地的python3.6安装uwsgi出现问题,需要安装依赖:
sudo apt-get install python3.6 python3.6-dev
接着在安装uwsgi
pip install uwsgi

测试过程

ngnix测试

ubantu安装完Nginx后,文件结构大致为:
  所有的配置文件都在 /etc/nginx下;
  启动程序文件在 /usr/sbin/nginx下;
  日志文件在 /var/log/nginx/下,分别是access.log和error.log;
  并且在 /etc/init.d下创建了启动脚本nginx。

sudo /etc/init.d/nginx start    # 启动
sudo /etc/init.d/nginx stop     # 停止
sudo /etc/init.d/nginx restart  # 重启

注意安装nginx后,需要服务器开放80端口,可以使用下面方法:
防火墙相关的设置:

#可以选择临时关闭防火墙
sudo service iptables stop
 
#或者开放一些需要的端口,比如 80
sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

查看nginx的错误日志

vim /var/log/nginx/error.log
uwsgi测试

在Django项目下新建test.py文件,

def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    #return ["Hello World"] # python2
    return [b"Hello World"] # python3

然后执行shell命令,开启uwsgi:
uwsgi --http :8001 --plugin python --wsgi-file test.py
加上–plugin python是告诉uWSGI在使用python插件.

执行成功在服务器浏览器中打开:http://localhost:8001或者在本地打开ip:8001(你的服务器公网ip)显示Hello World说明uwsgi正常运行。

关闭 uwsgi

正常情况下使用Ctrl+c就能退出。但这使用日志时,uwsgi在后台运行,想要退出可以使用下面的命令,否则出现之前的进程还在后台。
killall -s INT uwsgi

配置过程

配置nginx文件

到nginx文件夹下,通过vim命令修改

cd /etc/nginx/sites-available
sudo vim default

使用cd命令进入到sites-available文件夹,文件夹下有一个default文件,使用vim打开它,找到default文件下的这段代码,如果没有就要添加上去:

server_name 192.168.1.121;#你的公网IP
  location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        # try_files $uri $uri/ =404;# 这句需要注释
        include  uwsgi_params;
                uwsgi_pass  127.0.0.1:8000;  
    }
# 添加的
location /static {
   alias /home/feixue/python/www/for_test/static;
}
# 添加的
location /media { 
	alias /home/ubuntu/blog/media; 
}

192.168.1.121替换成你自己服务器公网IP地址;
static 那里也要替换成你自己Django项目的static路径;
media 同理换成你自己Django项目的media路径,这是媒体文件的文件夹;
注意:location后面是有空格的,必须要有!alias后面也是有空格的;include上面那句话也是要注释掉的!

保存后重新开启ngnix
sudo service nginx restart

配置uwsgi

在博客项目的根目录下,也就是有manage.py文件的目录下,或者其他目录也行。新建一个demo_uwsgi.ini文件
vim demo_uwsgi.ini
写入一下代码:

[uwsgi]
chdir = /home/demo/project  #chdir 是你的博客项目的根目录

module = project.wsgi:application 

socket = 127.0.0.1:8000 #和你的nginx端口号一致

master = true         

# maximum number of worker processes
processes = 4

# ... with appropriate permissions - may be needed
# chmod-socket = 664

# clear environment on exit
vacuum  = true

#daemonize = /home/demo/project/run.log #是你的日志文件目录
#disable-logging = true

然后保存。

项目启动

这部分看需求

创建数据库
python manage.py migrate
收集静态文件
python manage.py collectstatic

启动

uwsgi --ini demo_uwsgi.ini
上面这句话相当于本地启动Django所用的命令:
python manage.py runserver

下面你就能根据你的公网ip访问你的Django项目了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值