当前位置:   article > 正文

云服务器部署Django项目_centos部署django

centos部署django

1.服务器的购买

阿里云

腾讯云

系统一般选择CentOs7

注意区分公网ip与私网ip

在这里插入图片描述

2.xshell连接服务器

使用ssh root@公网ip进行连接

或者直接在xshell中建立对话框

在这里插入图片描述

在这里插入图片描述

关于端口

IP地址——> 电脑

端口——>程序

使用IP来区分电脑,使用端口来区分程序

22端口为ssh连接的端口 公网ip:22

3306 为mysql端口

6379为Redis端口

云服务的安全组可以自定义允许访问的端口号

在这里插入图片描述

3.git部署项目

在这里插入图片描述

  1. 上传项目到云服务器
  2. 云服务器从git拉取代码
安装git
	yum install git
首次配置
	cd /data/
	mkdir www
	cd /data/www/
	git clone 仓库地址
	>>> 码云账号+密码

更改代码
	cd /data/www/demo/
	git pull origin master
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

git免密登录

  • 传统基于账号密码登录较为麻烦

  • 基于SHH免密登录

    1.在主机上生成公钥和私钥存储在~/.ssh目录下 id_rsa私钥 id_rsa.pub公钥

    ssh-keygen 回车三次

    2.将公钥内容设置到gitee中

    cat ~/.ssh/id_rsa.pub获取公钥

    在这里插入图片描述

    3.git本地中配置ssh地址

    git remote add origin ssh分享地址

    在这里插入图片描述

4.环境配置

  • python 3.9.5
  • 虚拟环境(virtualenv):不同环境进行隔离
  • uwsgi: 接收用户请求(处理静态文件较差,处理python文件)
  • Nginx:将请求划分为python文件(传给uwsgi)和静态文件

在这里插入图片描述

4.1安装Python 环境

1.安装gcc

yum install gcc -y
  • 1

2.安装Python依赖

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 xz lzma xz-devel -y
yum install sqlite sqlite-devel -y
yum install gdbm gdbm-devel -y
install tk tk-devel -y
yum install mysql-devel -y
yum install python-devel -y
yum install libffi-devel -y
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

下载openssl 1.1.1

1. 依赖包
安装编译 OpenSSL 所需的包,包括 gcc、make、perl 和 zlib-devel。可以通过运行以下命令完成:
yum install -y gcc make perl zlib-devel

2. 安装包下载
下载 OpenSSL 1.1.1 的源码包,可以从 OpenSSL 官网下载(https://www.openssl.org/source/openssl-1.1.1.tar.gz)或使用以下命令下载:
wget https://www.openssl.org/source/openssl-1.1.1.tar.gz
3. 解压
解压源码包并进入解压后的目录:
tar -zxvf openssl-1.1.1.tar.gz
cd openssl-1.1.1  

4.初始化并编译、安装
运行以下命令编译 OpenSSL:
./config   --prefix=/opt/openssl-1.1.1

make
make install

5. 添加环境变量
vim /etc/profile
 export PATH=/opt/openssl-1.1.1/bin:$PATH
 export LD_LIBRARY_PATH=/opt/openssl-1.1.1/lib:$LD_LIBRARY_PATH

source /etc/profile

这会在系统中安装新的 OpenSSL 版本。可以通过运行以下命令检查 OpenSSL 版本:
openssl version

如果输出结果中的版本号为 1.1.1 或更高版本,则说明 OpenSSL 已成功升级。

6. 做软连接
如果还是原来的版本,没变成新版本,可以做软连接使其挂用新版本  
将原来的openssl,做备份
mv /usr/bin/openssl     /usr/bin/openssl_20230525bak
mv /usr/lib64/openssl   /usr/lib64/openssl_20230525bak
然后将新安装的OpenSSL做软连接到这个路径
ln  -s  /opt/openssl-1.1.1/bin/openssl   /usr/bin/openssl
ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1

7.重启机器 reboot

8.再执行以下命令检查 OpenSSL 版本:
openssl version

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46

3.下载源码 Python3.9.5

yum install wget -y
cd /data/
wget https://www.python.org/ftp/python/3.9.5/Python-3.9.5.tgz
  • 1
  • 2
  • 3

4.解压 & 编译 & 安装

tar -xvf Python-3.9.5.tgz
cd Python-3.9.5
./configure
make all
make install
  • 1
  • 2
  • 3
  • 4
  • 5

5.配置腾讯源

pip3 config set global.global,index-url http://mirrors.cloud.tencent.com/pypi/simple
  • 1

4.2配置virtualenv虚拟环境

1.安装virtualenv

pip3 install virtualenv
  • 1

2.创建虚拟环境

  • 代码:/data/www/django_project

  • 环境:/envs/nb

    cd 
    mkdir /envs
    virtualenv /envs/dj1 --python=python3.9
    
    • 1
    • 2
    • 3

3.激活虚拟环境

source /envs/dj1/bin/activate
  • 1

4.运行python文件

1.激活虚拟环境
source /envs/dj1/bin/activate
2.进入项目目录
cd /data/www/django_project
3.运行文件
python app.py
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

4.3 mysql环境

1、查看系统中是否自带安装mysql
yum list installed | grep mysql

2、删除系统自带的mysql及其依赖(防止冲突)
yum -y remove mysql-libs.x86_64

3、安装wget命令
yum install wget -y 

4、给CentOS添加rpm源,并且选择较新的源
wget -i -c https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

5、安装下载好的rpm文件
 yum install mysql80-community-release-el7-3.noarch.rpm -y


6、使用yum安装mysql
yum -y install mysql-community-server --nogpgcheck
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

启动

systemctl start mysqld.service
systemctl status mysqld.service
systemctl stop mysqld.service
systemctl enable mysqld.service

  • 1
  • 2
  • 3
  • 4
  • 5
1、获取mysql的临时密码
grep "password" /var/log/mysqld.log

2、使用临时密码登录
mysql -uroot -p
#输入密码

3、修改密码
#密码要符合mysql安全规则,否则修改不成功
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root123@@';

4、修改远程访问权限
create user 'test'@'%' identified by 'Test123@@';
grant all privileges on *.* to 'test'@'%' with grant option;
flush privileges;

5、创建表
create database test default charset utf8 collate utf8_general_ci;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

在这里插入图片描述

4.4uwsgi 环境配置

  • 安装
pip3 install uwsgi==2.0.20
  • 1

uwsgi要安装两次,先在系统里安装一次,然后进入对应的虚拟环境安装一次。

  • 建立软连接
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
  • 1

注意uwsgi与python版本的关系

在这里插入图片描述

★5.Django项目部署

基本步骤

  • 创建该项目的虚拟环境
  • 安装项目依赖,运行项目
  • 更改该项目的setting.py
  • 安装uwsgi和配置uwsgi.ini
  • 安装nginx和配置nginx.conf
  • 开启端口防火墙
  • 公网ip访问

5.1 项目运行

  • 虚拟环境dj1
1.创建
cd /envs
virtualenv /envs/dj1 --python=python3.9

2.激活虚拟环境
source /envs/dj1/bin/activate

3。安装需要的依赖
pip install django==3.2.3
pip install mysqlclient
pip install openpyxl
pip install pillow
...
...
...
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • setting.py的修改
cd /data/www/djangoProject03/djangoProject03/
vim setting.py

改变内容为:
DEBUG = True ——> DEBUG = False
ALLOWED_HOSTS = []  ——> ALLOWED_HOSTS = ['*']   表示任何IP都可以访问网站

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 项目启动
1.构建表
python3 manage.py makemigrations
python manage.py migrate

2.项目启动
python3 manage.py runserver
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在这里插入图片描述

正常运行后对uwsgi进行安装

5.2 uwsgi在虚拟环境中安装

  • 安装
pip3 install uwsgi==2.0.20
  • 1
  • 设置软连接
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
  • 1
  • 设置自动启动
cd /etc/systemd/system/
vim server_uwsgi.service
#######################################
server_uwsgi.service内容为:
[Unit]
Description=HTTP Interface Server
After=syslog.target

[Service]
KillSignal=SIGQUIT
ExecStart=/usr/bin/uwsgi --ini /path/uwsgi.ini
Restart=always
Type=notify
NotifyAccess=all
StandardError=syslog

[Install]
WantedBy=multi-user.target
################################################

将服务加入到systemd中自动启动
cd /etc/systemd/system/
systemctl enable server_uwsgi.service
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 配置文件uwsgi.ini

在项目的根目录中(manage.py所在位置) 创建uwsgi.ini文件

在这里插入图片描述

[uwsgi]
#配置和nginx连接的socket连接   端口随意要记住,与nginx一致
socket=127.0.0.1:8001
#配置项目路径,项目的所在目录
chdir=/data/www/djangoProject03/
#配置wsgi接口模块文件路径,也就是wsgi.py这个文件所在的目录名
wsgi-file=djangoProject03/wsgi.py
#配置启动的进程数
processes=4
#配置每个进程的线程数
threads=2
#配置启动管理主进程
master=True
#配置存放主进程的进程号文件
pidfile=uwsgi.pid
#配置dump日志记录
daemonize=uwsgi.log`
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 启动uwsgi

[uWSGI] getting INI configuration from uwsgi.ini 表明uwsgi运行成功

# 启动uwsgi
uwsgi  --ini  uwsgi.ini

#停止运行uwsgi,通过包含主进程编号的文件设置停止项目
uwsgi --stop uwsgi.pid

#重启uwsgi
uwsgi --reload uwsgi.pid
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

5.3Nginx配置

1.安装

1.下载安装包
cd /data
wget http://nginx.org/download/nginx-1.13.7.tar.gz
2.解压
tar -zxvf nginx-1.13.7.tar.gz
3.安装
cd nginx-1.13.7
./configure
make
make install
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

2.配置

nginx一般默认安装好的路径为/usr/local/nginx

nginx.conf一般在/usr/local/nginx/conf/

  • 替换配置文件
删除 rm nginx.conf
新建 vim nginx.conf
  • 1
  • 2
文件内容为::


events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    server {
        listen 80;
        server_name 127.0.0.1:80; #改为自己的域名,没域名修改为127.0.0.1:80
        charset utf-8;
        location / {
           include uwsgi_params;
           uwsgi_pass 127.0.0.1:8001;  #端口要和uwsgi里配置的一样
           uwsgi_param UWSGI_SCRIPT djangoProject03.wsgi;  #wsgi.py所在的目录名+.wsgi
           uwsgi_param UWSGI_CHDIR /data/www/djangoProject03/; #项目路径

        }
        location /static/ {
        alias /data/www/djangoProject03/app01/static/; #静态资源路径
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
1.判断配置文件是否有错
cd /usr/local/nginx/sbin/
./nginx -t

2.启动
./nginx -t
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 普通请求——8001端口
  • /static/ ——/data/www/django_project/static

3.启动

1.启动
cd /usr/local/nginx/sbin/
./nginx

2.重启
cd /usr/local/nginx/sbin/
./nginx -s reload

3.自启动

cd /lib/systemd/system/
vim nginx.service

    文件内容如下:
    [Unit]
    Description=nginx
    After=network.target

    [Service]
    Type=forking
    ExecStart=/usr/local/nginx/sbin/nginx
    ExecReload=/usr/local/nginx/sbin/nginx -s reload
    ExecStop=/usr/local/nginx/sbin/nginx -s quit
    PrivateTmp=true

    [Install]
    WantedBy=multi-user.target
    
cd /lib/systemd/system/
systemctl enable nginx.service
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

5.4 总结

留意:

一定要注意Uwsgi和Nginx配置文件里的项目路径和静态资源路径,填写正确了才能成功访问。不然会出现502错误。还有就是,修改Django文件和其它配置文件之后,一定要重启Uwsgi和Nginx,不然不生效。

然后在浏览器里访问服务器地址(域名),就能查看到项目。

如果想使用域名访问项目,先在域名管理后台把域名解析到服务器IP上来,之后在Nginx配置文件里绑定域名。然后在浏览器里通过绑定的域名访问项目。

关于线上部署admin后台样式没有生效的问题:

方法一:

​ 1、在settings.py尾部:

STATIC_ROOT  = os.path.join(BASE_DIR, 'static')#指定样式收集目录
#或
STATIC_ROOT = '/data/www/djangoProject03/static'  #指定样式收集目录
  • 1
  • 2
  • 3

​ 2、收集CSS样式,在终端输入:

python manage.py collectstatic
  • 1

运行这个命令之后,就会自动把后台CSS样式收集到/static/目录下。刷新页面就能恢复样式!

方法二:

​ 在Python安装目录下(如果使用虚拟环境,则在虚拟环境目录下)找到\Lib\site-packages\django\contrib\admin\templates目录,把里面的admin目录复制到指定目录即可。

注意:收集或复制前一定先在settings里配置并指定STATIC_ROOT路径,static/ 个目录可以自己定。指定的时候一定要在settings.py和nginx里指定新的路径。不然无法生效。

关于CentOS防火墙端口打开的方法:

有些服务器外网默认是无法访问的,因为防火墙不允许,所以要开启防火墙,让其可以访问需要访问的端口号。

1、运行命令:

firewall-cmd --get-active-zones
  • 1

运行完成之后,可以看到zone名称。

2、执行下面命令打开需要打开的端口,以80端口为例

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

3、重启防火墙

firewall-cmd --reload
  • 1

4、查看端口号是否开启

firewall-cmd --query-port=80/tcp
  • 1

5.6 停止端口的方法

停止方法

1.列出某端口的进程
lsof -i:8000
 
2.kill -9 PID      PID(待删除进程的pid)
  • 1
  • 2
  • 3
  • 4

uwsgi停止

#查看Uwsgi进程
ps -ef|grep uwsgi 
#用kill方法把uwsgi进程杀死,然后启动uwsgi
killall -9 uwsgi
#启动方法
uwsgi -x mysite.xml
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/508315
推荐阅读
相关标签
  

闽ICP备14008679号