美文网首页
【Python】菜鸟进阶:Linux线上的Django + Uw

【Python】菜鸟进阶:Linux线上的Django + Uw

作者: Laki只是想做一个程序猿 | 来源:发表于2019-05-08 18:43 被阅读0次

    服务器

    阿里云服务器
    

    Mac连接ssh:FinalShell(国内强大的远程桌面)

    http://www.hostbuf.com/t/988.html
    

    欲要善其事必先利其器, 首先安装Python包管理工具【pip】

    下载文件:
    wget https://bootstrap.pypa.io/get-pip.py --no-check-certificate
    
    执行安装:
    python get-pip.py
    
    查看版本:
    pip --version
    
    有版本号即安装成功:
    pip 19.1.1 from /usr/lib/python2.7/site-packages/pip (python 2.7)
    

    Uwsgi安装失败

    原因:
    因为缺少一个python-devel包
    
    什么是python-devel?
    linux发行版通常会把类库的头文件和相关的pkg-config分拆成一个单独的xxx-dev(el)包.以下情况需要python-dev包:
    
    安装一个源外的python类库, 而这个类库内含需要编译的调用python api的c/c++文件;
    自己写的一个程序编译需要链接libpythonXX.(a|so)
    (不含使用ctypes/ffi或者裸dlsym方式直接调用libpython.so)
    其他正常使用python或者通过安装源内的python类库的不需要python-dev.
    
    解决办法:安装python-devel即可
    

    安装Web服务器网关接口【Uwsgi】

    首先先安装python-devel包:
    yum install python-devel.x86_64
    
    执行安装:
    pip install uwsgi
    
    打印版本号:
    uwsgi --version
    2.0.18
    

    安装Web应用框架【Django】

    查看当前Python所支持的Django版本:
    https://www.djangoproject.com/download/
    
    目前使用的是 python2.7.5 对应 1.11.20
    
    执行安装:
    pip install Django==1.11.20
    

    安装Nginx之前需要安装【PCRE】

    PCRE 作用是让 Nginx 支持 Rewrite 功能
    PCRE依赖于C++编译器
    执行安装:
    yum -y install gcc-c++
    
    wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
    
    tar zxvf pcre-8.35.tar.gz
    
    cd pcre-8.35
    
    ./configure
    
    make && make install
    
    yum -y install openssl openssl-devel
    

    安装高性能的HTTP和反向代理web服务器【Nginx】

    查看版本:
    http://nginx.org/download/
    
    进行下载:
    cd /usr/local/src
    wget http://nginx.org/download/nginx-1.9.9.tar.gz
    
    进行解压:
    tar xf nginx-1.9.9.tar.gz
    
    进入文件:
    cd nginx-1.9.9
    
    进行安装:
    ./configure --prefix=/usr/local/nginx \
    --with-http_stub_status_module \
    --with-http_gzip_static_module
    make && make install
    
    查看端口号【我的安装路径是/usr/local/下】:
    /usr/local/nginx/sbin/nginx -v
    nginx version: nginx/1.9.9
    

    安装公众号所需的组件

    执行安装:
    pip install wechatpy
    pip install pycryptodome
    pip install lxml
    

    方便管理,结构目录

    /home 目录结构
    ├── app  App目录
    │   ├── conf  配置文件
    │   │   └──  movie_nginx.conf Nginx配置文件
    │   ├── project  项目文件
    │   │   └──  searchMovie 项目
    │   ├── html  网页文件
    │   ├── logs  日志文件
    

    步骤一、配置Nginx的conf内容

     /home/app/conf目录下创建movie_nginx.conf文件,内容是:
     server {
             listen 80; # 监听80端口
             server_name xxx.com; # 网站域名,多个域名用空格隔开
             root /home/app/html; # 网页根目录
    
             location /wx/ {    # 监听的接口名
                proxy_pass http://127.0.0.1:8000;   #转发地址,因为项目使用8000端口
             }
    
             # nginx 日志存放位置
            access_log /home/app/logs/anqila/access.log;
            error_log  /home/app/logs/anqila/error.log;
      }    
    
     在/usr/local/nginx/conf/nginx.conf配置文件内容的http下添加:
     # 导入文件其实就是将文件的内容导入,方便Nginx目录下的conf配置文件管理
     include /home/app/conf/movie_nginx.conf;
    
    11.png

    Nginx常用指令

    新手:Nginx安装在/usr/local/下,具体根据你的安装目录在做指令
    /usr/local/nginx/sbin/nginx -t                   # 验证nginx配置文件是否正确
    /usr/local/nginx/sbin/nginx -s reload            # 重新载入配置文件
    /usr/local/nginx/sbin/nginx -s reopen            # 重启 Nginx
    /usr/local/nginx/sbin/nginx -s stop              # 停止 Nginx
    /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf      #报错:Nginx: [error] invalid PID number 可用
    
    netstat -tunlp |grep 8000    # 查看端口号
    ps -ef|grep nginx  # 查看所有执行nginx的端口号
    

    步骤二、配置Uwsgi的uwsgi.ini内容

    在项目下创建script文件夹,在创建uwsgi.ini配置文件
     /searchMovie 项目目录结构
    ├── script
    │  └──  uwsgi.ini
    ├── searchMovie
    │  └──  wsgi.py
    ├── templates
    ├── wechat
    ├── db.sqlite3
    ├── manage.py
    
    【uwsgi.ini】内容:
    # uwsig使用配置文件启动
    [uwsgi]
    # 项目目录
    chdir=/home/app/project/searchMovie/
    # wsgi文件目录
    wsgi-file = searchMovie/wsgi.py
    # 指定sock的文件路径
    socket=/home/app/project/searchMovie/script/uwsgi.sock
    # 进程个数       
    workers=5
    pidfile=/home/app/project/searchMovie/script/uwsgi.pid
    # 指定IP端口
    http=127.0.0.1:8000
    # 指定静态文件
    static-map=/static=/home/app/project/searchMovie/script/static
    # 启动uwsgi的用户名和用户组
    uid=root
    gid=root
    # 启用主进程
    master=true
    # 自动移除unix Socket和pid文件当服务停止的时候
    vacuum=true
    # 序列化接受的内容,如果可能的话
    thunder-lock=true
    # 启用线程
    enable-threads=true
    # 设置自中断时间
    harakiri=30
    # 设置缓冲
    post-buffering=4096
    # 设置日志目录
    daemonize=/home/app/project/searchMovie/script/uwsgi.log
    

    Uwsgi常用指令

    uwsgi --ini uwsgi.ini              #启动项目
    uwsgi --stop uwsgi.pid             #停止Uwsgi
    ps -ef|grep uwsgi      #查看所有执行uwsgi的端口号
    

    步骤三、Nginx映射、Redis启动、Uwsgi启动项目

    /usr/local/nginx/sbin/nginx -s reload            # 重新载入配置文件
    /home/app/project/searchMovie/script/uwsgi --ini uwsgi.ini              #启动项目
    /usr/local/redis/bin/redis-server /usr/local/redis/bin/redis.conf      #启动Redis
    

    设置bashrc快捷键

    # 进入项目Uwsgi
    alias cd-uwsgi='cd /home/app/project/searchMovie/script'
    
    # 启动Uwsgi
    alias uwsgi-ini='uwsgi --ini uwsgi.ini'
    
    # 停止Uwsgi
    alias uwsgi-stop='uwsgi --stop uwsgi.pid'
    
    # 重启Uwsgi
    alias uwsgi-reload='uwsgi --reload uwsgi.pid'
    
    # 重启Nginx
    alias nginx-reload='/usr/local/nginx/sbin/nginx -s reload'
    
    # 停止Nginx
    alias nginx-stop='/usr/local/nginx/sbin/nginx -s stop'
    
    # 无Nginx pid
    alias nginx-c='/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf'

    相关文章

      网友评论

          本文标题:【Python】菜鸟进阶:Linux线上的Django + Uw

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