django部署Linux

部署是基于:centos7+nginx+uwsgi+python3+django

下面步骤都是ROOT权限执行:

一、Linux 升级 Python 至 3.x

1、更新系统软件和可能使用的依赖

yum update -y
yum -y groupinstall "Development tools"
yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel psmisc libffi-devel

2、下载Pyhton3到/usr/local 目录

Python下载页面 点击进入 选择需要的版本
我选择的版本是:python3.5.2

cd /usr/local
wget https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz

解压

tar -zxvf Python-3.5.2.tgz

进入 Python-3.5.2路径

cd Python-3.5.2/

3、编译安装到指定路径

./configure --prefix=/usr/local/python3

执行上面语句如果报错:configure: error: no acceptable C compiler found in $PATH
说明没有安装合适的编译器。这时,需要安装/升级 gcc 及其它依赖包

yum install make gcc gcc-c++ 

注意:/usr/local/python3 路径可以自己指定,自己记着就行,后边要用到。

编译python3

make

安装

make install

安装完成之后 建立软链接 添加变量 方便在终端中直接使用python3

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

Python3安装完成之后pip3也一块安装完成,不需要再单独安装
同样给pip3建立软链接

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

4、查看Python3和pip3安装情况

输入命令显示版本即正常

python3
pip3-V

在这里插入图片描述

二、安装虚拟环境virtualenv

说明:主要是方便不同版本项目管理

1、安装命令

pip3 install virtualenv

2、建立软链接

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

安装成功后在根目录下建立两个文件夹,主要用于存放env和网站文件

mkdir -p /data/env
mkdir -p /data/wwwroot

3、创建虚拟环境

切换到指定的/data/env/目录下创建
pyweb为虚拟环境名称可以修改

virtualenv --python=/usr/bin/python3 pyweb

在这里插入图片描述

4、启动虚拟环境命令

然后进入/data/env/pyweb/bin,启动虚拟环境:

source activate

或者直接启动

source /data/env/pyweb/bin/activate

在这里插入图片描述

5、退出虚拟环境命令

deactivate 

三、requirements.txt文件的生成与使用

1、生成requirements.txt文件

pip freeze > requirements.txt

2、进入虚拟环境安装依赖包

pip3 install -r requirements.txt

四、安装uwsgi和配置mysite.xml文件

把本地项目拷贝到 /data/wwwroot目录下

1、在虚拟环境中安装uwsgi

yum install libxml*

获取uwsgi
下载–解压–编译–安装
注意:解压后的目录名称可能不一样

wget http://projects.unbit.it/downloads/uwsgi-latest.tar.gz

tar zxvf uwsgi-latest.tar.gz

cd uwsgi-2.0.11.1/

python uwsgiconfig.py --build

python setup.py install

2、用XML格式的文件配置uwsgi

进入网站项目路径 /data/wwwroot/mysite/,在项目根目录下创建mysite.xml文件,输入如下内容:

<uwsgi>    
   <socket>127.0.0.1:8997</socket> <!-- 内部端口,自定义 --> 
   <chdir>/data/wwwroot/mysite/</chdir> <!-- 项目路径 -->            
   <module>mysite.wsgi</module>  <!-- mysite为wsgi.py所在目录名--> 
   <processes>4</processes> <!-- 进程数 -->     
   <daemonize>uwsgi.log</daemonize> <!-- 日志文件 -->
</uwsgi>

保存

3、启动uwsgi配置的命令

如图显示就代表启动成功

uwsgi -x mysite.xml

在这里插入图片描述

4、查看uwsgi启动情况

ps -ef|grep uwsgi

5、关掉所有的uwsgi

killall -9 uwsgi

6、Django里的settings.py设置修改:

关闭DEBUG模式。

DEBUG = False 

ALLOWED_HOSTS设置为* 表示任何IP都可以访问网站。

ALLOWED_HOSTS = ['*']

五、安装nginx和配置nginx.conf文件

1、下载nginx和安装

cd /home/
wget http://nginx.org/download/nginx-1.13.7.tar.gz

下载完成后,执行解压命令:

tar -zxvf nginx-1.13.7.tar.gz

进入解压后的nginx-1.13.7文件夹,依次执行以下命令:

./configure
make
make install

nginx一般默认安装好的路径为/usr/local/nginx
在/usr/local/nginx/conf/中先备份一下nginx.conf文件,以防意外。

cp nginx.conf nginx.conf.bak

2、配置nginx.conf

然后打开nginx.conf,把原来的内容删除,直接加入以下内容:

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

要留意备注的地方,要和UWSGI配置文件mysite.xml,还有项目路径对应上。
进入/usr/local/nginx/sbin/目录
执行./nginx -t命令先检查配置文件是否有错,没有错就执行以下命令:

3、启动nginx命令

./nginx

终端没有任何提示就证明nginx启动成功。可以使用你的服务器地址或者域名查看页面!!!

六、配置开机自动启动。

1、进入cd /etc/init.d目录

cd /etc/init.d

2、创建uwsgi启动脚本

vim uwsgi.sh

添加内容
下面三行的内容解释:
2345的级别开始,它的启动优先级为20,它的停止优先级是90。
进入虚拟环境
启动uwsgi配置文件

#!/bin/sh
#chkconfig: 2345 80 90
source /data/env/pyweb/bin/activate
uwsgi -x /data/wwwroot/mysite/mysite.xml

添加脚本执行权限

chmod a+x /etc/init.d/uwsgi.sh

3、添加开机执行uwsgi.sh脚本

chkconfig --add uwsgi.sh

4、创建nginx启动脚本

vim nginx.sh

添加内容

#!/bin/sh
#chkconfig: 2345 80 90
cd /usr/local/nginx/sbin/
./nginx

添加脚本执行权限

chmod a+x /etc/init.d/nginx.sh

5、添加开机执行nginx.sh脚本

chkconfig --add nginx.sh

6、查看已加入的开机项

chkconfig --list

7、删除开机执行脚本

chkconfig --del uwsgi.sh

七、Django多站点部署

一台服务器部署多个项目

1、进入Nginx的配置文件目录/usr/local/nginx/conf/,然后新建一个目录:

mkdir vhost

之后在vhost目录里建立两个以.conf结尾的文件(有几个项目就放几个),里面的内容如下:

server {
    listen       80;
    server_name  www.django.cn;
    charset utf-8;
    location / {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:8997;  #端口要和uwsgi里配置的一样           
        uwsgi_param UWSGI_SCRIPT mysite.wsgi;  #wsgi.py所在的目录名+.wsgi           
        uwsgi_param UWSGI_CHDIR /data/wwwroot/mysite/; #项目路径           
        }
    location /static/ {
        alias /data/wwwroot/mysite/static/; #静态资源路径       
        }
    }

项目路径、端口、静态资源与所属项目对应好。注意:项目里的uwsgi端口不能与另一个项目重复。

2、/usr/local/nginx/conf/目录下的原来默认的nginx.conf文件,先备份一下,然后把里面的代码删除,修改成如下代码:

events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    include /usr/local/nginx/conf/vhost/*.conf;#主要是这个地方,把新建的两配置文件包含进来
    server {
        listen 80 default_server;
        server_name _;
        return 404;
        }
    }

3、新建立一个虚拟环境,把新项目上传到到服务器。进入虚拟环境,在新的虚拟环境再装一次uwsgi,和安装项目所需依赖包,然后在项目根目录新建立一个uwsgi配置文件,里面的端口和配置文件名不要和其它项目相同,路径换成自己的项目路径。

4、在虚拟环境启动uwsgi,重启Nginx,就能成功访问。哪个项目不能访问,就把原来的uwsgi进行杀死,然后再进入对应虚拟环境,启动uwsgi即可。

重启nginx命令:

./nginx -s reload

或者直接执行下面命令重启nginx

/usr/local/nginx/sbin/nginx -s reload

八、关于CentOS防火墙端口相关命令:

1、查看开通的端口与服务:

firewall-cmd --list-all

2、开启http服务

firewall-cmd --permanent --add-service=http

3、开端口80举例

firewall-cmd --permanent --add-port=80/tcp

4、 移除端口80举例

firewall-cmd --permanent --remove-port=80/tcp

5、永久移除服务

firewall-cmd --permanent --remove-service=https

6、重启防火墙

firewall-cmd --reload

九、admin后台静态文件问题

直接在settings.py中设置指定的静态文件目录

STATIC_ROOT = '/www/mysite/mysite/static'  #指定样式收集目录

在执行下面的语句

python manage.py collectstatic

此文章部分内容参考链接:https://www.django.cn/article/show-4.html#buzhou

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值