Python项目(Django框架)天天生鲜在CentOS7.9搭建运行

news2024/11/24 6:40:30

CentOS安装python3

为方便管理,在CentOS桌面创建一个文件夹,将软件包下载到这里,右键--在终端打开

安装python3.9.7 :

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

(命令前的sudo如果是root用户可以去掉

解压 : 

 tar -zxvf Python-3.9.7.tgz

进入解压后的目录 :

cd Python-3.9.7

编译

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

  其中--prefix是Python的安装目录,指定把python安装到那里,同时也安装了setuptools和pip工具

 

 

安装 

make && make install

 如果提示权限不够的话切换到root用户,但是保留当前用户工作目录,再次执行命令即可

 如果编译安装失败:一般情况都是因为缺少编译环境,通常python的编译环境需要zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make。执行下命令,再次安装即可

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

安装失败 

安装成功

 进入安装目录

 cd /usr/local/python39

创建软连接

ln -s /usr/local/python39/bin/python3.9 /usr/bin/python3
ln -s /usr/local/python39/bin/pip3 /usr/bin/pip3

验证是否配置成功:

python3 --version

 出现版本号即成功

创建使用Python虚拟环境

安装虚拟环境

pip3 install virtualenv

如果出现以上信息,说明要安装OpenSSL

yum install -y openssl openssl-devel
yum clean all

再次执行命令pip3 install virtualenv,发现还是同样的问题。

查阅资料发现,在./configure过程中,如果没有加上–with-ssl参数时,默认安装的软件涉及到ssl的功能不可用,刚好pip3过程需要ssl模块,而由于没有指定,所以该功能不可用。

解决办法是重新进入python3.9目录进行编译安装,然后再执行命令pip3 install virtualenv,用一下过程来实现编译安装:

cd Python-3.9.7
./configure --with-ssl --prefix=/usr/local/python39

make && make install

安装成功

安装虚拟环境扩展包

pip3 install virtualenvwrapper

创建一个文件夹,用于存放所有的虚拟环境 (这里存放在/home/Ruyanjun/桌面/天天生鲜/virtualenvs)

mkdir -p virtualenvs

 编辑~/.bashrc文件

vim ~/.bashrc

添加下面两行

export WORKON_HOME=/home/python/virtualenvs
source /usr/local/python39/bin/virtualenvwrapper.sh

 使用

source ~/.bashrc

命令使其生效

提示/usr/bin/python: No module named virtualenvwrapper,是因为安装了2.x和3.x两个版本的python,在安装时使用的是sudo pip3 install virtualenvwrapper
在我运行的时候默认使用的是python2.x,但在python2.x中不存在对应的模块,只需要在bashrc文件里面加入如下命令即可,再次执行上述命令
 

VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3

出现以下即执行成功

 

 创建虚拟环境

mkvirtualenv -p python3 fresh_everyday

fresh_everyday:虚拟环境名 -p:指定python版本

报错:

原因分析:virtualenv依赖包被安装在默认Python目录下
解决方法:做一个软连接

ln -s /usr/local/python39/bin/virtualenv /usr/bin/virtualenv

重新创建即可 

 进入虚拟环境工作

workon fresh_everyday

退出虚拟环境(先不用退出, 接下来的操作都在虚拟环境中进行

deactivate

安装项目需要的依赖包

安装Django 

pip install django

安装pymysql

pip install pymysql

安装django-tinymce 富文本编辑器

pip install django-tinymce

安装itsdangerous 加密模块

pip install itsdangerous

安装celery 异步任务

pip install -U Celery

安装redis

pip install redis

安装django-redis

pip install django-redis

安装alipay-sdk-python

pip install alipay-sdk-python

安装django-haystack和whoosh 全文检索

pip install django-haystack
pip install whoosh

安装django-haystack失败,提示ModuleNotFoundError: No module named ‘_ctypes’,

解决方法:

1退出虚拟环境安装外部函数库(libffi)

yum install libffi-devel -y

然后回到python的安装过程,重新安装python即可

我的步骤:

cd ..
yum install libffi-devel -y
cd Python-3.9.7
make && make install
workon fresh_everyday
pip install django-haystack

 Successfully即是成功

安装py3Fdfs 分布式文件系统

pip install py3Fdfs==2.1.0

 安装jieba 结巴分词

pip install jieba

安装Pillow ImageField依赖

python -m pip install Pillow

(安装的时候可能会超时,多试几次或者换源)

mysql的安装

安装mysql 5.7

wget 命令需先安装

wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

安装MySQL源

yum -y localinstall mysql57-community-release-el7-11.noarch.rpm

安装mysql

yum -y install mysql-community-server

安装过程可能存在问题:

 

方法:

rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

 再执行安装命令即可

启动mysql 服务

systemctl start mysqld

登录mysql修改密码

此时MySQL已经开始正常运行,不过要想进入MySQL还得先找出此时root用户的密码,通过如下命令可以在日志文件中找出密码:

grep "password" /var/log/mysqld.log

找到root@localhost:后面的密码,copy下来

登录mysql

mysql -u root -p

粘贴复制的密码

设置密码策略

SET GLOBAL validate_password_policy=LOW;

修改密码

ALTER USER 'root'@'localhost' IDENTIFIED BY '这里输入你的密码';

设置远程访问

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '输入你的密码' WITH GRANT OPTION;

刷新权限 

FLUSH PRIVILEGES; 

项目部署

在/root目录中创建文件夹fresh-everyday,将https://github.com/lang1427/py_fresh-everyday/tree/main/app中的所有文件放入该fresh-everyday文件中

可以现将项目克隆到本地,再用Xftp软件将这些文件传到CentOS中

找到安装目录下的haystack目录

pip show django-haystack

 进入/home/python/virtualenvs/fresh_everyday/lib/python3.9/site-packages/haystack/backends

 在该目录下创建ChineseAnalyzer.py文件

touch ChineseAnalyzer.py

 然后vi编辑,完成之后wq!保存

文件内容如下:

import jieba 
from whoosh.analysis import Tokenizer, Token

class ChineseTokenizer(Tokenizer):
    def __call__(self, value, positions=False, chars=False,
                keeporiginal=False, removestops=True,
                start_pos=0, start_char=0, mode='', **kwargs):
        t = Token(positions, chars, removestops=removestops, mode=mode, **kwargs)
        seglist = jieba.cut(value, cut_all=True)
        for w in seglist:
            t.original = t.text = w
            t.boost = 1.0
            if positions:
                t.pos = start_pos + value.find(w)
            if chars:
                t.startchar = start_char + value.find(w)
                t.endchar = start_char + value.find(w) + len(w)
            yield t

def ChineseAnalyzer():
    return ChineseTokenizer()

复制 whoosh_backend.py 文件,改为 whoosh_cn_backend.py 

 cp  whoosh_backend.py whoosh_cn_backend.py

打开复制出来的新文件,引入中文分析类,内部采用jieba分词 

from .ChineseAnalyzer import ChineseAnalyzer

打开复制出来的新文件,查找 analyzer=field_class.analyzer or StemmingAnalyzer() 改为 analyzer=field_class.analyzer or ChineseAnalyzer()

 创建数据库

进入数据库执行

CREATE DATABASE fresh_everyday DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_bin

修改项目文件中数据库链接的指向 settings.py 对应自己的主机、端口、用户名、密码

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'fresh_everyday',
        'HOST':'',
        'PORT':'',
        'USER':'',
        'PASSWORD':'',
        'OPTIONS': {
            "init_command": "SET foreign_key_checks = 0;" # 关闭外键约束
        }
    }
}

删除项目目录各个应用程序中migrations目录xxxx_initial.py文件,比如 /root/fresh-everyday/goods/migrations/0001_initial.py

删除之后进入/root/fresh-everyday执行迁移

python manage.py makemigrations
python manage.py migrate

 导入数据:将https://github.com/lang1427/py_fresh-everyday/dailyfresh.sql文件传递到服务器上/root/fresh-everyday目录中,连接到数据库后,选择fresh_everyday数据库(use fresh_everyday),通过source dailyfresh.sql;命令导入数据

配置自己的邮箱规则 settings.py

    # 邮箱配置
    EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
    EMAIL_HOST = 'smtp.qq.com'
    EMAIL_PORT = 587
    EMAIL_HOST_USER = '' # 发送者邮箱
    EMAIL_HOST_PASSWORD = '' # 授权码

可以去网易邮箱设置SMTP服务或者其他邮箱

端口号可以百度,网易的为25

 uwsgi + nginx 搭建服务

nginx的安装可参考:安装Nginx

uwsgi安装(本人安装在/root目录下)

pip3 install uwsgi

uwsgi的配置

  • 项目部署时,需要设置 settings.py 文件夹下的DEBUG=False,ALLOWED_HOSTS=['*']

 uwsgi.ini 配置文件(在/root/fresh-everyday目录下)

[uwsgi]
#使用nginx连接时使用
socket=127.0.0.1:8001  # 配置nginx时使用
#直接做web服务器使用 python manage.py runserver ip:port
#http=127.0.0.1:8000  # 单独uwsgi时使用
#项目目录
chdir=/root/fresh-everyday   # 修改点
#项目中wsgi.py文件的目录,相对于项目目录
wsgi-file=/root/fresh-everyday/app/wsgi.py  # 修改点
#指定启动的工作进程数
processes=4
#指定工作进程中的线程数
threads=2
master=True
#保存启动之后主进程的pid
pidfile=uwsgi.pid
#设置uwsgi后台运行,uwsgi.log保存日志信息
daemonize=uwsgi.log
#设置虚拟环境的路径
virtualenv=/home/python/virtualenvs/fresh_everyday  # 修改点

找到uwsgi执行位置,建立软链接

find / -name uwsgi

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

uwsgi的启动和停止 (此命令在/root/fresh-everyday目录下执行)

启动:uwsgi --ini 配置文件路径

uwsgi --ini uwsgi.ini

 停止:

uwsgi --stop uwsgi.pid

使用nginx,需要将uwsgi.ini配置文件中的http形式变成socket形式,重启uwsgi

配置收集静态文件

        settings.py中设置:STATIC_ROOT='收集的静态文件路径'

例如:STATIC_ROOT='/var/www/fresh_everyday/static'手动添加
        django收集静态文件的命令:python3 manage.py collectstatic 执行该命令,会把项目中所使用的静态文件收集到STATIC_ROOT指定的目录下

 修改添加nginx的配置文件(在目录/root/fresh-everyday下)

vim nginx.conf
# django 天天生鲜部署 添加server
server {
    listen  8000;
    server_name localhost;

    location / {
        # 包含uwsig请求的参数
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:8001; # 搭配uwsgi的socket值
    }

    location /static {
        # 指定静态文件存放的目录
        alias /var/www/fresh-every/static/;
    }
}

重启nginx(在目录/usr/local/nginx/sbin下)

 ./nginx -s reload 

 云服务器开放nginx server中的端口 即8000;就可以通过服务器ip:8000 访问该项目了

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/169721.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度学习目标检测基础_sigmoid和softmax函数

文章目录sigmoid和softmaxsigmoid函数softmax函数总结sigmoid和softmax sigmoid和softmax都是分类函数,他们的区别如下 sigmoid函数 Sigmoid 多标签分类问题多个正确答案非独占输出(例如胸部X光检查、住院)。构建分类器,解决有…

威纶通触摸屏配方功能的使用方法示例

威纶通触摸屏配方功能的使用方法示例 本次和大家分享通过触摸屏内部指针+偏移地址+控制元件实现配方功能的具体方法, 另外以前给大家分享过利用宏指令实现配方功能的方法,具体可参考以下链接中的内容: 威纶通触摸屏的配方功能具体使用方法介绍(宏指令写入PLC) 如下图所示…

Dubbo 服务引用

Dubbo 服务引用 0. 概述 Dubbo 服务引用的时机有两个,第一个是在 Spring 容器调用 ReferenceBean 的 afterPropertiesSet 方法时引用服务,第二个是在 ReferenceBean 对应的服务被注入到其他类中时引用。这两个引用服务的时机区别在于,第一个…

锅圈的新消费“第三条路”走得通吗?

文|螳螂观察 作者|kinki 临近春节,线下餐饮行业在经历了三年的寒冬之后,相信会在今年迎来一个“暖春”。不过,年夜饭一直存在“一桌难求”的现象,结合疫情因素,相信今年仍有不少消费会选择在家用餐。 因此&#xff…

生成随机用户名的测试数据

大家好,才是真的好。 记得我们以前讲过一篇《自动批量生成Notes应用测试数据!》,利用Java自动生成大批量的测试数据,今天我们介绍使用LotusScript代码来实现自动生成随机数据,主要是随机的用户名。 我们的方法很简单…

〖百宝书-思维锻炼②〗——知识是人类的供需和营养品

大家好,我是涵子,今天我们来聊聊知识。 💬 人生格言:Stay foolish, stay kind.💬 📫 如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀 &#x…

Feed 流系统

差不多十年前,随着功能机的淘汰和智能机的普及,互联网开始进入移动互联网时代,最具代表性的产品就是微博、微信,以及后来的今日头条、快手等。这些移动互联网时代的新产品在过去几年间借着智能手机的风高速成长。 这些产品都是Fee…

VueJs中的shallowRef与shallowReactive的使用比较

01shallowRef()函数如果传入基本数据类型,那么shallowRef与ref的作用基本没有什么区别,也就是浅层的ref的内部值将会原样的存储和暴露,并不会被深层递归地转为响应式但如果是对象的话,那么就存在区别了的,shallowRef不处理对象类型的数据其实,它就是只处理基本数据类型的响应式…

从 JMM 透析 volatile 与 synchronized 原理

在面试、并发编程、一些开源框架中总是会遇到 volatile 与 synchronized 。synchronized 如何保证并发安全?volatile 语义的内存可见性指的是什么?这其中又跟 JMM 有什么关系,在并发编程中 JMM 的作用是什么,为什么需要 JMM&#…

信用评分分卡简介introduction of credit score card

背景 随着金融科技初创企业的兴起,过去 5 年中出现了许多新的消费信贷机构,与传统银行展开竞争。他们通常瞄准银行认为规模太小或因金融危机期间发生的后期损失而不得不削减贷款的细分市场。通俗的讲就是消费金融公司瞄准了银行的次贷市场。 这些新的消…

修改Pom文件需要注意的问题

1.从远程nuxaus拉不回来个别包该如何解决 进入仓库目录下,把该包的目录删除了,重新拉 rm -r 包目录 如果还是不行,可能是idea内存不够,尝试关闭暂时不用但是已经打开的项目,减少内存使用,删除包目录重试…

肌电信号采集电路分析

最近在开发肌电信号的采集,表面肌电信号是非常微弱的生物信号,正常人体表面肌电信号赋值为0--1.5mV,主要能量频段集中在10--150Hz。电路主要是根据原始信号,设计相应的放大电路、滤波电路,下面直接放原理图说明。一级放…

生物素点击试剂1255942-07-4,DBCO-PEG4-Biotin,生物素-PEG4-二苯基环辛炔

中英文别名:CAS号:1255942-07-4| 英文名:DBCO-PEG4-Biotin |中文名:二苯基环辛炔-PEG4-生物素,二苯基环辛炔-四聚乙 二醇-生物素物理参数:CASNumber:1255942-07-4Molecular formula:…

2023的网安玩家,会和布洛芬退烧一样“凉”得快吗?

2021年,《数据安全法》《网络安全产业高质量发展三年行动计划》《个人信息保护法》《网络产品安全漏洞管理规定》等政策法规扎堆发布,二级市场网安公司市值一度起飞,网络安全行业如日中天,业内大佬纷纷感慨总算熬出了头&#xff0…

python-MySQL数据库基础(一)数据库基础知识、MYSQL的介绍和安装、数据类型

数据库介绍 数据库(database)简称DB,实际上是一个文件集合,是一个存储数据的仓库,本质上是一个文件系统,数据库是按照特定的格式把数据存储起来,用户可以对存储的数据进行增删改查等操作,音乐,…

读书笔记:手写数字识别 ← 斋藤康毅

求解机器学习问题的步骤可以分为“学习”和“推理”两个阶段。本例假设“学习”阶段已经完成,并将学习到的权重和偏置参数保存在pickle文件sample_weight.pkl中。至于是如何学习的,斋藤康毅指出会在后续章节详述。之后,使用学习到的权重和偏置…

Allegro如何利用Create Bound Shape自动画铜皮操作指导

Allegro如何利用Create Bound Shape自动画铜皮操作指导 在做PCB设计的时候,画铜皮操作是时常需要用到的操作,对于非常规角度画铜皮是个比较麻烦的事情,在Allegro升级到了172版本的时候,有个Create Bound Shape命令,画异形铜皮十分快捷,如下图 贴着过孔的边缘画弧形的铜皮…

【进击的算法】基础算法——回溯算法

🍿本节主题:回溯算法 🎈更多算法:深入聊聊KMP算法 💕我的主页:蓝色学者的个人主页 文章目录一、前言二、概念三、例题1.题目:全排列2.解题思路回溯算法的本质问题1:问题2&#xff1a…

linux 解压命令------超详细

目录 一、前期准备: 二、安装finalShell并与虚拟机进行连接 三、上传数据到虚拟机 四、解压命令练习 1. 解压zip包 unzip apache-maven-3.6.3-bin.zip 2. 解压tar.gz包 tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz 一、前期准备: 1.final…

Redis命令及其数据类型详解

前面的文章我们讲解过关于Redis的安装: 手把手教你Linux下安装部署Redis,今天我们具体的讲一下Redis的命令及其5种数据类型 Redis命令 Redis命令用于在redis服务上来执行某些特定操作。 这里我们以Linux下的操作为例: 进入到我们Redis的bin目录下&am…