zoukankan      html  css  js  c++  java
  • centos 搭建 搭建uwsgi服务

    1. 安装linux系统所需的一些软件依赖

    yum groupinstall "Development tools" 
    yum install openssl openssl-devel sqlite-devel zlib-develbzip2-devel ncurses-devel readline-devel tk-devel
    yum install pcre pcre-devel pcre-static

    2.安装python3.7


    当前版本:2.7.5

    下载:wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tar.xz
    解压:tar xJf Python-3.7.1.tar.xz
    编译:
    cd Python-3.7.1
    ./configure --prefix=/usr/local/python3.7 --enable-optimizations
    --prefix 是预期安装目录,--enable-optimizations 是优化选项(LTO,PGO 等)加上这个 flag 编译后,性能有 10% 左右的优化(如果没记错的话),但是这会明显的增加编译时间。
    安装:
    make
    make install

    此时出现错误:Fatal Python error: _PySys_BeginInit: can't initialize sys module

    上面错误解决办法:python版本降级,安装了3.6。猜测是centos版本与python3.7版本不匹配
    错误:执行 ./configure --prefix=/usr/local/python3.7 --enable-optimizations 时 configure: error: no acceptable C compiler found in $PATH
    解决。可能需要安装GCC,执行了 yum install gcc 可以继续执行了
    错误:执行 make install 时 ModuleNotFoundError: No module named '_ctypes'
    解决:执行 yum install libffi-devel -y 然后再执行 make install


    2.1 检查是否成功
    which python3:执行此方法将无法查询不到python3,因为此命令是从(/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)这几个中查找。而我是将python3.6安装在了/usr/local/python3.7中,所以此时可以用/usr/local/python3.7/bin/python3检查
    2.2 将当前python版本修改为python3

    [1] cd /usr/bin
    [2] 备份当前python:mv python python.backup 或者直接删除: rm -rf python
    [3] 将当前python软链接到python3: ln -s /usr/local/python3.7/bin/python3.7 python
    [4] 检测当前版本:python -V

    2.3 将当前pip版本修改为pip3

    [1] cd /usr/bin
    [2] 备份当前pip:mv pip pip.backup 或者直接删除: rm -rf pip
    [3] 将当前pip软链接到pip3:ln -s /usr/local/python3.7/bin/pip3.7 pip
    [4] 检测当前版本:pip -V

    PS:linux命令:【1】查看当前文件夹中python/pip所有版本:ll /usr/bin/pyth* ll /usr/bin/pip*

    3.安装Django

    pip install Django==2.1.3

    4.安装uwsgi

    pip install uwsgi
    ln -s /usr/local/python3.7/bin/uwsgi /usr/bin/uwsgi

    5.安装mysqlclient

    [1] pip install mysqlclient
    遇到错误

    解决办法:yum install mysql-devel
    此时又出现 yum 语法错误,这是因为 yum 不支持 python3 ,而上面的操作已经将默认的 python2 改为了 3 ,所以出现错误
    修改 vim /usr/bin/yum 及 /usr/libexec/urlgrabber-ext-down 第一行的 /usr/bin/python 改为 python2

    错误:

    解决:修改错误的文件python版本

    6.配置并启动uwsgi服务

    参考:https://blog.csdn.net/weixin_39198406/article/details/79277580
    [1] 在项目创建 uwsgi.ini 文件(与manage.py同级,不知是不是必须),并填写以下配置信息:

    [uwsgi]
    # Django-related settings
    # Django项目本地端口
    socket = :8000
    # 项目根目录位置
    chdir = /root/blog/
    # wsgi.py文件在项目的中的相对位置
    wsgi-file = /blog/wsgi.py
    module =blog.wsgi
    # 进程设置,无需变动
    # master
    master = true
    # maximum number of worker processes
    # 启动4个uwsgi进程
    processes = 4
    # ... with appropriate permissions - may be needed
    # chmod-socket = 664
    # clear environment on exit
    vacuum = true
    pidfile=uwsgi.pid
    daemonize=uwsgi.log


    [2] 启动 uwsgi
    uwsgi在哪个目录启动,就会在哪个目录生成uwsgi.pid和uswgi.log文件。
    启动:uwsgi --ini uwsgi.ini
    停止:uwsgi --stop uwsgi.pid
    重启:uwsgi --reload uwsgi.pid
    强制停止:killall -9 uwsgi
    这里我们启动uwsgi服务,可以通过ps -ef | grep uwsgi看到已经有四个uwsgi服务启动。

    7.配置nginx

    server {
      listen 8080;  #启动的nginx进程监听请求的端口
      server_name localhost;  #域名
      error_log /var/log/easy_sysman/error.log;   #nginx错误日志,可自行设置,但必须保证提前建立好该目录和文件
      location / {
        include /etc/nginx/uwsgi_params;  
        uwsgi_pass 127.0.0.1:9090;  #对于动态请求,转发到本机的9090端口,也就是uwsgi监听的端口
      }
      #error_page 404 /404.html;
      error_page 500 502 503 504 /50x.html;  
      location = /50x.html {
         root /usr/share/nginx/html;
      }
      location /static/ {
        alias /var/www/easy_sysman/static/;   #设定静态文件所在目录
      }
      location /media/ {  
        alias /var/www/easy_sysman/media/;    #同样自行设置,要保证目录已经建好
      }
    }
  • 相关阅读:
    hdu 2295 DLX
    hdu 4714 树形DP
    hdu 4711 动态规划
    hdu 3656 DLX
    hust 1017 DLX
    hdu 3938 并查集
    hdu 3652 打表
    poj 2152 树形DP
    洛谷P1266速度限制
    洛谷P1841重要的城市
  • 原文地址:https://www.cnblogs.com/mrma/p/10184263.html
Copyright © 2011-2022 走看看