部署django项目的总结Nginx+uwsgi+django

Python环境的搭建

安装python3

配置好Python库环境

yum install gcc patch libffi-devel python-devel  zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel -y

 

下载安装包解压

cd #回到用户目录
wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz
tar -xvJf  Python-3.7.0.tar.xz

 

编译安装

mkdir /usr/local/python3 #创建编译安装目录
cd Python-3.7.0
./configure --prefix=/usr/local/python3
make && make install

 

创建软连接

ln -s /usr/local/python3/bin/python3 /usr/local/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/local/bin/pip3
 
执行完上述步骤就可以试试是否成功了
python3 -V
pip3 -V

 

创建干净的虚拟python环境


#安装virtualenv
pip3 install virtualenv

#创建目录
mkdir Myproject
cd Myproject

#创建独立运行环境-命名
virtualenv --no-site-packages --python=python3  venv#得到独立第三方包的环境,并且指定解释器是python3

#进入虚拟环境
source venv/bin/activate#此时进入虚拟环境(venv)Myproject

#安装第三方包
(venv)Myproject: pip3 install django==1.9.8
#此时pip的包都会安装到venv环境下,venv是针对自己要部署的项目创建的

#退出venv环境
deactivate命令

#附上批量导出和安装依赖包的命令
pip freeze > pkg.txt
#将当前生产环境下 Python 的模块收集起来存放到 pkg.txt 文件里
pip install -r pkg.txt
#在生产环境下的需要模块全部安装

nginx & uwsgi

安装配置uwsgi

python3 -m pip install uwsgi

uwsgi --version查看uwsgi的版本

在项目文件里创建uwsgi.ini文件,编辑文件设置uwsgi的属性

#添加配置选择
[uwsgi]
#http=:18123 #这个是不使用nginx时候的配置

#配置和nginx连接的socket连接
socket=0.0.0.0:8002

#配置项目路径,项目的所在目录
chdir=/var/www/html/CLPAproject/CLPA_project

#配置wsgi接口模块文件路径
wsgi-file=CLPA_project/wsgi.py

#配置启动的进程数
processes=4

#配置每个进程的线程数
threads=2

#配置启动管理主进程
master=True

# ... with appropriate permissions - may be needed
# chmod-socket    = 664
# clear environment on exit
vacuum          = true

#配置存放主进程的进程号文件
pidfile=/var/www/html/CLPAproject/Logs/uwsgi.pid

#配置dump日志记录
daemonize=/var/www/html/CLPAproject/Logs/uwsgi.log

#配置启动django项目的虚拟环境的地址
virtualenv=/var/www/html/CLPAproject/CLPAenv

 

启动uwsgi

cd #uwsgi.ini文件所在路径
uwsgi  --ini  uwsgi.ini

显示 [uWSGI] getting INI configuration from uwsgi.ini 表明uwsgi运行成功。

通过 ps -ef|grep uwsgi 查看确认是否uwsgi启动。

停止运行uwsgi,通过包含主进程编号的文件设置停止项目uwsgi --stop uwsgi.pid

重启uwsgi uwsgi --reload uwsgi.pid

安装nginx

官网下载.tar.gz安装包,地址:https://nginx.org/en/download.html


# nginx的安装目前我并没有实际操作,具体操作问题遇到实际问题时 再补充,安装nginx之前先安装依赖

wget -c https://nginx.org/download/nginx-1.17.3.tar.gz

# 解压
tar -zxvf nginx-1.17.3.tar.gz
cd nginx-1.17.3
./configure
make
make install

# 查找安装路径
whereis nginx

cd 到安装目录
# 启动,停止,重启
./nginx
./nginx -s stop #此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程。
./nginx -s quit #:此方式停止步骤是待nginx进程处理任务完毕进行停止。
./nginx -s reload

#查询nginx进程
ps -aux|grep nginx

# 设置开机自启动
vi /etc/rc.local
/usr/sbin/nginx

 

修改nginx的配置文件
配置文件上边还有一些内容没有放这,我也并没有配置,现在配置的这些内容需要放在http对应的大括号内
#nginx反向代理uwsgi
server {
    # 对应的django的uwsgi使用的端口
    listen  18123;

    # 服务器的ip
    server_name  xxx.xxx.xxx.xxx;

    # 配置字符类型
    charset utf-8;
    client_max_body_size 100M;

    access_log /tmp/bonker.log;

    location / {
       #nginx自带ngx_http_uwsgi_module模块,起到nginx和uwsgi交互作用
        #通过uwsgi_pass设置服务器地址和协议,讲动态请求转发给uwsgi处理
        # uwsgi_params这个文件一般和nginx.conf在同一级
        include  /etc/nginx/uwsgi_params;
        uwsgi_pass 0.0.0.0:18120;
    }

/***************下面的配置目前没有使用*****************/
  #nginx处理静态页面资源
  location /static{
      alias /var/www/html/CLPAproject/static;
    }

  #nginx处理媒体资源
   location /media{
       alias /var/www/html/CLPAproject/media;
    }

    #error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}
修改完配置文件之后重启nginx
目前我是用的nginx启动命令是
sudo /usr/sbin/nginx -c /etc/nginx/nginx.conf
posted @ 2019-08-22 19:47  王胖儿  阅读(453)  评论(0编辑  收藏  举报