工作中Django上线必须是每个人都要掌握的

需要的软件

1.首先需要一个可以连接你服务器的软件这里需要两个:一个是传文件的(FileZilla),另外一个是和服务器连接,给服务器安装环境用(Xshell)和(putty)都可以

实现第一步拉取文件

1.首先连接FileZilla,连接后会出现下图样式(这里我使用的服务器是阿里云的,系统是Ubuntu)。这里说明一下,连接好后你进入var目录下,此时里面的文件里可能没有一个叫www的文件,这时你可以先创建一个。创建完成后你把你的项目包放到www文件下。

2.你拉取的项目里不包含你做项目时的数据库,所以你在这里也可以顺便数据库也打包拉进去。反正刚开始我也不会拉,所以这里我也演示一下,嘿嘿!顺便把Xshell的连接也说了。

这里的用户名是你在虚拟机(阿里云服务器用户名默认root,IP用的服务器给你的公有IP)设置的,密码是你自己设置的密码。

成功后是这样的

进入你的终端执行

mysqldump -uroot -p blog(这里是你的数据库名,blog是我的)> blog(这个名字你可以随便起).sql

然后把你的数据库导出的包放到下图所示位置

开始第二步,配置环境

1.更新软件列表(不更新可能装不上东西)

apt update

2.安装常用软件

apt install nginx
  apt install mysql-server  #安装过程会弹出一个输入密码的框,这是你进入数据库的密码
  apt install git
  apt install vim

3.安装虚拟开发环境pyenv

curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash

这个虚拟环境装完后在最后会出来三句话,每个人的路径都不同

然后输入命令进入 .bashrc 进去后把刚复制的三句话放置到文件最后,wq保存退出后执行命令让它生效,此时就可以生效

vim .bashrc
  source .bashrc

接着命令

cd .pyenv  #进入这个文件
  mkdir cache #创建cache文件
  cd cache/ #进入此目录

这时需要安装python

#在安装python之前,我们必须要安装python所需要的依赖包,这个必须要安装,安装会失败的:
  sudo apt-get install libc6-dev gcc
  sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm
  ​
  #安装python包,版本可自选,这里我用3.6.6
  wget -c http://mirrors.sohu.com/python/3.6.6/Python-3.6.6.tar.xz -P  ~/.pyenv/cache/#做安装
  pyenv install 3.6.6 -v
  ​
  #更新pyenv数据库
  pyenv rehash
  ​
  #列出所安装的python版本
   pyenv versions
  ​
  #切换python版本
  pyenv  global 3.6.6#6.验证版本
  python

成功后进入你的项目里创建虚拟开发环境(如果你想切出虚拟环境,可执行pyenv deactivate env3.6.6)

cd /var/www
  cd blog #进入你自己项目
  接着创建一个自己的虚拟环境。用法如下:pyenv virtualenv python版本号 虚拟环境名
  pyenv virtualenv 3.6.6 env3.6.6   #注意版本号必须是已经安装的,否则会报错
  切换到你创建的虚拟环境
  pyenv activate env3.6.6
  pip freeze #利用pip安装,但是版本需要升级,按照提示升级

继续,利用pip进行安装,安装你需要的安装包Django,pymysql,pillow,django-tinymce(这个是富文本)

pip install django==1.11.16
  pip install pymysql
  pip install pillow
  .....
  pip freeze #再次查看你安装的包和版本号

最后在安装一个

pip install uwsgi
  vim uwsgiconf.ini

进去后把下方的配置文件放到里面

[uwsgi]
  ​
  # 外部访问地址,可以指定多种协议,现在用http便于调试,之后用socket  #
  socket = 0.0.0.0:8000 # uwsgi的监听端口
# 指向项目根目录
  chdir =  /var/www/blog
  # wsgi.py所在位置
  wsgi-file = blog(项目目录)/wsgi.py
  module = blog(你的项目).wsgi
  # 虚拟开发环境位置(一定要改成你自己的虚拟环境目录)
  virtualenv = /root/python/.pyenv/versions/env3.6.6
  #plugins = python
  ​
  master = true
  ​
  # 处理器数
  processes = 1# 线程数
  threads = 2

最后再配置一下nginx。最后的blog是自己创建的一个文件名

  vim /etc/nginx/sites-available/blog

进去后把配置也写下,配置如下,转换网址在这里http://www.cnkuai.cn/zhuanma.asp?act=save

server {
      listen 80;
      server_name www.bly.我爱你; #这里写自己的域名,如果后面访问不出效果,只出一个(欢迎来到nginx界面)。那可能与你的域名有关(反正我的域名是中文后缀,没解析出来),所以这时你可以把你中文域名放置到网上转换一下,再放到这里就可以了。
      location / {
          # 转发端口必须和uwsgiconf.ini中socket端口一致
          uwsgi_pass      127.0.0.1:8000; 
          include uwsgi_params; 
          uwsgi_param UWSGI_SCRIPT blog.wsgi; 
          # 项目的根目录
          uwsgi_param UWSGI_CHDIR  /var/www/blog;
      }
      # 静态资源所在位置
      location /static {
          alias /var/www/blog/static/;
      }
  }

配置完成后,进入刚刚的位置配置一个软连接(切记下面的blog,是一个软件界名字,中间有个空格)

cd /etc/nginx/
  cd sites-enabled/
  ln -s ../sites-available/blog blog
  ll #查看结果里没有报红颜色,就成功

然后重启服务,如果不报错,就ok,如果报错,可能是语法问题

service nginx restart

最后再到你的项目目录下启动uwsgi

cd /var/www/blog/
  ps -aux | grep uwsgi #查看uwsgi是否起来,如果起来了,把他禁掉
  uwsgi uwsgiconf.ini

如果是和下面的一样,那你就成功了。

如果提示您的端口被占用

netstat -anp
  kill -9 PID(这里是进程)

然后,访问你的域名。

 

原文地址:https://www.cnblogs.com/542684416-qq/p/10049917.html