CentOS8+uwsgi+Nginx+MySQL+Django

2020-06-09  本文已影响0人  熊一二

说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家!

@TOC

系统: centos_8 + Python 3.6.8 + nginx-1.13.7 + uWSGI 2.0.17.1 + Django2.2.0

# 检查当前系统版本
cat /proc/version

Linux version 4.18.0-147.5.1.el8_1.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 8.
3.1 20190507 (Red Hat 8.3.1-4) (GCC)) #1 SMP Wed Feb 5 02:00:39 UTC 2020

# 检查当前系统Python版本
python3 --version
> Python 3.6.8

python
-bash: python: command not found

# 说明安装了Python3 未安装Python2;

apt-get: command not found,这个的出现是因为系统的原因。
Linux系统分为两种:
1、RedHat系列:Redhat、Centos、Fedora等
2、Debian系列:Debian、Ubuntu等
RedHat系列的包管理工具是yum
Debian系列的包管理工具是apt-get
由上可以看出我的系统是Red hat 所以使用的包管理工具是yum。

常见的Python HTTP服务器

Name Version http1.1 Flavour Repo Community
uWSGI Trunk(253) Yes processor/thread repo Mailing List
Gunicorn 0.6.4 No processor/thread GIT #gunicorn
wsgiref Py 2.6.4 No processor/thread SVN Mailing List
Twisted 10.0.0 Yes processor/thread SVN Community
Tornado 0.9.6 Yes lightweight threads Mercurial Mailinglist
在这里插入图片描述

安装部署记录

1、创建非管理员账户

#由于安全需求,还是配置一个非管理员(自己操作,增加sudo授权)账户操作,通过命令创建用户名密码
adduser jojo  # 新增用户
passwd jojo  # 为jojo设置密码

#设置好之后,还需要开启sudo权限,通过命令:
vi /etc/sudoers

#然后找到有 root ALL=(ALL)那一行,然后在下面增加一行:
quinns ALL=(ALL)  ALL

#保存即可。

下面的操作,用新用户jojo登录来操作。

2、安装依赖

uwsgi和nginx以及anaconda的安装会存在一些报错问题,这里为了避免出现这情况,所以先安装好依赖。

sudo yum install gcc-c++

sudo yum install wget openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel

sudo yum install uwsgi-plugin-python
#> Last metadata expiration check: 0:28:54 ago on Tue 09 Jun 2020 10:31:09 AM CST.
No match for argument: uwsgi-plugin-python
Error: Unable to find a match: uwsgi-plugin-python
#可以使用
yum search vim uwsgi-plugin-python
#查找或安装相应版本,再次yum install一下。
#试了不行,末尾加了36也不行。
# 最后试了sudo pip3 install uwsgi完成了安装

sudo yum install libxml*
#Error: 
 Problem 1: conflicting requests
  - nothing provides glibmm24-devel needed by libxml++-devel-2.40.1-10.el8.x86_64
  - nothing provides pkgconfig(glibmm-2.4) >= 2.32.0 needed by libxml++-devel-2.40.1-10.el8.x86_64
 Problem 2: conflicting requests
  - nothing provides glibmm24-doc needed by libxml++-doc-2.40.1-10.el8.noarch
(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)


sudo yum install -y bzip2

sudo yum -y install pcre-devel

sudo yum install python-devel
#Last metadata expiration check: 0:40:26 ago on Tue 09 Jun 2020 03:54:32 PM CST.
No match for argument: python-devel
Error: Unable to find a match: python-devel

sudo yum install build-essential python-dev
#Last metadata expiration check: 0:00:07 ago on Tue 09 Jun 2020 04:35:44 PM CST.
No match for argument: build-essential
No match for argument: python-dev
Error: Unable to find a match: build-essential python-dev

3、安装软件

通过jojo账户登录,然后到jojo用户目录(/home/jojo)下新建一个utils目录mkdir utils,把一些软件下载在utils目录下。

3.1安装anaconda

Anaconda是什么❓

Anaconda 是一个可用于科学计算的 Python 发行版,支持 Linux、Mac、Windows系统,内置了常用的科学计算包。
Anaconda 解决了官方 Python 的两大痛点。
第一:提供了包管理功能,Windows 平台安装第三方包经常失败的场景得以解决.
第二:提供环境管理的功能,功能类似 Virtualenv,解决了多版本Python并存、切换的问题。
Anaconda入门安装教程

安装Anaconda

#1、通过wget方式下载anaconda(官网)
wget https://repo.continuum.io/archive/Anaconda3-5.0.1-Linux-x86_64.sh

    ~~#如果想更快,就安装国内源(清华镜像):
    wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-5.1.0-Linux-x86_64.sh~~ 

#2、下载好之后sh安装
sh Anaconda3-5.0.1-Linux-x86_64.sh
#一路默认,到之后面安装完的时候会提示是否添加环境变量,输入yes即可。

    #如果想要后面使用更快,可以更改仓库镜像:
    conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
    conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
    conda config --set show_channel_urls yes
    #这样的话安装软件都是国内源,速度比较快

wget是什么❓

wget是一个下载文件的工具,它用在命令行下。对于Linux用户是必不可少的工具,我们经常要下载一些软件或从远程服务器恢复备份到本地服务器。
Linux wget 命令详解

3.2验证是anaconda否成功安装
#通过命令:
conda list
#来验证是否成功安装并加入环境变量,如果出现list列表则代表成功,如果出现报错提示信息则需要用命令:
source ~/.bashrc
#来添加,然后重复conda list命令。
「到这步我的已经OK了~」

#如果还是不行,则编辑/etc/profile文件,在底部添加环境变量及指向:
export PATH=/home/quinns/anaconda3/bin:$PATH
#通过文件添加的环境变量需重启服务器才能生效

3.3安装uwsgi

#在确认安装好anaconda之后,先不着急新建虚拟环境,直接在linux下输入python,检查默认python是否已自动替换为python3.6。
# 接着通过pip安装uwsgi:
pip install uwsgi
pip3 install uwsgi  # 这里我用的pip3

#待有安装成功的提示出来,再通过命令:
uwsgi --version
#来确认是否成功安装。
「验证成功安装了」

特别注意WSGI/uwsgi/uWSGI这三个概念的区别

WSGI我们已经清楚是一种通信协议
uwsgi同WSGI一样是一种通信协议
而uWSGI是实现了uwsgi和WSGI两种协议的Web服务器

为什么有了uWSGI还需要Nginx❓

因为Nginx具备优秀的静态内容处理能力,然后将动态内容转发给uWSGI服务器,这样可以达到很好的客户端响应。


在这里插入图片描述

3.4创建虚拟环境

# 通过anaconda来创建python虚拟环境:
conda create --name envname python=3.6.3
(亲身经历 3.6.5无法启动uwsgi,最好还是3.6.3)
观察过程,无报错即完成安装。

「我的实践过程」
conda create --name envdf python=3.6.8
-->  Package plan for installation in environment /home/jojo/anaconda3/envs/envdf
#创建过程中输入y,无报错安装成功。

3.5安装nginx

# 直接通过yum来安装nginx即可,如果想安装新版,可以在网上寻找新方法。
sudo yum install nginx
「 安装成功,无报错 」

# 安装完成后应该是自动启动服务,在浏览器输入ip即可访问nginx的欢迎页面。
「 输入IP后没有显示Nginx欢迎页面」

# 如果没有,通过命令:
sudo service nginx start/restart
# 来启动或者重启nginx服务。
「 使用此方法后显示了Nginx欢迎页面」

3.6 安装MySQL

「 我已有云数据库RDS MySQL,故此处我无需安装 」

上一篇下一篇

猜你喜欢

热点阅读