Centos下Python2和3并存环境部署
第一部分:
python环境部署
我们今天学习的内容是如何将Django项目部署到linux服务器上,我们部署的linux系统是centos7首先,我们先在linux上搭建我们的Python3环境:
在这里首先强调一下,Centos7系统自带的Python2我们不要删除,我们要做的是在Python2和python3并存。
1、 安装Python3的依赖包
2、 命令:
[root@localhost Desktop]#
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make -y
3、 然后下载Python3的安装包
命令:wget /ftp/python/3.5.4/Python-3.5.4.tar.xz
解压安装包
命令tar -xvJf Python-3.5.4.tar.xz
切入目录,进行编译安装
[root@localhost Desktop]# cd Python-3.5.4/
[root@localhost Python-3.5.4]# ./configure prefix=/usr/local/python3
make && make install
3、配置环境变量
命令:ln -s /usr/local/python3/bin/python3 /usr/bin/python3
效果如下:
上面完成了python的安装,接下来安装python的依赖包和项目的依赖包
第二部分:
1、 python-devel
命令:yum -y install python-devel
安装Django2.1.2 pillow django-ckeditor5.4.0
pip3 install django==2.1.2
pip3 install pillow
pip3 install django-ckeditor==5.4.0
python uwsgi
上面我们已经完成了python+Django环境的部署,接下来我们需要了解python 的uwsgi框架。接下来我们需要了解python 的uwsgi模块。
Python manager.py runserver, 这是一款适合开发阶段使用的服务器,只支持最高200的并发,显然不适合在生产中使用。我们在生产环境当中,通常会用到apache或者nginx服务器作为Django的生产服务器。今天我们以nginx为例子。但是在学习部署之前,我们首先要掌握在Django和nginx之间的一个程序,就是wsgi,web服务器网关接口,英文叫, Web Server Gateway Interface 缩写叫WSGI,是Python应用程序或框架和web服务器之间的一种接口。
我们今天部署用的是uwsgi模块,首先安装
pip3 install uwsgi
然后配置环境变量
命令:ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
Django和WSGI的结合
我们把我们准备好的Django项目存放到/opt/下
[root@localhost bin]# cp -r /root/Desktop/OurBlog/ /opt/[root@localhost bin]#
然后尝试使用uwsgi启动Django项目
在这里我们要关注到之前大家一直忽视的一个文件了
这个就是我们项目的uwsgi文件
uwsgi --http 192.168.1.69:8000 --file OurBlog/wsgi.py --static-map=/static=static
当然,这里我们要配置seLinux,防火墙和Django的settings 关闭selinux命令: setenforce 0关闭防火墙命令:systemctl stop firewalld.serviceSettings配置ED_HOSTS = ["*"] 允许所有访问然后发起访问
django+nginx+uwsgi
上面我们用命令启动了uwsgi,但是体验不太好,所以我们在这里使用ini文件启动uwsgi服务器
在项目同等级目录下创建script目录
然后在当中编写uwsgi.ini文件,内容如下
[uwsgi]chdir=/opt/OurBlog #项目目录module=OurBlog.wsgi:application #指定项目的applicationsocket=/opt/script/uwsgi.sock #指定sock的文件路径workers=5 #进程个数pidfile=/opt/script/uwsgi.pidhttp=192.168.2.69: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/script/uwsgi.log #设置日志目录然后启动uwsgi服务Uwsgi --ini uwsgi.ini(脚本名称)
然后可以正常访问
安装nginx服务器
我们直接安装nginx是没有的,所以,需要我们wget
命令:wget -c /download/nginx-1.12.2.tar.gz
解压
命令:tar -zxvf nginx-1.12.2.tar.gz && cd nginx-1.12.2
自定义配置
命令:./configure \
编译安装
命令:make && make install
然后配置环境变量
命令:ln sbin/nginx /usr/bin/nginx
启动nginx查看效果
进行nginx配置,(配置nginx.conf,配置之前进行备份)
备份
然后开始配置配置节选1http {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_nopushon;#keepalive_timeout 0;keepalive_timeout 65;#gzip on;server {
配置节选2server {listen 80; #监听端口server_name OurBlog; #服务名称charset utf-8; #服务器编码access_log /var/log/nginx/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; #nginx加载uwsgi模块uwsgi_connect_timeout 30; #连键超时时间uwsgi_pass unix:/opt/script/uwsgi.sock; #nginx对应的uwsgi socket文件}location = /static/ {alias /opt/OurBlog/static; #静态文件路径index index.html index.htm; #首页}}