部署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