CentOS7 + Python3 + Django(rest_framework) + MySQL + nginx + uwsgi 部署 API 开发环境

Python环境搭建

Python2 3共存

python -V 查看Python版本

安装Python3

下载安装相关包

yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make

备份

cd /usr/bin
mv python python.bak

安装

wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tar.xz

解压

tar -xvJf Python-3.6.3.tar.xz

切换进入

cd Python-3.6.3

编译安装

./configure prefix=/usr/local/python3
make && make install

Python 2 3共存

添加Python3软链

rm /usr/bin/python
ln -s /usr/local/python3/bin/python3 /usr/bin/python
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

升级pip3到最新版本

pip3 install –upgrade pip

这时候在执行命令python -v和python2 -V,应该就能看到python3和python2的版本了。
因为执行yum需要python2版本,所以我们还要修改yum的配置,执行:

vi /usr/bin/yum
把#! /usr/bin/python修改为#! /usr/bin/python2
vi /usr/libexec/urlgrabber-ext-down
文件里面的#! /usr/bin/python 也要修改为#! /usr/bin/python2

MySQL环境搭建

下载MySQL源安装包, 还是用57吧

wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm

安装MySQL源

yum localinstall mysql57-community-release-el7-8.noarch.rpm
yum install mysql-devel

安装MySQL

yum install mysql-community-server

进入MySQL目录

cd /usr/bin

启动MySQL

systemctl start mysqld

查看MySQL状态

systemctl status mysqld

设置MySQL开机启动

systemctl enable mysqld

修改root本地登录密码(密码必须包含:大小写字母、数字和特殊符号,并且长度不能少于8位)

grep ‘temporary password’ /var/log/mysqld.log
mysql -uroot -p
set password for ‘root’@’localhost’=password(‘!2Qw32sd’);

uwsgi安装配置

uwsgi 安装

使用pip3安装

pip3 install uwsgi

创建uwsgi软链接

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

测试uwsgi是否可用

  1. 建立测试脚本test.py
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello uwsgi!"]
  1. 运行脚本

uwsgi –http :8000 –wsgi-file test.py
浏览器输入IP:端口: 如果可以看到 ‘hello uwsgi’, 配置完成

uwsgi 设置

进入项目目录

cd /var/www/myproject

创建编辑 uwsgi 配置文件(文件名自起)
vim uwsgiset.xml

内容如下

<uwsgi>
<socket>127.0.0.1:8997</socket><!-- 内部端口,自定义 -->
<chdir>/var/www/myproject</chdir><!-- 项目目录 -->
<module>myproject.wsgi</module><!-- wsgi 启动文件 -->
<processes>4</processes> <!-- 进程数 -->
<daemonize>uwsgi.log</daemonize><!-- 日志文件路径 -->
<pidfile>uwsgi.pid</pidfile><!-- uwsgi 管理文件路径,用来重启 uwsgi -->
</uwsgi>

在项目目录( /var/www/myproject )下启动:

uwsgi3 -x uwsgiset.xml

提醒 [uWSGI] parsing config file myproject.xml 则启用成功
注意仅仅是启用成功

Nginx安装配置

Ngxin安装

直接下载.tar.gz安装包,地址:https://nginx.org/en/download.html
推荐选择稳定版下载 : 当前版本 1.12.2

wget -c https://nginx.org/download/nginx-1.12.2.tar.gz

解压

tar -zxvf nginx-1.12.2.tar.gz

编译前初始化配置

cd nginx-1.12.2 # 进入nginx目录
./configure # 使用默认配置

编译安装

make
make install

查找安装路径

[root@Ryoma nginx-1.12.2]#whereis nginx
nginx: /usr/local/nginx

启动、停止 nginx

cd /usr/local/nginx/sbin/ # 进入 nginx sbin 目录
./nginx # 启动 nginx
./nginx -s quit # 此方式停止步骤是待 nginx 进程处理任务完毕进行停止
./nginx -s stop # 此方式相当于先查出 nginx 进程id再使用kill命令强制杀掉进程
./nginx -s reload # 重新加载

查询 nginx 进程:

ps aux|grep nginx

配置Nginx文件

cd /usr/local/nginx/conf/
vim nginx.conf

server {
listen 80;
server_name 127.0.0.1;
index index.py index.html;
# 项目根目录
root /home/myapp/sjk-qasystem/admin-api/QAadmin/qaproject;
#charset koi8-r;
 
#access_log logs/host.access.log main;
 
location / {
include uwsgi_params;
# 这里的端口号要和uwsgi配置文件里相同
uwsgi_pass 127.0.0.1:8997;
}

保存nginx.conf执行

nginx -t 命令检查配置文件是否有错
./nginx -s reload 重启Nginx

CentOS7 + Python3 + Django(rest_framework) + MySQL + nginx + uwsgi 部署 API 开发环境, 记坑篇的更多相关文章

  1. Nginx + uWSGI部署中的一些小坑

    1.invalid host in upstream报错 重新启动nginx : sudo /etc/init.d/nginx restart 原因是在配置负载均衡nginx.conf配置文件时,发现 ...

  2. Django Linux环境下部署CentOS7+Python3+Django+uWSGI+Nginx(含Nginx返回400问题处理、防火墙管理)

    本文将介绍如何在Linux系统上部署Django web项目,本次部署基于下面的架构: CentOS7+ Python3.5 + Django1.11 + uWSGI + Nginx 亲测可行!!按照 ...

  3. Python3.6+nginx+uwsgi部署Django程序到阿里云Ubuntu16.04系统

    Python3.6+nginx+uwsgi部署Django程序到阿里云Ubuntu16.04系统 这个是写好的Django程序在本地机运行的情况,一个查询接口. 准备工作 1.首先购买一台阿里云的EC ...

  4. 填坑!!!virtualenv 中 nginx + uwsgi 部署 django

    一.为什么会有这篇文章 第一次接触 uwsgi 和 nginx ,这个环境搭建,踩了太多坑,现在记录下来,让后来者少走弯路. 本来在 Ubuntu14.04 上 搭建好了环境,然后到 centos7. ...

  5. nginx + uwsgi 部署django项目

    因项目需求,需要部署django项目,这里是基础的nginx配合uwsgi部署django,后续会采用docker部署的方式 环境: centos7 python3.5.4 django2.1.4 u ...

  6. nginx + uwsgi 部署 Django+Vue项目

    nginx + uwsgi 部署 Django+Vue项目 windows 本地 DNS 解析 文件路径 C:\Windows\System32\drivers\etc 单机本地测试运行方式,调用dj ...

  7. nginx+uwsgi部署Django项目到Ubuntu服务器全过程,以及那些坑!!!

    前言:自己在windows上用PyCharm编写的Django项目,编写完后在windows上运行一点问题都没有,但是部署到服务器上时却Bug百出.百度,CSDN,sf,各种搜索寻求解决方案在历时3天 ...

  8. ubuntu+Django + nginx + uwsgi 部署

    ubuntu+Django + nginx + uwsgi 部署 0.前期准备 注意:以下几件事都必须在激活虚拟环境下完成 运行以下命令生成项目所需的依赖列表,会在项目根目录生成一个requireme ...

  9. centos6.5+Django+mysql+nginx+uwsgi

    centos6.5+Django+mysql+nginx+uwsgi 1.nginx的安装.这里采用nginx-1.6.0, 建立一个shell脚本然后执行. #!/bin/bash nginx_ve ...

随机推荐

  1. [分享]windows下编译squid的经验(转)

    squid是什么我这里就不说了,这不是本文的重点,总之它是一个集:代理.加速.缓存.负载均衡.防盗链.访问控制等多功能的一个超牛X开源软件,如今已经广泛应用于很多领域.对于缓存和加速这一领域,如今各大 ...

  2. Python基础之初识递归

    初识递归 递归的定义: 在一个函数里再调用这个函数本身,这种魔性的使用函数的方式就叫做递归. 递归的最大深度--997 递归函数不受外力的阻止会一直执行下去,python为了杜绝此类现象,强制将递归层 ...

  3. 配置LANMP环境(8)-- 安装Samba与配置

    Samba套件,将linux下的文件夹共享给windows(本地开发会很方便) 一.安装Samba yum install –y samba 二.配置Samba 1.备份配置文件 cp /etc/sa ...

  4. 浏览器登录cookie

     <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.o ...

  5. c#基础系列:序列化效率比拼——谁是最后的赢家Newtonsoft.Json

    前言:作为开发人员,对象的序列化恐怕难以避免.楼主也是很早以前就接触过序列化,可是理解都不太深刻,对于用哪种方式去做序列化更是随波逐流——项目中原来用的什么方式照着用就好了.可是这么多年自己对于这东西 ...

  6. PHP-Manual的学习----【语言参考】----【类型】-----【NULL】

    2017年8月24日11:34:061.特殊的 NULL 值表示一个变量没有值.NULL 类型唯一可能的值就是 NULL. 2.在下列情况下一个变量被认为是 NULL: ◦ 被赋值为 NULL. ◦ ...

  7. Linux 安装OpenSSL出错的解决方法

    以前编译php没有 –with–openssl 现在要使用到 openssl ,phpinze扩展安装,但是在make时候报错 今天找这个在网上找了大半天,最后总结应该是php版本本身的问题,错误是p ...

  8. CSS改变字体下划线颜色

    下图是网页中一个非常普通的列表. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvQXVndXMzMzQ0/font/5a6L5L2T/fontsize/40 ...

  9. [原创]webpack动态设置css路径

    在程序入口的最上方添加 __webpack_public_path__ = path; //your path //your app start here

  10. 如何实现模拟器(CHIP-8 interpreter) 绝佳杰作.

    转自 http://www.multigesture.net/articles/how-to-write-an-emulator-chip-8-interpreter/ How to write an ...