IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python项目部署到服务器(centos7+Django+uwsgi+nginx)教程(二) -> 正文阅读

[Python知识库]python项目部署到服务器(centos7+Django+uwsgi+nginx)教程(二)

前言

这篇主要是配置uwsgi+nginx。

Django能在自带的web服务器上正常运行后我们再配置uwsgi和nginx。

最下方有可能出现的报错信息供查询参考。

一、安装uwsgi

1.镜像下载安装uwsgi

pip3 install uwsgi -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

// 完成后建立软链接

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

2.配置uwsgi:

我网站项目路径是 /data/wwwroot/mysite/,在项目根目录下创建

mysite.ini,

img

输入内容:以下内容直接复制,注项目目录需要改成自己的。

[uwsgi]

#使用nginx连接时使用,和nginx配置要保持一致的端口。,注意每个项目的socket端口都不一样。

#socket = 127.0.0.1:8997 

#当成web服务器来使用

http=127.0.0.1:8000

# 项目目录 , kuwo是我的项目名

chdir = /data/wwwroot/KuWo

# 项目中wsgi.py文件的目录,相对于项目目录

wsgi-file = KuWo/wsgi.py

# 启动服务器之后工作的进程(接收客户端请求)数

processes =1

# 工作进程中的线程数

threads = 1

master = True

# 启动服务器之后会生成文件uwgi.pid,里面保存的是主进程进程号

pidfile = uwsgi.pid

# 服务器启动之后在后台运行,会生成文件uwsgi.log,保存日志信息

daemonize=uwsgi.log

3.启动uwsgi

进到项目里面再启动:mysite是项目的ini(在给这个项目的ini起名字的名称,一般和项目名保持一致).

执行:

uwsgi  --ini mysite.ini

或者

uwsgi mysite.ini

img

重启uwsgi命令:

 uwsgi --reload uwsgi.pid

停止: uwsgi --stop uwsgi.pid

监听文件内容的变化: tail -f uwsgi.log

4.运行项目

先实验能否在http上运行出来项目:192.168.43.201:8000,能运行出来再改成socket链接nginx

uwsgi的错误日志:

进入项目目录:uwsgi.log

把socket注释,把http打开,此时uwsgi相当于web服务器。

img

img

如上图运行成功后我们再链接nginx.

下面是保留socket,uwsgi连接nginx,把nginx作为web服务器.

img

二、nginx安装与配置

1.安装nginx

centos7系统库中默认是没有nginx的rpm包的,所以我们自己需要先更新下rpm依赖库

使用yum安装nginx需要包括Nginx的库.

rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

安装nginx

yum install nginx

启动nginx

启动
systemctl start nginx.service      
重启
systemctl restart nginx.service
停止
systemctl stop nginx.service
查看状态
systemctl status nginx.service

安装好后通过以下命令查看nginx安装的位置

which nginx
whereis nginx
find
nginx配置文件
vi /etc/nginx/conf.d/default.conf
nginx错误日志
vi /var/log/nginx/error.log

页面存放位置 /usr/share/nginx/html

通过ip可以访问到nginx默认运行的文件。

img

2. nginx服务器配置

在/usr/local/nginx/conf.d中备份default.conf文件,以防意外。

cp default.conf  default.conf.bak

然后打开default.conf,把原来的内容删除,直接加入以下内容:

这里一定要自己手敲一遍!!!!复制格式有问题,容易出现报错。

server {
   listen 80;
#servername后面写你的域名(yang...com),如果没有localhost。
   server_name 
   charset utf-8;
   location / {
     include uwsgi_params;
     uwsgi_pass 127.0.0.1:8997; #这里要和uwsgi保持一致,这个端口要打开
   }
   location /static/ {
    alias /data/wwwroot/mysite/static/; #静态资源路径,这里mysite就是你的项目名
   }
 }

注意我注释的地方,要和mysite.xml还有项目路径对应上。

每次运行项目:80,8000,8997这三个端口要打开。

3.关闭操作权限

这里不显示,但是nginx下面会报一个错误日志:/var/log/nginx/error.log

说明有操作权限的问题 需要关闭seLinux服务。

临时关闭:setenforce 0

永久关闭:

find / -name selinux

/etc/sysconfig/selinux

cat /etc/sysconfig/selinux

都关上。

关上那个错误就不显示了,也可以先不写这步,报出来再改。

4.访问项目

进入项目目录

cd /data/wwwroot/mysite/

执行下面命令:

启动uwsgi:

uwsgi --ini uwsgi.ini  

重启uwsgi

uwsgi --reload uwsgi.pid

项目代码变化了,需要重启uwsgi.

nginx的80端口,8990端口记得要开启

开启端口方法:

systemctl start firewalld.service

firewall-cmd --zone=public --add-port=80/tcp --permanent 

重启防火墙命令:systemctl restart firewalld.service

下面重启nginx

然后在浏览器里访问你的项目地址!

如果上面没有关上那个服务,访问项目就会显示这个错误日志。

img

操作权限的问题 需要关闭seLinux服务

临时关闭:
setenforce 0

永久关闭:
find / -name selinux
/etc/sysconfig/selinux
cat /etc/sysconfig/selinux

访问显示成功就可以了。

img

三、可能会出现的问题:

1.启动过程中可能会出现sqllite版本过低的问题就重新安装一个sqllite

解决方案:

  1. 不使用sqllite

找到settings中对数据库的操作注释掉即可

  1. 安装更新的sqllite

raise ImproperlyConfigured(‘SQLite 3.8.3 or later is required (found %s).’ % Database.sqlite_version) django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.7.17).

可以看看这个小伙伴写的,很详细。

https://www.cnblogs.com/hszstudypy/p/11512244.html

2.在访问nginx自带的页面的时候也可能会出现问题

注意nginx对应的端口号80,防火墙是否开启

3.通过nginx来运行django项目的时候也可能会出现的问题:

多查看错误日志:

uwsgi和nginx的错误日志位置都在文中有标注。

如果通过nginx来反向代理运行django项目的话出现500一类的错误可以查看uwsgi.log这个日志中的一些信息,一般的解决办法是把uwsgi禁用

通过ps -ef|grep uwsgi 来查看当前uwsgi的进程

img

通过kill -9 2471 2472 2473 2474

或者通过进程名字来杀死进程:

pkill -f uwsgi -9
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-12-05 12:00:09  更:2021-12-05 12:02:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 3:48:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码