利用linux系统,Django+uwsgi+nginx部署项目

python环境部署

1、安装python3的依赖包

[root@localhost Desktop]# yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make -y

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

2、python解释器安装

进入opt目录下进行下载python解释器:

wget https://www.python.org/ftp/python/3.5.3/Python-3.5.3.tar.xz
在这里插入图片描述

在opt目录下解压缩:

tar -Jxvf Python-3.5.4.tar.xz

在这里插入图片描述
编译:

./configure prefix=/usr/local/python3

提示:
(1)、./configure : 将解压的文件里面的源文件哪些需要编译,会形成编译列表进行编译,
(2)、prefix=’xxx’,将编译好的二进制文件放到指定的目录下。源代码安装默认一般放置在
usr/loacl/自己创建软件名称即可。
(3)、进入 Python3.5.4目录下执行上面命令

在这里插入图片描述
提示:如果出现错误,需要安装gcc 编译环境。
在这里插入图片描述
安装:

make && make install

提示
(1)、make : 按照编译清单中的源代码进行编译生成二进制文件,
(2)、make install: 将生成好的二进制文件安装到 /usr/local/python3中。
(3)、查看生成的目录 /usr/local/python3
(4)、注意:在当前目录下执行make && make install 命令

在这里插入图片描述
在这里插入图片描述
创建软连接(添加环境变量):

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

(1)、创建软连接到 /usr/bin/python3(名字)–>对应windows的环境变量path,查看环境变量 echo $PATH
(2)、进入到 /usr/local/python3/bin/ 对 python3 进行创建软连接
(3)、测试是否成功

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

3、安装项目所需要的包

安装python扩展包:

yum install python-devel

在这里插入图片描述

1.先从项目中导出所有的安装包
找到你的项目环境下的Scripts目录下,然后在这个目录下按住Shift键不放,单击鼠标右键,在弹出的选项中选择在此处打开命令窗口

pip freeze > package.txt

在这里插入图片描述
遇到的问题:
在这里插入图片描述
(1).电脑的环境变量 有多个(2.7版本,3.5,3.7版本)将其他版本环境变量删除。
(2). 如果只有一个环境变量 还是报错 python –m pip freeze > a.txt

2.安装项目依赖包:

pip3 install -r package.txt(所有依赖包的路径)

上一步导出安装包到package.txt,直接从windows上拖过来到CentOS系统中,我嫌太长就重命名了一下。问题不大。
在这里插入图片描述
注意

有的时候不知道是什么玩意原因,有的包下载不成功,然后后面要用到的时候会报一大堆的错,为了保险起见,一开始有的下不下来的话,就分开下,这样也知道哪个没被下下来,打开自己的那个文件,一条一条下,命令:pip3 install django==2.1.2

3.迁移项目到CentOS下
(1)收集静态(配置STATIC_ROOT )
在这里插入图片描述
(2)修改主机和app应用注册方式(ALLOWED_HOSTS=[‘*’]表示任何ip都能访问我)
在这里插入图片描述
(3)开始收集:
在这里插入图片描述
在这里插入图片描述
(4)删除项目中所有的.idel、pychae,这里pychae是前后都有两个下划线的
(5)将项目复制到CentOS系统中。
在这里插入图片描述
注意:

由于是从windows下copy过来的,所以保险起见最好在linux上查看一下shop项目下的文件全不全,我的看了一遍有丢失的情况,重新copy一下没问题了,其次就是在shop目录下启动项目,启动项目之前去看下所有文件中有没有包含__pycache__的目录,如果有再次删除掉,命令:rm -rf__pycache__,一定要每个文件都看下,最后再进去shop里面,命令:vim setting,进入setting中去查看ALLOWED_HOSTS = ["*"]有没有允许所有地址都可以访问我,因为一些说不清的原因,前面做过的,到了这里不知道怎么回事都改回去了,我也是很无奈,但还是找到问题所在。
在这里插入图片描述

(6)启动运行
①先关闭防火墙

systemctl stop firewalld 关闭防火墙
systemctl start firewalld 启动防火墙
systemctl status firewalld 查看防火墙状态
注意写第一个就行了,我是为了不用再去查找一下子都放在这了,脑子记不住那么多东西,所以还是记录下来的好。

②启动项目
命令:

python3 manage.py runserver 0.0.0.0:8000

在这里插入图片描述

(7)访问

注意在浏览器访问的时候是要访问linux系统的地址加端口号的,查看ip命令:ifconfig

在这里插入图片描述

4、安装uwsgi模块

1.下载 uwsgi 模块

pip3 install uwsgi
提示: 下载的位置在 /usr/local/python3/bin/

在这里插入图片描述

2.创建软连接

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

3.使用uwsgi 启动项目

uwsgi --http 10.10.16.229:8000 --file shop/wsgi.py --static-map=/static=static
uwsgi 模块名称 
--http 协议
10.10.16.229:8000 主机端口
--file uwsgi要使用的解析文件,一般django自己创建
--static 静态目录

提示: 进入到shop 目录下运行
uwsgi --http 10.10.55.30:8000 --file shop/wsgi.py --static-map=/static=static

在这里插入图片描述
访问
在这里插入图片描述
4.使用配置文件启动uwsgi服务
(1)创建目录和配置文件
进入到opt目录下创建scripts目录,在scripts目录下创建 uwsgi.ini 配置文件,并将桌面的shop copy一份到/opt下,

命令:cp -r /root/Desktop/shop /opt

在这里插入图片描述

(2)配置内容如下
注意:配置文件里的注释全部kill掉不要留!不要留注释!不要留注释!

[uwsgi]
chdir=/opt/shop #项目目录
module=shop.wsgi:application #指定项目的application
socket=/opt/scripts/uwsgi.sock #指定sock的文件路径
workers=5 #进程个数
pidfile=/opt/scripts/uwsgi.pid
http=10.10.55.30:8000 #指定IP端口
static-map=/static=/opt/OurBlog/static #指定静态文件
uid=root #用户
gid=root #组
master=true #启用主进程
vacuum=true #自动移除unix Socket和pid文件当服务停止的时候
enable-threads=true #启用线程
thunder-lock=true #序列化接受的内容,如果可能的话
harakiri=30 #设置自中断时间
post-buffering=4096 #设置缓冲
daemonize=/opt/scripts/uwsgi.log #设置日志目录

在这里插入图片描述
配置好之后输入命令:

uwsgi --ini uwsgi.ini
在这里插入图片描述

为了防止其他的什么原因启动着uwsgi服务,如果中间出错,可以先查看uwsgi服务 ss -tnl
然后杀死uwsgi服务 killall -9 uwsgi,再做上述工作。
访问:

在这里插入图片描述
5、配置nginx
(1)下载nginx 压缩包
在opt目录下进行下载

wget -c https://nginx.org/download/nginx-1.12.2.tar.gz
在这里插入图片描述
(2)在opt目录下解压
tar -zxvf nginx-1.12.2.tar.gz

在这里插入图片描述
(3)进入到 nginx-1.12.2 目录下编译

在这里插入图片描述
(4)安装

make && make install

提示:默认将nginx 安装到了 /usr/local/ 下
(5)创建软连接

ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
在这里插入图片描述

(6)启动nginx
在这里插入图片描述
默认端口号是80
在这里插入图片描述
(7)修改nginx 配置文件
1、找到 nginx.conf

cd /usr/local/nginx/conf/
在这里插入图片描述
2、备份配置文件(防止弄错后不能恢复)
在这里插入图片描述
3、修改配置
在这里插入图片描述

http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';    #日志的格式

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
server {
        listen       80;
        server_name  Qshop;      #服务的名称

        charset utf-8;         #编码格式

        access_log  logs/host.access.log  main;       #访问日志

        gzip_types text/plain application/x-javascript text/css text/javascript application/x-httpd-php application/json text/json image/jpeg image/gif image/png application/octet-stream;      #访问内容的类型

        error_log /var/log/nginx/error.log error;      #错误日志,默认没有,需要手动创建

        location / {
             include uwsgi_params;         #加载uwsgi_params
             uwsgi_connect_timeout 30;     连接的超时时间 不要加冒号不要加冒号不要加冒号 
             uwsgi_pass unix:/opt/scripts/uwsgi.sock;        uwsgi.sock通讯的文件地址(注意是uwsgi 中的scripts)
        }

        location = /static/{
            alias /opt/shop/static; 静态文件的目录
            index index.html index.htm;
        }

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4、创建 nginx/error.log 目录和文件
在这里插入图片描述
5、杀死nginx服务器重启
在这里插入图片描述
6、需要先启动uwsgi服务

uwsgi uwsgi – ini uwsgi.ini

7、重启nginx
在这里插入图片描述
8、访问:
在这里插入图片描述
终于完结了,一整天时间可算把部署弄完了,记录一下:2019/6/22/21:49

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值