centos7+nginx+uwsgi+django部署项目

Centos 下更新和安装必须的软件包:

yum groupinstall "Development tools"
yum install zlib-devel bzip2-devel pcre-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel wget gcc make -y

安装python3

  • 由于contos会默认安装python2.7,所以先将python2.7修改名称,避免与python3.*冲突
mv /usr/bin/python /usr/bin/python.bak
  • 下载python3.6.2
wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz
  • 解压
tar -xvJf Python-3.6.2.tar.xz
  • 进入解压目录,执行安装&编译命令
cd Python-3.6.2
./configure --prefix=/usr/local/python3
make && make install
  • 建立软连接
ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3
  • 由于原本centos的很多软件依赖python2.7,所以还需要进行软件依赖的修改
vi /usr/bin/yum
#把  #! /usr/bin/python 修改为#! /usr/bin/python2

vi /usr/libexec/urlgrabber-ext-down
# 把 #! /usr/bin/python 修改为 #! /usr/bin/python2
  • 最后测试安装是否成功
python -V
python2 -V

安装uwsgi

直接使用pip命令,由于刚刚安装了python3.6,会自动安装pip3,所以不用手动安装pip

  • 将原本关联到python2.7的pip修改
mv /usr/bin/pip /usr/bin/pip.bak
  • 建立新的pip3的软连接 
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip
  •  安装uwsgi,为了加快安装,这里使用了清华大学的镜像地址
pip3 install uwsgi -i https://pypi.tuna.tsinghua.edu.cn/simple/
  •  如果安装失败可能是缺少python的头文件和静态库,执行下面的命令安装,然后重复执行上面安装uwsgi的命令
yum install python-devel
  •  设置uwsgi命令的软连接
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi

安装Django

  • 这里的django版本安装的是1.11.9的版本
pip install django==1.11.9

安装nginx

  • 下载nginx
wget http://101.96.10.45/nginx.org/download/nginx-1.15.6.tar.gz
  • 解压
tar xf nginx-1.15.6.tar.gz
  • 进入解压目录,执行安装&编译命令
cd nginx-1.15.6
./configure --prefix=/usr/local/nginx \
--with-http_stub_status_module \
--with-http_gzip_static_module
make && make install
  •  配置nignx命令的软连接
ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx

配置项目settings.py文件

  • 设置或修改一下属性
DEBUG = True

ALLOWED_HOSTS = ['*']

STATIC_ROOT = os.path.join(BASE_DIR, "/var/www") # /var/www是要迁移文件的目录,这里要与待会nignx的配置一致
  •  执行命令进行静态文件迁移
python manage.py collectstatic

配置uwsgi

  • 在项目内创建socket.xml文件,与manage.py文件同级
<uwsgi>
    <socket>:8000</socket>
    <!-- 这里的端口要与nginx里的配置一致 -->
    <chdir>/root/django_app/OneBlog</chdir>
    <!-- 项目在centos中的路径,这里的项目名就是OneBlog -->
    <module>OneBlog.wsgi</module>
    <!-- 只想OneBlog中的wsgi.py文件 -->
    <processes>4</processes> 
    <!-- 进程数 -->
    <daemonize>uwsgi.log</daemonize>
    <!-- 日志 -->
</uwsgi>

配置nignx

  • 编辑nignx.conf文件
vim /usr/local/nginx/conf/nginx.conf

在http{ }中修改以下内容

server {
        listen       80;
        server_name  localhost;
        keepalive_requests 120;
        charset utf-8;

        #access_log  logs/host.access.log  main;
        access_log off;
        location /static {
                alias /var/www/; #要与之前django的setting.py中添加的static静态文件转移目录一致
        }
        location / {
                uwsgi_pass  127.0.0.1:8000; # 端口与uwsgi中设置的端口一致
                include     uwsgi_params;
        }
        
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

测试运行

  • 在项目目录下执行下面命令,然后在浏览器输入本机ip测试项目是否能运行
uwsgi -x socket.xml & nginx

在这里常用的几个命令

重启nginx     nginx -s reload

关闭uwsgi     killall -9 uwsgi

 

posted @ 2018-11-26 15:45  Wuliwawa  阅读(93)  评论(0编辑  收藏  举报