阿里云搭建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即可访问:

 

 

posted @ 2018-12-10 17:10  dalyday  阅读(569)  评论(0编辑  收藏  举报