阿里云搭建nginx + uWSGI 实现 django 项目
系统版本 CentOS/7 64位
1.安装使用python3
创建python3目录
sudo mkdir /usr/local/python3
进入python3目录
cd /usr/local/python3
下载python3压缩包
sudo wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tgz
解压
tar -zxvf Python-3.6.1.tgz
编译前需要多个依赖(如果不安装python安装过程会报错,pip,数据库等等缺失):
yum install openssl-devel -y
yum install zlib-devel -y
yum install sqlite-devel
yum install pcre pcre-devel
进入Python-3.6.1,指定安装路径
./configure --prefix=/usr/local/python3
编译
make
安装
sudo make install
指定软连接
sudo ln -s /usr/local/python3/bin/python3 /usr/bin/python3
sudo ln -s /usr/local/python3/bin/pip3 /usr/local/bin/pip3
2.安装和使用virtualenv
使用pip3安装virtualenv:
pip3 install virtualenv
创建虚拟环境:
python3 -m venv /home/env35/myproject
进入myproject目录:
cd /home/env35
进入虚拟环境:
source myproject/bin/activate
3.安装第三方库&&上传项目并配置(虚拟环境中)
查看当前的第三方模块 :
pip list
安装django模块:
pip install django==1.10.8
如果觉得pip版本过低,可以升级下pip:
pip install --upgrade pip
压缩win下的项目上传至linux中
rz
无法使用rzm命令,安装指南请戳:https://www.cnblogs.com/dalyday/p/10032858.html
解压项目:
unzip day17_crm.zip
如果 出现无法解压的情况,说明项目里包含多级文件夹,需要安装unzip才能解压:
yum install unzip
进入项目修改settings.py配置文件:
vim /home/env35/day17_crm/day17_crm/settings.py
ALLOWED_HOSTS = ['*',] # 允许所有端口访问 # 注释掉static路径 #STATICFILES_DIRS = ( # os.path.join(BASE_DIR,'static'), #) # 部署项目需添加下面一段,方便收集整个项目静态资源 STATIC_ROOT = os.path.join(BASE_DIR, "static/")
收集静态文件:
cd day17_crm
python manage.py collectstatic
4.安装nginx
新增yum源文件
vim /etc/yum.repos.d/nginx.repo
拷贝如下内容:
[nginx] name=nginx repo # 本人用的是centos7,系统跟版本需改成跟自己相对应的!! baseurl=http://nginx.org/packages/centos/7/$basearch/ gpgcheck=0 enabled=1
保存检查yum是否配置好:
yum list|grep nginx
nginx.x86_64 1:1.14.1-1.el7_4.ngx @nginx nginx-filesystem.noarch 1:1.12.2-2.el7 @epel nginx-debug.x86_64 1:1.8.0-1.el7.ngx nginx nginx-debuginfo.x86_64 1:1.14.1-1.el7_4.ngx nginx nginx-module-geoip.x86_64 1:1.14.1-1.el7_4.ngx nginx nginx-module-geoip-debuginfo.x86_64 1:1.14.1-1.el7_4.ngx nginx nginx-module-image-filter.x86_64 1:1.14.1-1.el7_4.ngx nginx nginx-module-image-filter-debuginfo.x86_64 1:1.14.1-1.el7_4.ngx nginx nginx-module-njs.x86_64 1:1.14.1.0.2.5-1.el7_4.ngx nginx nginx-module-njs-debuginfo.x86_64 1:1.14.1.0.2.5-1.el7_4.ngx nginx nginx-module-perl.x86_64 1:1.14.1-1.el7_4.ngx nginx nginx-module-perl-debuginfo.x86_64 1:1.14.1-1.el7_4.ngx nginx nginx-module-xslt.x86_64 1:1.14.1-1.el7_4.ngx nginx nginx-module-xslt-debuginfo.x86_64 1:1.14.1-1.el7_4.ngx nginx nginx-nr-agent.noarch 2.0.0-12.el7.ngx nginx pcp-pmda-nginx.x86_64 3.12.2-5.el7 base
安装:
sudo yum -y install nginx
查看是否安装完成:
rpm -q nginx
启动nginx:
service nginx start
# nginx一些操作指令 systemctl status nginx.service # 查看服务当前状态 systemctl restart nginx.service # 重新启动服务 systemctl stop nginx.service # 停止服务
浏览器输入公共ip即可访问nginx主页!
接下来修改Nginx配置文件与项目关联起来,将nginx目录下的配置文件拷贝到项目同级目录
cd /etc/nginx/
cp /etc/nginx/nginx.conf /home/env35/nginx.conf
修改nginx配置文件,server添加如下字段:
cd /home/env
vim nginx.conf
server { # the port your site will be served on listen 81; # the domain name it will serve for server_name esc ; # substitute your machine's IP address or FQDN charset utf-8; # max upload size client_max_body_size 75M; # adjust to taste location /static { alias /home/env35/day17_crm/static; # 指向django的static目录 } # Finally, send all non-media requests to the Django server. location / { uwsgi_pass 127.0.0.1:8000; # 填写阿里云服务器私网,这个一定要和uwsgi.ini文件的端口一致 include /home/env35/uwsgi_params; # the uwsgi_params file you installed } }
项目同级目录下创建uwsgi_params文件,直接拷贝以下内容(nginx目录下如果可以直接拷贝过来)
vim uwsgi_params
uwsgi_param QUERY_STRING $query_string; uwsgi_param REQUEST_METHOD $request_method; uwsgi_param CONTENT_TYPE $content_type; uwsgi_param CONTENT_LENGTH $content_length; uwsgi_param REQUEST_URI $request_uri; uwsgi_param PATH_INFO $document_uri; uwsgi_param DOCUMENT_ROOT $document_root; uwsgi_param SERVER_PROTOCOL $server_protocol; uwsgi_param REQUEST_SCHEME $scheme; uwsgi_param HTTPS $https if_not_empty; uwsgi_param REMOTE_ADDR $remote_addr; uwsgi_param REMOTE_PORT $remote_port; uwsgi_param SERVER_PORT $server_port; uwsgi_param SERVER_NAME $server_name;
设置nginx启动时指定这个配置文件
/usr/sbin/nginx -c /home/env35/nginx.conf
创建软连接
ln -s /home/env35/nginx.conf /etc/nginx/conf.d/
5.安装uwsgi
进入虚拟环境,安装uwsgi模块:
pip install uwsgi
在项目的同级目录下添加uwsgi的配置文件:
vim uwsgi.ini
[uwsgi] #项目目录 chdir = /home/env35/day17_crm #指定项目的application module = day17_crm.wsgi:application home = /home/env35/myproject #指定ip http= 127.0.0.1:8000 # 阿里云私有IP,与nginx.conf配置文件一致 #指定静态文件 static-map = /static=/home/env35/day17_crm/static #启用主进程 master = true #pidfile= /home/env35/uwsgi.pid #设置日志目录 #logfile= /home/env35/uwsgi.log #socket权限设置 chmod-socket = 755 #进程个数 processes =10 #自动移除unix Socket 和 Pid 文件 当服务停止的时候 vacuum = true #设置自动中断时间 harakiri = 30 #设置缓冲 post-buffering = 4096
看看当前的目录(注意红色框,都是需要新增的文件)
启动uwsgi :
uwsgi --ini uwsgi.ini
进程跑起来,则成功了
6.运行项目
做完以上,你已经成功搭建了Nginx与uwsgi了,好了,全部再来操作一次
进入myproject目录:
cd /home/env35
进入虚拟环境:
source myproject/bin/activate
启动Nginx:
service nginx start
启动uwsgi:
uwsgi --ini uwsgi.ini
浏览器输入阿里云共有IP即可访问: