Django项目上线:云服务器+Django+nginx+uwsgi
VIEW CONTENTS

Django项目上线:云服务器+Django+nginx+uwsgi

2019-2-13 00:00| 发布者: xtyly| 查看: 394| 评论: 0|来自: 网络

问题:在本地项目已经完成,现在我们部署到云服务器上,笔者因为是学生党,所以使用了免费的华为云,当然网上还有很多其他的可以选择


 

一、云服务器的使用

     1,连接云服务器,云服务器自带远程连接(不好用)

          用户名root,密码是自己申请时候创建的

     2,安装xshell方便远程操作,云服务器的远程连接不好用

     3,安装xftp,方便往云服务器上传输必要文件

 

二,往云服务器上安装必要的环境

     (1) 华为云参考

               需要安装以下服务:

                 1,JDK
                 2,mysql(安装你需要的数据库,这里使用5.7)
                 3,虚拟环境
                 4,python相应版本(我使用3.5)
                 5,nginx

    (2)我们先将mysql数据库整个迁移到云服务器

                 注意:在云服务器的mysql用户名,密码与你在本地服务器的一致

mysqldump -u username -p --all-databases > all.sql  #备份

#然后找到这个备份文件将它通过xftp复制到云服务器上

#然后在xshell上登录后,恢复数据库

mysql -u username -p  < all.sql  #恢复

                登录之后就可以看到数据了

     (3)切换到虚拟环境之下,安装项目需要的module

              以下是我的项目需要的模块,供参考

Package        Version 
-------------- --------
asn1crypto     0.24.0  
cffi           1.11.5  
cryptography   2.3.1   
Django         1.11.7  
django-tinymce 2.7.0   
idna           2.7     
Pillow         5.2.0   
pip            18.0    
pycparser      2.19    
PyMySQL        0.9.2   
pytz           2018.5  
setuptools     40.4.3  
six            1.11.0  
uWSGI          2.0.17.1
wheel          0.31.1  

三,项目操作

Django项目结构如下:

此项目使用Django1.11.7,python3.5

axfhz1805/
├── app
├── axfhz1805
│   ├── __init__.py
│   ├── __pycache__
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── static
|── templates
├── manage.py
├── uwsgi.ini  #uwsgi配置文件
├── uwsgi.log  #uwsgi日志文件
└── uwsgi.pid  #uwsgi进程文件

 

      (1)uwsgi.ini——自己创建的uwsgi配置文件(当然还可以是其他格式的)参考uwsgi配置

[uwsgi]
# 使用nginx连接时 使用
socket=127.0.0.1:8010
# 直接作为web服务器使用
#http=127.0.0.1:8010
# 配置工程目录
chdir=/home/jgh/project/axfhz1805
# 配置项目的wsgi目录。相对于工程目录
wsgi-file=axfhz1805/wsgi.py
#virtualenv =/home/jgh/vir/py3.5/bin/python  #设置虚拟环境路径,不设置的话在会找不到django

#配置进程,线程信息
processes=4
threads=2
enable-threads=True
master=True
#进程记录
pidfile=uwsgi.pid
#日志文件
daemonize=uwsgi.log

      (2)切换到虚拟环境下,启动uwsgi

uwsgi --ini /home/jgh/project/axfhz1805/uwsgi.ini


以下结果:说明成功
[uWSGI] getting INI configuration from /home/jgh/project/axfhz1805/uwsgi.ini

      (3)新建nginx配置文件

              (他有自己默认的配置文件,直接修改容易出错,为了不直接修改他的默认配置文件,我们可以自己创建配置文件)

              配置文件放在:/usr/share/nginx/之下,不然找不到

               配置内容如下:

user  root;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;
   #这个是引入他的一些默认配置,可以注释掉
   #include /etc/nginx/conf.d/*.conf;

   server {
     listen       80;
     #你的云服务器的公网ip地址
     server_name  10.31.160.194;

     charset utf-8;
     #你的项目存放的位置,不包括项目名
     root   /home/jgh/project;
     #指定首页,Django中可以设置,这里注释掉
     #index  hello.html;

     
     location / {
        #你的uwsgi_params位置
		include /etc/nginx/uwsgi_params;
        #同你前面配置的uwsgi的socket
		uwsgi_pass 127.0.0.1:8010;
     }
     #静态资源位置
     location /static{
        #访问/static就相当于访问下面的路径
		alias  /home/jgh/project/axfhz1805/static;
     }
  }
}

       (4)测试及启动nginx服务

#测试
nginx -t -c /usr/share/nginx/nginx.conf

#以下结果说明成功
nginx: the configuration file /usr/share/nginx/nginx.conf syntax is ok
nginx: configuration file /usr/share/nginx/nginx.conf test is successful


#开启之前我们先关闭系统自启的nginx
nginx -s quit

#查看是否已经关闭
ps -ef|grep nginx

#开启
nginx -c /usr/share/nginx/nginx.conf

        (4)在浏览器上输入你云服务器的公网ip,就可以访问啦。

               注意:Django项目下,你要配置urls.py文件加入:   url(r'^$', views.home)

               这样只要输入ip就能访问项目主页了

 

这里讲以下uwsgi 和 nginx的关系:

可能出现的问题:

         (1)页面  502错误

                 先查看一下你的静态资源是否可以访问

                      示例:10.31.160.194/static/app/cart/cart.js     直接访问静态资源

                 如果不可以访问,那就是nginx配置错了

                 如果可以访问,但是动态资源不能访问,那么就是uwsgi相关配置出现了错误

                  处理:1,清理浏览器缓存

                             2,看看配置文件有没有错误

                             3,在uwsgi配置文件中不需要指定python解释器,它会自动找到你配置的虚拟环境

                             4,有时候还需要重启一下你的服务器


路过

雷人

握手

鲜花

鸡蛋
腾讯云服务器优惠

相关阅读

最新评论




在线客服(工作时间:9:00-22:00)
400-600-6565

内容导航

微信客服

Copyright   ©2015-2019  云服务器社区  Powered by©Discuz!  技术支持:尊托网络     ( 湘ICP备15009499号-1 )