ubuntu18+uwsgi+nginx部署django项目

更新系统软件源css

  sudo apt-get updatepython

pip3安装mysql

  sudo apt install python3-pipnginx

安装virtualenvwrappergit

  pip3 install virtualenvwrapperredis

修改.bashrc,最后面添加如下代码:sql

  export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3数据库

  source /usr/local/bin/virtualenvwrapper.shvim

从新加载配置浏览器

  source ~/.bashrc

 

建立虚拟环境

  mkvirtualenv 虚拟环境名

进入虚拟环境

  workon 虚拟环境名

退出虚拟环境

  deactivate

 

安装mysql

  sudo apt-get install mysql-server

 

安装mysql驱动
  sudo apt-get install libmysqlclient-dev

 

设置mysql容许远程访问,方便使用navicat导入数据.首先编辑文件/etc/mysql/mysql.conf.d/mysqld.cnf

  sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

  注释掉bind-address = 127.0.0.1: #容许远程链接

 

进入mysql,修改root密码

  mysql>set password for root@localhost = password('123');

 

建立普通用户

  create user 'username'@'%' IDENTIFIED BY 'password';

 

给普通用户赋权

  grant all on *.* to username@'%';

 

刷新

  flush privileges;

 

退出

  exit

 

重启mysql

  service mysql restart

 

安装redis

  sudo apt-get install redis-server

 

修改redis配置

  使用redis的访问帐号

  sudo vi /etc/redis/redis.conf

  #取消注释requirepass

  requirepass 密码

 

容许远程访问

  #注释bind

  # bind 127.0.0.1

重启redis

  sudo /etc/init.d/redis-server restart

 

桌面建立新目录Project

  mkdir Project

 

在项目中建立项目依赖包文件

  pip freeze > package.txt

 

上传项目到Project,或者进入Project使用git克隆

  scp -r 本地项目目录  root@服务器IP:/root/Project

  git clone 项目地址

 

安装依赖包

  pip install -r package.txt

 

进入项目修改settings文件

  将mysql帐号密码修改为服务器的

  修改ALLOWED_HOSTS = ['*']

 

# 测试以前先将项目用到数据导入数据库,否则确定报错

测试可否正常运行,而后浏览器访问服务器地址

  python3 manage.py runserver 0.0.0.0:80

 

安装uwsgi

  sudo pip3 install uwsgi

 

在manage.py同级目录下建立uwsgi.ini文件

  vim uwsgi.ini

 

编辑内容以下

[uwsgi] #若是单独使用uwsgi来部署Django项目时,就用这一行。 http=0.0.0.0:80 #若是使用nginx+uwsgi来部署Django项目时,就用这行。 # socket=127.0.0.1:8080 # 和nginx链接的端口 #你项目的完整路径。 chdir=/root/Project/MyProject #给socket文件赋权限,这里不用管。 # chmod-socket=664 #启用主线程。 master=true processes=4 threads=2 #指定日志文件(会自动建立)。这个很重要,若是uwsgi出现错误,能够经过日志文件来查错。 logto=uwsgi.log #指定进程号文件(会自动建立)。这个也很重要,若是要重启和关闭uwsgi,则须要这个文件,里面记录了进程号。 pidfile=uwsgi.pid #指定wsgi文件。在与settings.py同级目录中会有一个wsgi.py文件。 module=MyProject.wsgi:application

 

保存退出后启动uwsgi,若是报错请查看日志文件

  uwsgi --ini uwsgi.ini 

 

安装nginx

  sudo apt-get nginx

 

进入/etc/nginx/备份nginx.conf

  sudo cp nginx.conf nginx.conf.bak

删除nginx.conf,从新建立nginx.conf,内容以下:

  

events { worker_connections 1024; # 不用管 } http{ server { listen 80; #这个端口用来监听浏览器的请求。 server_name 0.0.0.0; # 不用管,若是有域名能够填上域名。 charset UTF-8; #日志文件。若是nginx出现问题,均可以经过日志文件来查错。 access_log /var/log/nginx/MyProject_access.log; error_log /var/log/nginx/MyProject_error.log; client_max_body_size 75M; location / { include uwsgi_params; # 使用uwsgi服务器。 uwsgi_pass 127.0.0.1:8080; # 把浏览器发来的请求转发到8001端口,而uwsgi也正在监听8001端口,因此就实现了nginx与uwsgi的通讯。 uwsgi_read_timeout 30; #连接超时时间 } location /static/{ # 处理静态文件,处理连接是以/static/开头的请求。 alias /usr/DjangoProject/MyProject/static/; # 项目静态文件的绝对路径。 } } }

 


最后

修改uwsgi.ini文件,把http=0.0.0.0:80注释掉,使用socket=127.0.0.1:8080

输入:uwsgi -d --ini uwsgi.ini    # 启动uwsgi服务器。-d表示在后台运行。这样就不会占用当前窗口了。

输入:/etc/init.d/nginx start     # 启动nginx

浏览器访问

相关文章
相关标签/搜索