美文网首页
centos7 + django + nginx+uwsgi 部

centos7 + django + nginx+uwsgi 部

作者: taosiyu | 来源:发表于2018-02-08 09:33 被阅读451次

    1.概要

    由于python web的学习,在研究django框架,框架非常强大,内部已经实现了很多web搭建几乎所有的功能,点个赞

    2.部署

    网站单件完成,接着就是部署到服务器上了,本人的服务器时阿里云的服务器1cpu1G最低配,部署我的网站也是够用,顺便还能部署下我的爬虫= =嘿嘿。
    python3.6.2
    django 1.11.5
    nginx
    uwsgi

    3.开始

    安装python3.6
    1. 获取
      wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz
      tar -xzvf Python-3.6.2.tgz -C /tmp
      cd /tmp/Python-3.6.2/
    2. 把Python3.6安装到 /usr/local 目录
      ./configure --prefix=/usr/local
      make
      make altinstall
    3. 更改/usr/bin/python链接
      ln -s /usr/local/bin/python3.6 /usr/bin/python3
      这里时为了避免和原生的python3发生冲突 也可以替换原生的python映射
      替换
      mv /usr/bin/python2.7 /usr/bin/python2.7.5  # 保留默认版本python为python2.7.5
      sudo vi /usr/bin/yum
      因为 yum 使用 Python 2,因此替换为 Python 3 后可能无法正常工作,因此修改 yum 配置文件。将第一行指定的 python 版本改为 python2.7(#!/usr/bin/python 改为 #!/usr/bin/python2.7)
    安装maridb(mysql)
    1. 安装
      sudo yum install mariadb-server
    2. 启动, 重启
      sudo systemctl start mariadb
      sudo systemctl restart mariadb
    3. 设置bind-ip
      vim /etc/my.cnf
      在 [mysqld]:
      下面加一行
      bind-address = 0.0.0.0
    4. 设置外部ip可以访问
      先进入mysql才能运行下面命令:
      mysql 直接进入就行
      GRANT ALL PRIVILEGES ON . TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
      FLUSH PRIVILEGES
    5. 设置阿里云的对外端口
      在服务器后台管理中->选择实例->安全组配置->配置规则->快速创建规则->添加相应的规则接口就行
      6.安装pymysql
      我用的pymysql一个python管理mysql的包
      后面会通过pip3安装,可以在这里提前安装
    安装nginx

    sudo yum install epel-release
    sudo yum install nginx
    (sudo /usr/sbin/nginx 启动)
    (killall -9 nginx 停止)
    参考资料:https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-centos-7

    安装virtualenvwrapper

    我没有安装虚拟环境所以没有使用到,这里我只是提一下,具体可以自己搜索
    yum install python-setuptools python-devel
    pip install virtualenvwrapper

    编辑.bashrc文件
    export WORKON_HOME=$HOME/.virtualenvs
    source /usr/local/bin/virtualenvwrapper.sh

    重新加载.bashrc文件
    source ~/.bashrc
    新建虚拟环境
    mkvirtualenv mxonline
    进入虚拟环境
    workon mxonline

    安装pip包

    我们可以通过 pip freeze > requirements.txt 将本地的虚拟环境安装包相信信息导出来
    然后将requirements.txt文件上传到服务器之后运行:
    pip3 install -r requirements.txt 其中pip使用对应版本,我用的是pip3
    安装依赖包

    安装uwsgi

    pip3 install uwsgi
    我这边把安装好的uwsgi 映射到 uwsgi3
    ln -s 你的uwsgi目录 /usr/bin/uwsgi3
    可以使用which uwsgi查找

    配置nginx

    新建uc_nginx.conf

    the upstream component nginx needs to connect to
    upstream django {
    server unix:///path/to/your/mysite/mysite.sock; # for a file socket
    server 127.0.0.1:8000; # for a web port socket (we'll use this first)
    }
    configuration of the server
    server {
    the port your site will be served on
    listen 80;
    the domain name it will serve for
    server_name 你的ip地址 ; # substitute your machine's IP address or FQDN
    charset utf-8;
    max upload size
    client_max_body_size 75M; # adjust to taste
    Django media
    location /media {
    alias 你的目录/Mxonline/media; # 指向django的media目录
    }
    location /static {
    alias 你的目录/Mxonline/static; # 指向django的static目录
    }
    Finally, send all non-media requests to the Django server.
    location / {
    uwsgi_pass django;
    include uwsgi_params; # the uwsgi_params file you installed
    }
    }

    将该配置文件加入到nginx的启动配置文件中

    sudo ln -s 你的目录/Mxonline/conf/nginx/uc_nginx.conf /etc/nginx/conf.d/

    拉取所有需要的static file 到同一个目录

    在django的setting文件中,添加下面一行内容:
    STATIC_ROOT = os.path.join(BASE_DIR, "static/")
    运行命令
    python3 manage.py collectstatic
    这里可能会失败,可以是尝试指定PYTHONPATH = 你安装的地址/python3.6/site-packages:/another/path/etc 能够加载相应的模块

    运行nginx

    sudo /usr/sbin/nginx

    通过配置文件启动uwsgi

    新建uwsgi.ini 配置文件, 内容如下:

    # mysite_uwsgi.ini file
    [uwsgi]
    
    # Django-related settings
    # the base directory (full path)
    chdir           = /home/bobby/Projects/MxOnline
    # Django's wsgi file
    module          = MxOnline.wsgi
    # the virtualenv (full path)
    
    # process-related settings
    # master
    master          = true
    # maximum number of worker processes
    processes       = 10
    # the socket (use the full path to be safe
    socket          = 127.0.0.1:8000
    # ... with appropriate permissions - may be needed
    # chmod-socket    = 664
    # clear environment on exit
    vacuum          = true
    virtualenv = /home/bobby/.virtualenvs/mxonline
    
    logto = /tmp/mylog.log
    

    注:
    chdir: 表示需要操作的目录,也就是项目的目录
    module: wsgi文件的路径
    processes: 进程数
    virtualenv:虚拟环境的目录

    workon mxonline
    uwsgi -i 你的目录/Mxonline/conf/uwsgi.ini &

    访问

    http://你的ip地址/

    相关文章

      网友评论

          本文标题:centos7 + django + nginx+uwsgi 部

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