项目依赖: Linux Centos7 (阿里云轻量级服务器) + Python 3.7.2 + Django 2.2.1 + restframework 3.9.4 + mysql 5.7

1 安装 python3 到 Centos7, 先安装软件管理包和可能使用的依赖

yum -y groupinstall "Development tools"
yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel

2 下载Pyhton3到/usr/local 目录

wget https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz

3 解压

tar -zxvf Python-3.7.2.tgz

4 进入到解压好的python文件中

cd Python-3.7.2

5 编译安装到指定路径

./configure --prefix=/usr/local/python3

6 安装python3

makemake install

7 安装完成之后 建立软链接 添加变量 方便在终端中直接使用python3

ln -s /usr/local/python3/bin/python3.7 /usr/bin/python3

8 Python3安装完成之后pip3也一块安装完成,不需要再单独安装一样建立软链接
同样给pip3建立软链接

ln -s /usr/local/python3/bin/pip3.7 /usr/bin/pip3注: 如果软链建立完成,但是却无法使用的时候执行下面命令:mv pip pip2  # (将文件 pip 更名为 pip2 )ln -s /usr/local/python3/bin/pip3 /usr/bin/pip  

9 安装virtualenv, 方便不同版本项目管理。

pip3 install virtualenv

10 建立软链接

ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv3

11 安装成功在根目录下建立两个文件夹,主要用于存放env和网站文件的 (文件创建随意,根据实际需求)。

mkdir -p /data/env   # 存放虚拟环境mkdir -p /data/wwwroot   # 存放web项目

12 切换到/data/env/下,创建指定版本的虚拟环境。

       virtualenv3 --python=/usr/bin/python qize_demo (项目名) # 创建虚拟环境# 然后进入cd /data/env/qize_demo/bin # 进入bin目录后开启虚拟环境,执行命令source activate  # 注:(启动后出现 (qize_demo),说明是成功进入虚拟环境。)

13 虚拟环境里用pip3安django和uwsgi (留意:uwsgi要安装两次,先在系统里安装一次,然后进入对应的虚拟环境安装一次。)

pip3 install django  #(如果用于生产的话,则需要指定安装和你项目相同的版本)pip3 install uwsgi# 给uwsgi建立软链接,方便使用ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi

14 在本地项目目录下用下面的命令把当前的环境依赖包导出到requirements.txt文件

pip freeze > requirements.txt 


15 把项目源码压缩打包。把项目上传到服务器对应的目录里(/data/wwwroot/),解压。

16 进入解压好的项目根路径中安装requirements.txt里的依赖包。

pip3 install -r requirements.txt

17 导入数据库到服务器。(如果用的是Mysql的话)

导出Mysql,django为你的数据库

mysqldump -uroot -p password django>django.sql

把django.sql上传到服务器,在服务器里用下面命令导入

mysql -uroot -ppassworduse dajngo;source your Path\django.sql

18 通过 python3 manage.py runserver 运行一下项目,如果能正常启动则进行下一步,不能正常运行往上检查 (下面给出几个常见错误和解决方案)。

报错1:django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.3 or newer is required; you have 0.7.11 解决方案:

解决:编辑Python安装路径下的 Python36-32\Lib\site-packages\django\db\backends\mysql\base.py

将文件中的如下代码注释#if version < (1, 3, 3):
#    raise ImproperlyConfigured("mysqlclient 1.3.3 or newer is required; you have %s" % Database.__version__)

报错2: File "/usr/local/python3/lib/python3.7/site-packages/django/db/backends/mysql/operations.py", line 146, in last_executed_query query = query.decode(errors='replace')

AttributeError: 'str' object has no attribute 'decode'

解决:编辑

/usr/local/python3/lib/python3.7/site-packages/django/db/backends/mysql/operations.py

的 第146 行,

# 将 decode 改为 encode 保存并退出
query = query.decode(errors='replace') 改为 query = query.encode(errors='replace')

19 在项目根目录里添加uwsgi配置文件 (qize_demo.xml)

<uwsgi>       <socket>127.0.0.1:8070/</socket><!-- 内部端口,自定义 --> <chdir>/data/wwwroot/qize_demo/</chdir><!-- 项目路径 -->            <module>qize_demo.wsgi</module> <processes>4</processes> <!-- 进程数 -->     <daemonize>uwsgi.log</daemonize><!-- 日志文件 --></uwsgi>

20 配置Nginx配置文件(把原先的配置文件可以备份以下,然后将下面的替换进去)。

events {worker_connections  1024;}http {include       mime.types;default_type  application/octet-stream;sendfile        on;server {listen 80;server_name  127.0.0.1:80;  # 改为自己的域名,没域名修改为127.0.0.1:80charset utf-8;location / {include uwsgi_params;uwsgi_pass 127.0.0.1:8070;  #端口要和uwsgi里配置的一样uwsgi_param UWSGI_SCRIPT qize_demo.wsgi;     #wsgi.py所在的目录名+.wsgiuwsgi_param UWSGI_CHDIR /data/wwwroot/qize_demo/; #项目路径}location /static {alias /data/wwwroot/qize_demo/static; #静态资源路径}location /templates {alias /data/wwwroot/qize_demo/templates;}}}

留意:一定要注意Uwsgi和Nginx配置文件里的项目路径和静态资源路径,填写正确了才能成功访问。不然会出现502错误。还有就是,修改Django文件和其它配置文件之后,一定要重启Uwsgi和Nginx,不然不生效。

21 Uwsgi和Nginx重启方法:

uwsgi 启动方法

uwsgi -x qize_demo.xml

Nginx 重启方法

nginx -s reload

然后在浏览器里访问服务器ip(或域名),就能查看到项目。

如果想使用域名访问项目,先在域名管理后台把域名解析到服务器IP上来,之后在Nginx配置文件里绑定域名。然后在浏览器里通过绑定的域名访问项目。

以下总结一些问题:

1 如果访问出现 500 以上的错误信息并有nginx的信息,一般是nginx配置出了问题。去查看nginx.conf配置中的项目路径是否正确,uwsgi_pass 参数的端口和 uwsgi的xml 文件中端口是否一致,是否修改完配置后重新启动了nginx。还有就是可以去项目根路径下 python manage.py runserver 启动下项目,看看有没有报错,也有可能是程序本身就有问题。

2 如果访问出现 400 以上的错误信息,重点检查项目路径,包括 tempates / static 静态路径是否正确,和项目中 settings 是否配置了 tempates / static 文件的访问路径,以及 url 是否正确,其次还有html文件中引入的 css, js, img 等文件路径是否正确, 比如:

  css文件:<link rel="stylesheet" href="/static/css/q.css">js文件 :<script src="/static/js/q.js"></script>

以下总结下注意事项:

1 项目上线后记得 DEBUG = False 这样设置,这样的话你的项目访问失败就不会有 Django 的错误信息了

2 设置所有 IP 都可访问 (settings.py)

     ALLOWED_HOSTS = ['*']

3 数据库设置(settings.py)

DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'sql_base',       # 库名 (根据实际数据库名进行修改)'PORT': 3306,         # 端口(不用改)'HOST': '127.0.0.1',  # 本地host(不用改)"USER": 'root',           # 用户名'PASSWORD': '123456'  # 密码}
}

转载于:https://www.cnblogs.com/chaoqi/p/11103188.html

Python Django项目部署 Linux 服务器相关推荐

  1. 将Django项目部署到服务器

    将Django项目部署到服务器 效果 准备云服务器 服务器链接xshell 安装宝塔 进入宝塔 添加站点 打包本地django文件上传 宝塔面板安装python管理器 django配置文件 配置数据库 ...

  2. Django项目在Linux服务器上部署和躺过的坑

    引言 在各方的推荐下,领导让我在测试环境部署之前开发的测试数据预报平台.那么问题来了,既然要在服务器上部署, 就需要准备: 1.linux服务器配置 2.linux安装python环境搭建与配置 3. ...

  3. java linux 服务_java项目部署Linux服务器几种启动方式总结经验

    一:两种部署包: 部署之前先说下两种包,java项目部署到服务器一般有用war包的,也有用jar包的,微服务spring-cloud普及后大部分打包都是jar,部署之前先搞清楚自己要打war包还是ja ...

  4. 如何将本地django项目部署到服务器,Django本地项目部署到云服务器

    开发环境 开发语言: Python 后台框架:Django web 服务器:nginx wsgi 服务器:uwsgi 云服务器系统:Ubuntu 查看本地项目 Django 和 Python 版本: ...

  5. 如何将本地python项目部署到服务器上_如何将本地的Django项目部署到云服务器

    如何将本地的Django项目部署到云服务器 开发环境 开发语言: Python 后台框架:Django 前端框架:bootstrap web服务器:nginx wsgi服务器:uwsgi 查看本地项目 ...

  6. linux Centos系统下django项目在Nginx服务器上的部署

    Centos下Python2和3并存环境部署 第一部分: python环境部署 我们今天学习的内容是如何将Django项目部署到linux服务器上,我们部署的linux系统是centos7首先,我们先 ...

  7. 从零部署 Django 项目至云服务器

    过去半个月,成功实现了将 Python Django 搭建的 API 本地项目部署到阿里云服务器.因为是初次尝试部署服务器.注册域名等,甚至也是自己独立去使用 Linux 系统,在整个部署过程中没来得 ...

  8. Django项目部署到阿里云服务器及后台常驻

    本文将记述如何简单的将自己的Django项目部署到阿里云服务器上. 准备条件: 阿里云服务器:centos 7.5 Nginx(反向代理) Python 3.7.3 Django 2.2+注意:cen ...

  9. Java Web项目在Linux服务器自动化部署续-整合Bamboo

    前言 Java Web项目在Linux服务器自动化部署 在这一篇中, 完成的是一个自动化部署的脚本. Atlassian Bamboo 是一款持续集成构建服务器软件(Build Server) 软件地 ...

最新文章

  1. python科学计算笔记(三)pandas中Series和DataFrame练习
  2. 后台拿webshell的常用方法总结
  3. ASP.NET 操作Cookie详解 增加,修改,删除
  4. [转载]JavaScript 的轻框架开发
  5. java 试题 历届试题 单词分析 题解
  6. tshark存储数据到mysql_网络分析利器wireshark命令版(2):tshark使用示例
  7. ASP.NET C# 文件下载速度限制
  8. 安卓机器人做图软件_移动机器人领域,除了工业(安卓)一体机,工控机也必不可少...
  9. Swagger2+Apizza接口文档
  10. 顶级知识管理工具Evernote的GTD应用详细指南
  11. Vue安装环境最全教程,傻瓜式安装
  12. 【CSS】浅谈 CSS 中常用的相对长度单位 em, rem
  13. 压缩word文档大小的方法?
  14. 计算机软件项目的效益预测,软件工程经济效益分析.doc
  15. 同步电机模型的MATLAB仿真模型
  16. Linux信号处理简析
  17. Windows+Anaconda+tensorflow+keras深度学习框架搭建--reproduced
  18. 自动复制 JavaScript 脚本,JavaScript点击任意位置复制脚本源码
  19. Tomcat 与 JDK 版本对应
  20. CCS2020论文泛读记录

热门文章

  1. mysql数据排序指令_MySQL 排序 | 菜鸟教程
  2. 清华大学计算机学院主页,计算机图形学基础课程主页 | 清华大学计算机系
  3. 天池 在线编程 高效作业处理服务(01背包DP)
  4. 天池 在线编程 求和查找
  5. LeetCode 656. 金币路径(DP)
  6. LeetCode 366. 寻找二叉树的叶子节点(上下翻转二叉树+BFS)
  7. LeetCode 932. 漂亮数组(分治递归/循环)
  8. LeetCode 372. 超级次方(快速幂)
  9. php将文件夹压缩成zip文件,将文件夹压缩成zip文件的php代码_php实例
  10. oracle聚合函数wmsys,oracle 自定义聚合函数