centos7部署django项目

1、安装mariadb5.5.68

提示:此版本太低,已废弃,看下面安装mariadb10.5 !!!
安装服务端:

yum install mariadb-server -y

1.1 报错看这里

报错:
在这里插入图片描述
解决办法:
编辑/etc/yum.repos.d 路径下的CentOS-Base.repo

[base]
name=CentOS-$releasever - Base
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
baseurl=http://vault.centos.org/7.9.2009/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#released updates 
[updates]
name=CentOS-$releasever - Updates
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
baseurl=http://vault.centos.org/7.9.2009/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
baseurl=http://vault.centos.org/7.9.2009/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
baseurl=http://vault.centos.org/7.9.2009/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

清除yum缓存:

yum clean all
yum makecache

1.2 正常看这里

启动服务:

systemctl start mariadb

设置开机自启:

systemctl enable mariadb

设置root账号密码:

mysqladmin -u root password 123456

登录数据库:

mysql -uroot -p123456 

1.3 这里的步骤可以忽略

查看有哪些数据库:
在这里插入图片描述
查看用户:

use mysql;
select Host,User from user;

在这里插入图片描述
删除不需要用户或密码就可以直接登录的用户:

delete from user where Host='localhost.localdomain';
delete from user where Host='localhost' and User='';
delete from user where Host='::1' and User='root';

1.4 继续

开启远程访问权限:

grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
flush privileges;
exit;

关闭并禁用防火墙:

#查看防火墙状态:systemctl status firewalld 
systemctl stop firewalld
systemctl disable firewalld

在这里插入图片描述
在这里插入图片描述

2、安装mariadb10.5

2.1 卸载旧版本的mariadb(之前没安装就跳过)

systemctl stop mariadb #停止mariadb服务
rpm -qa | grep -i mariadb #查看已安装的mariadb版本:5.5.68

在这里插入图片描述
卸载旧版本:(根据上图卸载相应内容)

yum remove mariadb-server mariadb mariadb-libs mariadb-devel

2.2 添加mariadb官方仓库

django需要mariadb10.3+,此处选择10.5(长期支持版本)

vi /etc/yum.repos.d/CentOS-Base.repo

添加内容:

[mariadb]
name=MariaDB
baseurl=http://yum.mariadb.org/10.5/centos7-amd64
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB

2.3 安装mariadb10.5.26

yum clean all #清理旧缓存
yum install -y MariaDB-server MariaDB-client 

继续按1.2、1.4操作

3、安装python3.9.5

安装gcc,用于后续安装python时编译源码:

yum install gcc -y

安装python3相关依赖:

yum install zlib zlib-devel -y
yum install bzip2 bzip2-devel -y
yum install ncurses ncurses-devel -y
yum install readline readline-devel -y
yum install openssl openssl-devel -y
yum install xz lzma xz-devel -y
yum install sqlite sqlite-devel -y
yum install gdbm gdbm-devel -y
yum install tk tk-devel -y
yum install mysql-devel -y
yum install python-devel -y
yum install libffi-devel -y
cd /data/   #进到这个文件夹   没有就创建
#下载python,如果没有wget,先安装 yum install wget
#下载慢的可以直接去这下载:https://www.python.org/downloads/release/python-395/
wget https://www.python.org/ftp/python/3.9.5/Python-3.9.5.tgz

解压:

tar -xvf Python-3.9.5.tgz

进入目录并编译安装:

cd Python-3.9.5/
./configure
make all
make install

测试:

python3 --version

配置源(腾讯源):

pip3.9 config set global.index-url https://mirrors.cloud.tencent.com/pypi/simple

4、创建虚拟环境

安装虚拟环境:

pip3.9 install virtualenv

创建虚拟环境目录和环境:

mkdir /envs  
cd /envs
#gxl:虚拟环境名字
virtualenv /envs/gxl --python=python3.9  

激活虚拟环境:

source /envs/gxl/bin/activate

4.1 安装库

上传requirements.txt,内容如下:

alibabacloud-gateway-spi==0.0.2
alibabacloud-openapi-util==0.2.2
alibabacloud-tea==0.3.9
alibabacloud-tea-openapi==0.3.11
alibabacloud-tea-util==0.3.13
alibabacloud-tea-xml==0.0.2
alibabacloud-vod20170321==3.2.0
asgiref==3.8.1
async-timeout==4.0.3
attrs==24.2.0
certifi==2024.8.30
cffi==1.17.1
charset-normalizer==3.3.2
cryptography==43.0.1
Django==4.0.9
frozenlist==1.4.1
idna==3.10
multidict==6.1.0
mysqlclient==2.1.1
pycparser==2.22
pycryptodome==3.20.0
pyOpenSSL==24.2.1
requests==2.32.3
sqlparse==0.5.1
typing_extensions==4.12.2
tzdata==2024.1
urllib3==1.24.3
yarl==1.11.1
pip install -r requirements.txt

4.2 安装django项目需要的库(可跳过此处)

pip install numpy==1.20.3
pip install openpyxl==3.0.9
pip install pillow==8.4.0
pip install scipy==1.7.1
pip install pandas==1.3.4
pip install flask==1.1.2

5、上传代码到centos(用xshell或者git)

6、配置、测试运行

配置django项目的settings.py里面的数据库

DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.mysql",
        "NAME": "py01",
        "USER": 'root',
        'PASSWORD': '123456',
        'HOST': '127.0.0.1',
        'PORT': 3306,
        'OPTIONS':{
        		'init_command':"SET sql_mode='STRICT_TRANS_TABLES'",
        		'charset':'utf8mb4',
        		'use_unicode':True,
        }
    }
}

生成数据库py01的表:
提示:(此处可以不生成,直接在Navicat里运行SQL文件)

python manage.py makemigrations
python manage.py migrate

启动:

python manage.py runserver 0.0.0.0:80

在这里插入图片描述
浏览器访问:192.168.190.13(虚拟机ip)即可看到项目登录页面
若报错,则修改setting.py配置文件 :
在这里插入图片描述

# 修改ALLOWED_HOSTS = []
# 修改为本机ip,可以在客户端通过ip或域名访问
ALLOWED_HOSTS = ['192.168.190.13'] 

7、收集静态资源

setting.py配置文件 添加:

BASE_DIR = Path(__file__).resolve().parent.parent.parent
# 静态文件配置
STATIC_ROOT = BASE_DIR / 'allstatic'
python manage.py collectstatic

7.1 安装uwsgi,运行项目

source /envs/gxl/bin/activate #激活虚拟环境
pip install uwsgi

7.1.1 基于uwsgi运行项目

在/data/gh2路径下创建gh2_uwsgi.ini

[uwsgi]
socket=127.0.0.1:9000
chdir=/data/gh2/
wsgi-file=gh2/wsgi.py
processes=4
virtualenv=/envs/gxl/
/data/gh2路径下执行:
/envs/gxl/bin/uwsgi --ini gh2_uwsgi.ini 
#/envs/gxl/bin/uwsgi --ini gh2_uwsgi.ini & >/dev/null #uwsgi在后台一直运行

7.2 nginx配置、运行

使用nginx做反向代理、处理静态资源

yum install nginx -y

7.2.1 报错看这里(没有跳过)

在这里插入图片描述

#原因:nginx位于第三方的yum源里面,不在Centos官方源里面
#解决办法:
yum install epel-release
yum update
yum install nginx -y

7.2.2 继续

#修改nginx.conf配置文件: 
# 路径:/etc/nginx/nginx.conf

把之前的文件改名为nginx.conf.bak

cd /etc/nginx/ 
mv nginx.conf nginx.conf.bak

接着复制一份nginx.conf.bak文件,改名为 nginx.conf,更改的地方如下:

    upstream django{
	  server 127.0.0.1:9000; 
       }

    server {
        listen       80;
        listen       [::]:80;

        location = /static {
		    alias /data/allstatic/;
        }

        location = / {
		     uwsgi_pass django;
		     include uwsgi_params;
        }
    }

启动nginx:

systemctl start nginx #启动
#如果重启:systemctl restart nginx
# systemctl status nginx # 查看nginx是否启动
# systemctl reload nginx
systemctl enable nginx #开机自启

启动uwsgi:

cd /data/gh2
/envs/gxl/bin/uwsgi --ini gh2_uwsgi.ini

此时浏览器输入centos主机ip,可以看到登录界面

7.2.3 报错看这里(没有跳过)

8、重启uwsgi脚本

脚本1、reboot.sh:
内容如下:

echo -e "\033[34m--------------------wsgi process--------------------\033[0m"
ps -ef|grep gh2_uwsgi.ini | grep -v grep
sleep 0.5
echo -e '\n-------------------going to close--------------------'
ps -ef |grep gh2_uwsgi.ini | grep -v grep | awk '{print $2}' | xargs kill -9
sleep 0.5
echo -e '\n----------check if the kill action is correct----------'
/envs/gxl/bin/uwsgi --ini gh2_uwsgi.ini & >/dev/null
echo -e "\033[42;1m--------------------started--------------------\033[0m"
sleep 1
ps -ef |grep gh2_uwsgi.ini | grep -v grep

脚本2、stop.sh

echo -e "\033[34m--------------------wsgi process--------------------\033[0m"
ps -ef |grep gh2_uwsgi.ini | grep -v grep
sleep 0.5
echo -e '\n-------------------going to close--------------------'
ps -ef |grep gh2_uwsgi.ini | grep -v grep | awk '{print $2}' | xargs kill -9
sleep 0.5
cd /data/gh2/shell  #先创建shell文件,里面包含reboot.sh、stop.sh、gh2_uwsgi.ini
sh reboot.sh # 启动
sh stop.sh # 停止

9、域名解析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值