(最全)部署django项目到远程服务器

包括内容

  1. 环境准备
  2. 安装环境
  3. 项目配置django+nginx+uwsgi

一、环境准备

  • 腾讯云服务器:Ubuntu16.04
  • python:3.6
  • django:2.1.4
  • mysql:5.7
  • web服务器:nginx
  • wsgi服务器:uwsgi
  • python连接mysql库:pymysql

二、安装环境

需要先连接到腾讯云服务器,在安装以下环境。

安装python3.6

Ubuntu默认安装了Python2.7和3.5,这里从新安装python3.6
输入命令

sudo add-apt-repository ppa:jonathonf/python-3.6
#这句话的意思是获取最新的个人软件包档案源,将其添加至当前apt库中,并自动导入公钥。
sudo apt-get update
# update命令,会访问源列表里的每个网址,并读取软件列表,然后保存在本地电脑。我们在新立得软件包管理器里看到的软件列表,都是通过update命令更新的。 
sudo apt-get install python3.6

按Y确认
输入python -v验证安装成功

调整Python3的优先级,使得3.6优先级较高

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5 1

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 7

更改默认值,python默认为Python2,现在修改为Python3

sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150

安装django

先安装pip3:

sudo apt-get update
sudo apt-get install pip3

如果安装提示:E: Unable to locate package pip3 试试以下方法

sudo apt-get install python3.6-gdbm
sudo apt-get install python3-pip

然后安装Django,这个地方要注意安装你所使用的Django版本:

pip3 install django

输入django-admin 测试是否安装成功

> django-admin
Type 'django-admin help ' for help on a specific subcommand.

Available subcommands:

[django]
    check
    compilemessages
    createcachetable
    dbshell
    diffsettings
    dumpdata
    flush
    inspectdb
    loaddata
    makemessages
    makemigrations
    migrate
    runserver
    sendtestemail
    shell
    showmigrations
    sqlflush
    sqlmigrate
    sqlsequencereset
    squashmigrations
    startapp
    startproject
    test
    testserver

安装成功

安装nginx

sudo apt-get update
sudo apt-get install nginx

安装完成打开浏览器输入127.0.0.1


(最全)部署django项目到远程服务器_第1张图片
nginx

安装成功

安装uwsgi

apt-get install python3.6-dev
pip install uwsgi

如果安装过程中出现问题试下以下方法

  1. 在你的本地电脑访问https://uwsgi-docs.readthedocs.io/en/latest/Download.html,下载Stable/LTS版本的源文件。

  2. 上传下载的文件到服务器

scp -P 22 -r 下载的文件路径 root@服务器ip:上传服务器存放的路径
  1. cd 文件路径解压文件
tar -zcvf xxx.tar.gz 
  1. 解压成功后cd进入该文件,执行以下三条命令
sudo apt-get install python3-setuptools
sudo apt-get install python3.6-dev
sudo python3 setup.py install

测试uwsgi,创建test.py文件:

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

通过uwsgi运行该文件。
uwsgi --http :8001 --wsgi-file test.py
打开浏览器输入127.0.0.1:8001
显示Hello World安装成功

三、项目配置Nginx+uwsgi+Django

经过上面的步骤,如果一切顺利就已经把所需要的软件和环境搭建好了,接下来我们就开始配置项目。

1. 上传本地django目录到腾讯云服务器

首先看下本地django项目目录结构 (以免下面配置文件到时候搞不清楚文件路径)

my_web/

├── manage.py

├── my_web/

│ ├── init.py

│ ├── settings.py

│ ├── urls.py

│ └── wsgi.py

├── app/

│ ├── init.py

│ ├── admin.py

│ ├── apps.py

│ ├── models.py

│ └── views.py

开始上传

scp -P 22 -r django项目路径 root@服务器ip:/home
# 我这里把项目存放中/home路径下

如果是windows系统可以使用Xftp工具上传

2. 配置uwsgi

在my_web项目的根目录下,也就是有manage.py文件的目录下,新建一个myuwsgi.ini文件和一个myuwsgi.log文件
然后我们使用vim编辑器编辑myuwsgi.ini文件
vim myuwsgi.ini

[uwsgi]
# Django-related settings
# 指定项目执行的端口号
socket = :8011
# Django项目目录
chdir = /home/my_web

# wsgi.py,直接写个项目名.wsgi就可以了
module = my_web.wsgi

# process-related settings
# master
# 表示以主进程模式运行
master = true
# 进程数
processes = 4

# ... with appropriate permissions - may be needed
# chmod-socket = 664
# clear environment on exit
vacuum = true
#保存日志文件,这个路径就是刚刚新建的myuwsgi.log文件的路径
daemonize = /home/my_web/myuwsgi.log
# 表示不记录正常信息,只记录错误信息,否则你的日志可能很快就爆满了
disable-logging = true 
#在项目生成两个文件uwsgi.status和uwsgi.pid 方便查看pid和运行状态
stats=/home/my_web/uwsgi.status           
pidfile=/home/my_web/uwsgi.pid 

wq保存文件
配置完成启动服务
uwsgi myuwsgi.ini

spawned uWSGI master process (pid: 7158)
spawned uWSGI worker 1 (pid: 7160, cores: 1)
spawned uWSGI worker 2 (pid: 7161, cores: 1)
spawned uWSGI worker 3 (pid: 7162, cores: 1)
spawned uWSGI worker 4 (pid: 7163, cores: 1)

这样说明启动成功了~~

3. 配置nginx

通过vim打开etc/nginx/nginx.conf文件,添加如下内容。

server {
    listen 80; 
    server_name www.xxx.com
    charset UTF-8;
    access_log      /var/log/nginx/myweb_access.log;
    error_log       /var/log/nginx/myweb_error.log;

    client_max_body_size 75M;

    location / { 
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:8011;
        uwsgi_read_timeout 2;
    }   
 }

listen 指定的是nginx代理uwsgi对外的端口号。
server_name 可以是域名也可以是ip地址
include 必须指定为uwsgi_params;
uwsgi_pass 指的本机IP,端口与myuwsgi.ini配置文件中的必须一致。
注意:server要添加到http{ }大括号内
配置完成重启nginx
nginx -s reload
最后打开浏览器验证下就ok了~~

补充

uwsgi --reload uwsgi.pid # 重启服务
uwsgi --stop uwsgi.pid # 停止服务
uwsgi --connect-and-read uwsgi.status # 查看运行状态

sudo service nginx start # 启动nginx
sudo service nginx stop # 停止nginx
sudo service nginx reload # 重启nginx

查看运行的应用进程
ps -aux | grep uwsgi
关闭进程
kill -9 pid

你可能感兴趣的:((最全)部署django项目到远程服务器)