美文网首页
Python Web框架 Django - 项目部署

Python Web框架 Django - 项目部署

作者: 莫名ypc | 来源:发表于2018-12-14 16:22 被阅读0次

部署

1.开发服务器和测试服务器上启动项目

python manage.py runserver 0.0.0.0:8080

2.线上服务器启动项目

Nginx + uwsgi

安装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;

# 针对ip
create user 'root'@'192.168.10.10' identified by 'password';

#全部
 create user 'root'@'%' identified by 'password';

2. 授权

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

# 给部分权限(test 数据库)

grant all privileges on test.* to 'root'@'%' identified by 'password' with grant option;

# 刷新权限表
flush privileges;

# 查看
show grants for 'root'@'localhost';

接下来就可以在远程的数据库可视化工具中直接访问该服务器中的mysql了。

# 访问数据库
mysql -u root -p

安装虚拟环境

1. 安装virtualenv

yum install python-virtualenv

2. 创建虚拟环境

virtualenv --no-site-packages -p /usr/local/python36/bin/python3 env

cd env

# 激活虚拟环境
source bin/activate

3. 安装环境需要的包

pip3 install -r re_install.txt

其中re_install.txt文件中记录的是需要安装包的名称以及对应的版本

django==1.11
pymysql
Pillow

部署

启动项目

/home/env/freshenv/bin/python3 /home/src/fresh_shop/manage.py runserver 0.0.0.0:80 

修改settings.py

ALLOWED_HOST = ['*']

测试环境中部署

1. 测试环境中部署方式

urls.py中的修改

在测试环境中一般都直接使用python manage.py runserver的方式去运行项目。其中就涉及到DEBUG=False的修改,静态目录的修改等,具体修改如下:

a) 修改settings.py配置文件中的DEBUG=False模式,修改ALLOEWD_HOST=['*']

b) 修改工程目录下的urls.py

from django.views.static import serve

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^axf/', include('axf.urls', namespace='axf')),

    # 增加以下的url路由
    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)
]

中间件的修改

如果中间件是过滤哪些地址不需要登录验证的话,可以设置如下的static和media过滤地址的参数

安装nginx和uwsgi

安装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 启动/关闭/设置开机启动/禁止开机启动

d)系统启动时启用Nginx

systemctl enable nginx

e)如果您正在运行防火墙,请运行以下命令以允许HTTP和HTTPS通信:

sudo firewall-cmd --permanent --zone=public --add-service=http 

sudo firewall-cmd --permanent --zone=public --add-service=https

sudo firewall-cmd --reload

安装uwsgi

/home/env/freshenv/bin/pip3 install uwsgi

编写nginx.conf文件和uwsgi.ini文件

nginx.conf内容:

 server {
            listen    80;
            server_name 47.106.180.185;

            access_log /home/logs/access.log;
            error_log /home/logs/error.log;

            location /static/ {
                 alias /home/src/fresh_shop/static/;
            }

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

            location / {
                include uwsgi_params;
                uwsgi_pass 127.0.0.1:8890;
            }
        }

uwsgi.ini内容:

        [uwsgi]
        master = true

        processes = 4

        chdir = /home/src/fresh_shop

        pythonpath = /home/env/freshenv/bin/python3

        module = fresh_shop.wsgi

        socket = 127.0.0.1:8890

        logto = /home/logs/uwsgi.log

修改总的nginx文件

django_centos_nginx_peizhi.png
vim /etc/nginx/nginx.conf

重启Nginx服务

systemctl restart nginx

启动uwsgi、运行项目

/home/env/freshenv/bin/uwsgi --ini /home/conf/uwsgi.ini 

查看文件 tail -f

tail -f uwsgi.log

配置uwsgi.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

项目的目录结构

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

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

env是用于存放虚拟环境

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

相关文章

网友评论

      本文标题:Python Web框架 Django - 项目部署

      本文链接:https://www.haomeiwen.com/subject/wsywhqtx.html