关于Linux下python3.6+virtualenv+django2.0+uwsgi+nginx 服务器环境搭建 防坑手册

(1).安装python:
1. 下载python安装包:wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz  

2. 安装可能的依赖库:yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel zlib-devel  pcre-devel  ncurses-devel  tk-devel

3.解压python安装包:tar -zxvf Python-3.6.4.tgz

进入到解压的python文件夹:cd Python-3.6.4/

安装到自己自定义指定目录,这里选择的是安装到/usr/local目录:./configure --prefix=/usr/local/

执行安装:make

然后再执行安装代码:make altinstall //此处不能用install安装,因为install不区分版本,会出现多版本混乱的问题

4.由于Linux默认是安装的python2.x的,输入python就可以看到是什么版本了,这里需要修改python环境为3.6版本

做软链接:

ln -s /usr/local/bin/python3.6 /usr/bin/python

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

5.坑1(关于yum)yum是依赖于python的,安装高版本python后,安装python3后yum就没办法直接用了,需要直接指定修改yum中python脚本的解释器才能使用:

修改/usr/bin/yum和/usr/bin/urlgrabber-ext-down两个文件的头文件,

即将第一行#!/usr/bin/python 改为 #!/usr/bin/python2

(2)安装virtualenv,创建虚拟环境,简单的说就是为每个服务器和应用创建单独的运行环境,也可以不要
1.使用pip安装,坑2:在这之前可以会有个问题 就是pip的版本问题,pip对应python2,pip3对应python3

linux 默认去 /usr/bin/下找pip3,而/usr/bin/下没有该命令,因此可以在/usr/bin 新建pip3 的链接到python3 安装目录下到 pip3.5:

执行软链接:ln -s /usr/local/bin/pip3.6 /usr/bin/pip3

然后安装virtualenv:pip install virtualenv

2.创建虚拟环境 virtualenv:virtualenv vname(自己定义名称)

建议先建一个专门的文件来管理虚拟环境

3.进入创建的虚拟文件 激活虚拟环境:

source vname /bin/activate

激活虚拟环境后,root对话框前面是跟创建的虚拟名称(vname)

这里我创建的虚拟名称是webvir

在虚拟环境中 安装django 和 uwsgi

4.退出虚拟环境

deactivate

(3)安装django:
1.在虚拟环境中安装,在上面的基础上 ,我们进入虚拟环境并且激活

安装django: pip install django  #这种方法装的是最新版的django,目前是2.0版本

2.检查是否安装成功:
import django  

print(django.get_version()) 

3.服务器的搭建,新建一个 django project:

django-admin.py startproject mysite(project-name自定义的工程名称)

进入工程文件夹创建一个app应用:

python manage.py startapp appname(自定义app名称)

以上完成后就可以运行python manage.py runserver 0.0.0.0:8000

坑3 假如是部署在阿里云或者其他服务器上的,需要本地外网访问的话  还需要配置防火墙开放相应的端口比如8000和 setting.py  中 ALLOWED_HOSTS = ['*']

(4)安装uwsgi:
1.安装uwsgi:pip install uwsgi 

安装过程中如果出现

Exception: you need a C compiler to builduWSGI

是因为服务器上没有c编译器,先安装

#yum install -y gcc gcc-c++  

2.安装完成测试是否安装正常
在你django项目下执行:
#uwsgi --http :8000 --module mysite.wsgi(django工程名称)  

mysite.wsgi指向你的项目的wsgi.py文件

可以根据的显示的日志进行调试

3.uwsgi主要用文件形式来管理配置和启动,文件的格式有很多种ini,xml等 这里我用的是ini,

创建一个ini配置文件,ini文件的名称可以自定义,一般我命名为工程名称,内容:

[uwsgi]

    chdir=/home/myvir/mysite/                / / chdir指向我的项目目录

    module=mysite.wsgi [:application]      //指定项目的wsig[可选app]

    socket=/home/myvir/sock/mysite.sock   / /指定sock的文件路径

    workers=5   //进程个数
    pidfile=/home/myvir/pid/mysite.pid   //指定存放pid目录文件
    http=:8080                                           //指定访问的IP端口  可以用来测试是否成功配置启动
    static-map=/static=/home/myvir/mysite/static  / /指定静态文件,这里指定的是django项目存放静态文件的目录static
    # 启动uwsgi的用户名和用户组
    uid=root
    gid=root
    master=true  // # 启用主进程
    vacuum=true //自动移除unix Socket和pid文件当服务停止的时候
    thunder-lock=true //#序列化接受的内容,如果可能的话
    enable-threads=true //启用线程
    harakiri=30 //设置自中断时间
    post-buffering=4096 //设置缓冲
   daemonize=/home/myvir/log/mysite.log //设置日志目录

保存为mysite.ini文件

4.通过配置文件启动:

uwsgi --ini mysite.ini   

通过上面的ini文件启动会生成3个文件

PID文件 :标识这个程序所处的状态

SOCK文件 :是用来和其他程序通信的

log 文件:记录启动和错误日志的

5.uwsgi 的简单使用:

ini方式启动:uwsgi --ini mysite.ini 

停止:uwsgi --stop /home/myvir/pid/mysite.pid    //通过pid文件来停止uwsgi

重载: uwsgi --reload mysite.ini    

(5)安装nginx
1.首先下载 nginx 
官网 http://nginx.org/en/download.html

或者 wget http://nginx.org/download/nginx-1.11.10.tar.gz  

2.解压:tar zxvf nginx-1.11.10.tar.gz 

3,进入文件 进行编译安装:

cd nginx-1.11.10/

./configure --prefix=/usr/etc/nginx    #安装地址/usr/etc/nginx 

make

make install

4.启动nginx测试安装是否成功:

/usr/etc/nginx/sbin/nginx        //默认配置是80端口在浏览器上输入127.0.0.1:80访问是否是nginx的欢迎页面

5.使用nginx.conf配置文件来监听uwsgi服务器:

打开nginx.conf配置文件,编辑或者添加一个server:

server {   
        # 这个server标识我要配置了
        # 我要监听那个端口
        listen 80;  
        
        # 你访问的路径前面的url名称
        server_name 127.0.0.1;  
        
        # Nginx日志配置
        access_log  /home/myvir/log/access.log;  
        
        # Nginx编码
        charset  utf-8; 
        
        # 启用压缩,这个的作用就是给用户一个网页,比如3M压缩后1M这样传输速度就会提高很多
        gzip on;  
        
        # 支持压缩的类型
        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_page  404           /404.html;  
        error_page   500 502 503 504  /50x.html;  


        # 指定项目路径uwsgi
        location / {  
            # 导入一个Nginx模块他是用来和uWSGI进行通讯的        
            include uwsgi_params;  
            
            # 设置连接uWSGI超时时间
            uwsgi_connect_timeout 30;  
            
            # 指定uwsgi的sock文件所有动态请求就会直接丢给他
            uwsgi_pass unix:/home/myvir/sock/mysite.sock;
        }


        # 指定静态文件路径
        location /static/ {
            alias  /home/myvir/mysite/static/;
            index  index.html index.htm;
        }


        }

 设置好以上配置后执行启动uwsgi和nginx:

uwsgi --ini mysite.ini 

/usr/etc/nginx/sbin/nginx

6.nginx 的简单使用:

启动nginx:/usr/etc/nginx/sbin/nginx

重载:/usr/etc/nginx/sbin/nginx -s reload

测试配置文件:/usr/etc/nginx/sbin/nginx –t

停止nginx方式有几种:

a,强制停止:pkill -9 nginx

b.若在nginx.conf配置了pid文件存放路径则该文件存放的就是Nginx主进程号,如果没指定则放在nginx的logs目录下。
有了pid文 件,我们就不用先查询Nginx的主进程号,而直接向Nginx发送信号了,命令如下:

kill -信号类型 '/usr/etc/nginx/logs/nginx.pid'

c.步骤1:查询nginx主进程号
ps -ef | grep nginx
在进程列表里 面找master进程,它的编号就是主进程号了。
步骤2:发送信号
从容停止Nginx:
kill -QUIT 主进程号
快速停止Nginx:
kill -TERM 主进程号

以上几种暂停方式仅供参考任君选择。


————————————————
原文链接:https://blog.csdn.net/zhuangzhiyuan/article/details/80078948

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值