欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

django项目部署

程序员文章站 2022-03-04 12:48:39
...

使用centos部署django项目

4. 配置项目代码,配置项目nginx,配置uwsgi.ini等

本案例的配置文件,都习惯将每一个项目的配置文件,日志文件,虚拟环境放在一起,这样开发方便,运维也方便维护

项目的目录结构如下:

其中:

conf是配置文件,用于存放项目的nginx.conf文件,uwsgi.ini文件

logs是日志文件,用于存放nginx的启动成功和失败文件,以及uwsgi的运行日志文件

env是用于存放虚拟环境

src是项目文件,该目录下上传的是目录代码

4.1 配置nginx.conf文件

安装MariaDB

安装命令

yum -y install mariadb mariadb-server

安装完成MariaDB,首先启动MariaDB

systemctl start mariadb

设置开机启动

systemctl enable mariadb

设置密码

命令: mysql_secure_installation

Enter current password for root:<–初次运行直接回车

设置密码

Set root password? [Y/n] <– 是否设置root用户密码,输入y并回车或直接回车

New password: <– 设置root用户的密码
Re-enter new password: <– 再输入一次你设置的密码

其他配置

Remove anonymous users? [Y/n] <– 是否删除匿名用户,回车

Disallow root login remotely? [Y/n] <–是否禁止root远程登录,回车,

Remove test database and access to it? [Y/n] <– 是否删除test数据库,回车

Reload privilege tables now? [Y/n] <– 是否重新加载权限表,回车

初始化MariaDB完成,接下来测试登录

mysql -u root -p

开启远程连接

在mysql数据库中的user表中可以看到默认是只能本地连接的,所有可以添加一个新的用户,该用户可以远程访问

1. 创建用户

# 先使用数据库
use mysql;
#全部
 create user 'root'@'%' identified by 'password';---->使用这条命令

2. 授权

# 给用户最大权限
grant all privileges on *.* to 'root'@'%' identified by 'password';
# 刷新权限表
flush privileges;

接下来就可以在远程的数据库可视化工具中直接访问该服务器中的mysql了,登录连接mysql,输入远端IP和密码,并开端口号3306

安装python3.6

在centos中,系统默认只提供python2.7的版本,但是项目我们使用的python3.6的版本。所有我们自己安装python3

安装Python3的方法

首先安装依赖包

yum -y groupinstall "Development tools"

yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel

然后根据自己需求下载不同版本的Python3,我下载的是Python3.6.2

wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz

然后解压压缩包,进入该目录,安装Python3

tar -xvJf  Python-3.6.2.tar.xz
cd Python-3.6.2
./configure --prefix=/usr/local/python3
make && make install

最后创建软链接

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

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

可以在home文件里创建4个文件分别存放—>重要
cd /home
ls
mkdir logs(日志文件)conf(配置文件) env(虚拟环境)src(代码)—>在home文件下安装这个4个文件分别存放代码和虚拟环境

重启nginx

systemctl restart nginx

安装环境

1. 安装virtualenv

yum install python-virtualenv

2. 创建虚拟环境

cd env
virtualenv -->virtualenv -p /usr/local/python3/bin/python3 --no-site-packages axfenv(虚拟环境名)
cd axfen进入虚拟环境
cd bin在进入bin文件
ls--->
# **虚拟环境
source activate
执行虚拟环境下的python3,指定路径
/home/env/axfenv/bin/python3
退出虚拟环境
deactivate

3. 安装环境需要的包

进入代码文件src,从本地上传代码到srcz中
指定虚拟环境下安装包(anzhuang.txt)
/home/env/axfenv/bin/pip3 install -r anzhuang.txt
查看虚拟换线的安装包
/home/env/axfenv/bin/pip3 list
创建数据库-->在mysqls上,通过数据传输将本地表上传到服务器上
在执行:
/home/env/axfenv/bin/python3 manage.py runserver 0.0.0.080
在网页上输入119.23.26.110.80
赋值SSH渠道:执行
cd /home/src/axf4/
设置:
vim axf4/settings.py
更改加入IP,任何人都可以访问:
ALLOWED_HOSTS = ['*']
DATABASES = {
    'default': {
'ENGINE': 'django.db.backends.mysql',#修改为mysql文件
'NAME':'axf4',#新建数据库文件名
'USER':'root',# mysql用户名
'PASSWORD':'服务器密码',# mysql密码
'HOST':'119.23.26.110t',# 建立连接地址
'PORT':3306 #  建立端口连接
    }
上线时不能把 DEBUG给别人看所以要更改:
DEBUG = False
页面出现问题,js,css无法再静态加载,需要手动调节
from django.views.static import serve
设置:vim axf4/urls.py
url(r'static/(?P<path>.*)$',serve,{"document_root": settings.STATICFILES_DIRS[0]}),
 url(r'media/(?P<path>.*)$',serve,{"document_root": settings.MEDIA_ROOT}),
url(r'^$', views.home)
出现302错误,设置中间件:vim utils/AuthMiddleWare.py,配置static 和media

not_check_path = ['/users/login/','/users/register/',
                          '/home/index/','home/market/',
                          '/home/market_params/(\d+)/(\d+)/(\d+)/','/static/(.*)','/media/(.*)',]

netstat -lntp — 查看进程

2. 正式环境中部署方式

正式环境中部署为nginx+uwsgi来部署django项目

2.1 安装nginx

a)添加nginx存储库

yum install epel-release

b) 安装nginx

yum install nginx

c) 运行nginx

Nginx不会自行启动。要运行Nginx

systemctl start nginx

nginx的运行命令:

 systemctl status nginx 查看nginx的状态
 systemctl start/stop/enable/disable nginx 启动/关闭/设置开机启动/禁止开机启动

在虚拟环境下安装

/home/env/axfenv/bin/pip3 install uwsgi

在配置文件conf中

vim axfnginx.conf

每一个项目对应有一个自己定义的nginx的配置文件,比如爱鲜蜂项目,我定义为axfnginx.conf文件

server {
      listen    80;
    server_name 119.23.26.110 localhost;
    access_log /home/logs/access.log;
     error_log /home/logs/error.log;
     动态给uwsgi处理
     location / {
         include uwsgi_params;
         uwsgi_pass 127.0.0.1:8890;
     }   静态文件处理
     location /static/ {
         alias /home/src/axf4/static/;

     }   
     location /media/ {
        alias /home/src/axf4/media/;
        }

}

其次:修改总的nginx的配置文件,让总的nginx文件包含我们自定义的项目的axfnginx.conf文件

总的nginx配置文件在:/etc/nginx/nginx.conf中
include /home/conf/*.conf;

4.2 配置uwsgi文件

在conf文件夹下除了包含自定义的axfnginx.conf文件,还有我们定义的uwsgi.ini文件

vim axfuwsgi.ini

[uwsgi]
projectname = axf
base = /home/src

# 守护进程
master = true

# 进程个数
processes = 4

# 虚拟环境
pythonhome = /home/env/axfenv

# 项目地址
chdir = %(base)/%(projectname)

# 指定python版本
pythonpath = /usr/local/python3/bin/python3

# 指定uwsgi文件
module = %(projectname).wsgi

# 和nginx通信地址:端口
socket = 127.0.0.1:8890

# 日志文件地址
logto = /home/logs/uwsgi.log

运行项目:

/home/env/axfenv/bin/uwsgi --ini axfuwsgi.ini(文件名)

在nginx文件中配置

vim /etc/nginx/nginx.conf

设置包含自己的nginx文件

37 include /home/conf/*.conf;

重启nginx

systemctl restart nginx

重启uwsgi

/home/env/axfenv/bin/uwsgi --ini axfuwsgi.ini
启动日志文件

tail -f uwsgi.log

相关标签: django项目部署