python3.8.0 Django 开发后端接口api 部署到 Linux Centos7上

经历了两天的时候终于把本地使用python3 django开发的接口API部署到服务器上了,还是记录一下,以免之后忘记,哈哈

注意一点,就是,centos7是基于python2的,我这边默认的是python2.7.5,记住不要删除了python2,否则后果很严重,yum会报错,这是因为python3和python2版本的冲突导致的

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

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

第二步,下载Pyhton3到/usr/local 目录

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

第三步,解压

tar -zxvf Python-3.8.0.tgz

第四步,进入cd Python-3.8.0

第五步,解压到指定路径

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

第六步,安装python3

make

make install

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

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

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

ln -s /usr/local/python3/bin/pip3.8 /usr/bin/pip3

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

如果安装了python3以后发现没有pip可以通过以下方式下载pip,进入一个目录就是你想把它下载到哪个目录就进入哪个目录

执行命令:wget https://bootstrap.pypa.io/get-pip.py --no-check-certificate

会下载get-pip.py文件

然后执行: python3 get-pip.py

第九步,安装virtualenv, 方便不同版本项目管理。

pip3 install virtualenv

第十步,建立软链接

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

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

mkdir -p /data/env   # 存放虚拟环境

mkdir -p /data/www   # 存放web项目

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

virtualenv3 --python=/usr/bin/python web (项目名) # 创建虚拟环境

       # 然后进入
       cd /data/env/web/bin 

       # 进入bin目录后开启虚拟环境,执行命令
       source activate  

    # 注:(启动后出现 (web),说明是成功进入虚拟环境。)

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

pip3 install django  #(如果用于生产的话,则需要指定安装和你项目相同的版本)

pip3 install uwsgi

# 给uwsgi建立软链接,方便使用

ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi

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

pip freeze > requirements.txt 

第十五步,把项目源码压缩打包。把项目上传到服务器对应的目录里(/data/www/),解压。

这里可以导入本地数据库,其实django建model,只要在线上mysql数据库中建立项目中的数据库的名称,eg:python

然后,可以像本地开发一样 migrate 数据库,前提是已经安装好了数据库啊

第十六步,进入解压好的项目根路径中安装requirements.txt里的依赖包。

pip3 install -r requirements.txt

第十七步,安装mysql

wget -P /home/liudong http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

cd /home/liudong

安装mysql的YUM源:rpm -ivh mysql57-community-release-el7-11.noarch.rpm

检查mysql的YUM源是否安装成功:yum repolist enabled | grep "mysql.*-community.*"

查看mysql版本,执行:yum repolist all | grep mysql

查看当前的启用的 MySQL 版本:yum repolist enabled | grep mysql

yum install mysql-community-server

安装过程中一直输入"y"就可以了,当出现下面的结果时,就代表mysql数据库安装成功了

启动mysql服务:systemctl start mysqld

登录进Mysql(我的刚安装完时没有密码):mysql -uroot -p

查看默认密码

grep ‘temporary password‘ /var/log/mysqld.log

进去之后重新设置密码

set password for ‘root‘@‘localhost‘ = password(‘123456‘);

如果使用navicat for mysql链接不上 可能是这个原因 https://blog.csdn.net/qq_19306197/article/details/83820319

第十八步,通过 python3 manage.py runserver 运行一下项目,如果能正常启动则进行下一步,不能正常运行往上检查

如果报错: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__)

第十九步,在项目根目录里添加uwsgi配置文件 (uwsgi.ini)

[uwsgi]
socket = 127.0.0.1:8070
#是否使用主线程
master = true
# 项目在服务器中的目录(绝对路径)
chdir = /data/www/web
# Django‘s wsgi 文件目录
wsgi-file = web/wsgi.py
# 最大进程数
processes = 4
#每个进程的线程数
threads = 2
#状态监听端口
stats = 127.0.0.1:9191
# 退出时自动清理环境配置
vacuum = true
#目录下文件改动时自动重启
touch-reload = /data/www/web
#Python文件改动时自动重启
#py-auto-reload = 1
#后台运行并把日志存到.log文件
daemonize = /data/www/web/uWSGI.log

第二十步,进入部署到服务器的项目根目录下,执行

uwsgi --ini uwsgi.ini

第二十一步,查看端口,看下uwsgi是否存在

netstat -nltp

第二十二步,配置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:80
        charset utf-8;
        location / {
           include uwsgi_params;
           uwsgi_pass 127.0.0.1:8070;  #端口要和uwsgi里配置的一样
           uwsgi_param UWSGI_SCRIPT web.wsgi;     #wsgi.py所在的目录名+.wsgi
           uwsgi_param UWSGI_CHDIR /data/www/web/; #项目路径

        }
        location /static {
            alias /data/www/web/myapp/static; #静态资源路径
        }

        location /templates {
            alias /data/www/web/templates;
        }
    }

}

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

uwsgi 启动方法
    uwsgi --ini uwsgi.ini
Nginx 重启方法
    nginx -s reload

以下总结下注意事项:

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

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

 ALLOWED_HOSTS = [‘*‘]

3 数据库设置(settings.py)

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

在这里非常感谢 Q博主 https://www.cnblogs.com/chaoqi/p/11103188.html

原文地址:https://www.cnblogs.com/ldlx-mars/p/12075566.html

时间: 2024-10-09 10:30:29

python3.8.0 Django 开发后端接口api 部署到 Linux Centos7上的相关文章

接口测试框架-Django开发post接口

简介:实现简单的登录接口 一 目录结构如下 二 实现步骤 1 新建文件夹templates, 在文件夹下添加login.html文件(页面) <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>login</title></head><body><form action="

visio studio2010 在win10下 开发webservice接口以及部署调用

环境 : win10 企业版 + visio studio2010 (自动安装的,.net 4) win10操作系统中需要安装internet信息服务,见一下步骤,如果找不到,请使用操作系统的企业版本: 1.进入控制面板->程序和功能,点击进入 "启用或关闭Windows功能": 2.找到 Internet Infomation Services 应用程序功能,我这里全都选上了,具体的每个功能的影响,我目前还不是很清楚: 点击确定,进行安装即可. 3.打开Visio Studio

15-Django开发REST接口

使用Django开发REST接口 我们以在Django框架中使用的图书以及书中人物案例来写一套支持图书数据增删改查的REST API接口,来理解REST API的开发(前后端均发送JSON格式数据) 路由代码(urls.py): urlpatterns = [ path('books/', views.BookListView.as_view()), re_path('books/(?P<pk>\d+)/', views.BookDetailView.as_view()) ] views.py

app后端开发二:API接口文档工具

悲伤的历史 在进行app后端开发过程中,后端会提供出来很多的api接口供前端开发使用,为了让前端开发人员顺利使用,我们会写好一份文档,告诉他们这个接口你该用 GET 还是 POST 来访问,同时访问的时候该给我传递一些什么参数,以及正确的时候我会返回什么给你,已经返回的数据样式以及字段解释等等这些事情,我们都需要在文档中写好写清楚. 在 app后端开发一:基于swagger-ui构建api接口文档工具 这篇博客中,我写了 swagger-ui 的好处以及优势.但是在使用过程中,发现不够给力.我想

django 开发之前后端分离开发模式

1. 什么是前后端分离开发的概念: 前端页面运行前端服务器上,负责页面的渲染(静态文件的加载)与跳转 后端代码运行在后端服务器上, 负责数据的处理(提供数据请求的接口) 2. 前后端分离开发碰到的问题 那就是跨域请求的问题: 什么是跨域问题: http协议不同, 端口不同, 服务器IP不同,这些都是跨域 3. 处理跨域的问题: 安装django-cors-headers模块 在settings.py中配置 # 注册app INSTALLED_APPS = [ ... 'corsheaders'

前端基于react,后端基于.net core2.0的开发之路(1) 介绍

文章提纲目录 1.前端基于react,后端基于.net core2.0的开发之路(1) 介绍 2.前端基于react,后端基于.net core2.0的开发之路(2) 开发环境的配置,注意事项,后端数据初始化 3.前端基于react,后端基于.net core2.0的开发之路(3) 各个技术栈配置和说明 4.前端基于react,后端基于.net core2.0的开发之路(4) 前端路由,模型,服务的说明 5.前端基于react,后端基于.net core2.0的开发之路(5) 配置node层,s

VScode 搭建 django 开发环境(Win Python3.71 django1.11.11)

全新Win10下安装开发环境记录 安装VScode 安装Git 安装Python3.71 VScode安装好相关插件 新建好文件夹用 VScode 打开 code-终端-新建终端 要创建虚拟环境,请使用以下命令,其中“env”是环境文件夹的名称: 1 py -3 -m venv env 进入虚拟环境文件夹 cd env 安装指定版本DJango pip3 install django==1.11.11 安装依赖 pip3 install pylint pylint_django 输出已安装了 D

Retrofit 2.0 接口API服务代码

接口API服务代码 接口定义有以下的配置方式, 取决于接口的参数需求(使用注解方式标注请求模板接口) // 可以直接在URL中指定参数 @GET("version/android/2.3.0?order=desc") Call<VersionInfoDTO> loadVersionInfo(); // 设置POST请求体 @POST("users/new") void createUser(@Body User user, Callback<Use

用ASP.NET Web API技术开发HTTP接口(一)

开发工具 Visual Studio 2013 SQL Server 2008 R2 准备工作 启动Visual Studio 2013,新建一个ASP.NET Web应用程序,命名为SimpleAPI.选择Empty模板,并勾选"Web API",无身份验证,不添加单元测试. 准备用SQL Server数据库来存储数据,因此要安装下Entity Framework框架,免去写繁琐SQL语句的麻烦.打开工具->程序包管理器控制台输入以下命令安装. Install-Package