美文网首页Python笔记程序员
Nginx+uWSGI+Django+阿里云ECS环境配置笔记

Nginx+uWSGI+Django+阿里云ECS环境配置笔记

作者: _RedFox_ | 来源:发表于2018-04-21 16:27 被阅读148次

    前言

    阿里云上注册了一个账号,可以免费使用一个月阿里云ECS服务器,于是试了一下,也踩了几个坑,做个笔记供以后查阅吧。主机镜像为debian

    1.1. 用ssh链接到主机

    首先通过阿里云的控制台查看到主机的ip地址 主机IP

    我这里的IP是 120.79.210.25,在控制台输入

    ssh root@120.79.210.25
    

    这里由于我已经连接过,重置了硬盘,所以连接失败,删除.ssh目录下的文件就可以重新连接了!执行以下命令:

    cd .ssh
    rm -rf *
    

    这里填yes


    ssh连接成功.png

    这样就成功的连接到了主机,就可以开始下面的步骤了。

    2. 安装并测试nginx

    2.1. 安装nginx
    apt-get update
    apt-get install nginx
    

    安装好了提示错误!先忽略,执行命令修改文件。

    vim /etc/nginx/sites-enabled/default
    

    将原文件中的

    listen 80 defaul_server;
    listen [::]:80 default_server;
    

    改为:

    listen 80;
    # listen [::]:80 default_server;  
    

    提示:按i进入编辑模式,编辑完后按ESC键,再输入“:”,输入wq保存并退出。后面还需要修改这个文件,可以一次改好,但是为了方便测试,就一步一步来吧。

    2.2. 启动nginx
    /etc/init.d/nginx restart
    
    修改后nginx启动成功.png

    然后在浏览器中输入IP地址(120.79.210.25)可以看到下面页面就表示nginx成功了!


    测试nginx成功.png

    3. 安装pip和python虚拟环境

    3.1. 安装pip
    apt-get install python3-pip
    
    3.2. 安装python虚拟环境并激活
    cd /var/www 
    pip3 install virtualenv  
    virtualenv -p /usr/bin/python3 venv 
    

    其中venv是虚拟环境名称,可以随便取。


    创建虚拟环境后目录结构.png

    激活虚拟环境如下:

    source /var/www/venv/bin/activate 
    
    激活虚拟环境.png

    注意图中的 (venv) root@website:/var/www,后续的操作都在虚拟环境中,如果中途退出再次连接,请再次激活。

    4. 安装Django并测试

    4.1 安装django,新建一个website的项目,项目中新建一个blog的App
    pip3 install django
    
    安装django.png

    新建一个webstie的工程

    django-admin startproject website
    
    django startproject website 后目录结构.png

    新建一个 blog app

    cd website
    python manage.py startapp blog
    
    4.2 测试Django
    cd website
    python manage.py runserver 0.0.0.0:8000
    

    在浏览器中输入 120.79.210.25:8000,再次出现错误:

    • 网页无法访问:
      解决办法:阿里云服务器控制台-本实例安全组-快速创建规则(右上角)-自定义端口:8000/8000,授权对象:0.0.0.0/0


      本地安全组.png
      添加端口.png
    • 出现下图(Invalid HTTP_HOST header: '120.79.210.25:8000'. You may need to add '120.79.210.25' to ALLOWED_HOSTS.)错误:


      allowed hosts 错误.png

      解决办法:ctrl+c停止服务器后,找到并修改settings.py文件。

    cd /var/www/website/website
    vim settings.py
    

    找到ALLOWED_HOSTS = [] 修改为 ALLOWED_HOSTS = ['*'] 保存退出。再次运行服务器,刷新浏览器可以看到django界面就成功了。再次Ctrl+C退出服务。


    django:8000 oK.png
    4.3 做点简单的测试
    4.3.1 在blog文件夹下新建static,templates文件夹。
    • 建立static文件夹,编写style.css文件
    cd /var/www/website/blog
    mkdir static
    cd static
    vim style.css
    

    style.css内容如下:

    h1{
        font-size:35px;
    }
    
    • 编写template文件夹,编写 index.html文件.
    cd /var/www/website/blog
    mkdir templates
    cd templates
    vim index.html
    
    编写index.html.png
    • 业务逻辑
    vim /var/www/website/website/urls.py
    

    添加如下代码:

    def index(request):
            return render(request, "index.html")
    
    • 路由
    vim /var/www/website/website/urls.py
    
    编写url.png
    • 注册APP
    vim /var/www/website/website/settings.py
    

    找到INSTALLED_APPS添加‘blog’。再次运行django服务器。

    cd /var/www/website
    python manage.py runserver 0.0.0.0:8000
    

    在浏览器中分别输入:120.79.210.25:8000 120.79.210.25/blog查看测试结果


    127.79.210.25:8000
    120.79.210.25/blog
    • 在来看看后台有没有问题
      Ctrl+C退出服务。
    python manage.py migrate
    
    django migrate.png

    创建管理员账户

    python manage.py createsuperuser  
    

    再次启动内置服务器,浏览器输入120.79.210.25:8000/admin 输入刚才创建的用户名密码,登录.


    admin:8000.png

    成功了Ctrl+C退出服务。
    OK!现在nginx和Django已经安装好了,需要安装uwsgi来把他们连接起来,这里掉坑了。。。。。。。

    5. 安装uwsgi

    5.1 安装
    pip3 install uwsgi
    

    测试uwsgi:

    cd /var/www/website
    uwsgi --http :8000 --module website.wsgi
    

    在浏览器中输入120.79.210.25/blog 和 120.79.210.25/admin 页面显示成功,但是没有加css载静态文件。


    admin页面.png blog的index.html页面.png
    5.2 编辑uwsgi.ini 放在www目录下
    vim /var/www/uwsgi.ini
    

    内容为:

    [uwsgi]
    socket = :8001
    processes = 4
    threads = 2
    master = true
    chdir = /var/www/website
    module = website.wsgi
    home = /var/www/venv
    vacuum = true
    

    socket 必须和后面的nginx文件中的设置一样。nchdir是项目目录,module就是和项目同名的wsgi文件,home是虚拟环境目录。

    5.3 编辑nignx文件
    vim /etc/nginx/sites-enabled/default
    

    最后是这个样子,我删掉了其中的注释

    upstream django{
        server 127.0.0.1:8001;
    }
    server{
        listen 80;
    
        charset utf-8;
        server_name 120.79.210.25;
        client_max_body_size 10M;
        
        location / {
            uwsgi_pass django;
            include /etc/nginx/uwsgi_params;
        }
    
        location /static {
            alias /var/www/website/static/;
        }
    }
    

    重新启动nginx:

     /etc/init.d/nginx restart
    

    启动uwsgi:

     cd /var/www
     uwsgi --ini uwsgi.ini
    

    在浏览器中直接输入ip地址,访问80端口,看看是不是已经联通了


    80端口.png 80端口blog.png 80端口的admin.png

    可以看到,可以通过80端口访问了,ctrl+c 结束服务。

    5.4 最后一步,搞定静态文件

    在根目录新建static文件夹,然后让Django取收集静态文件到这个文件夹。

    cd /var/www/website
    mkdir static
    

    编辑settings.py:

    vim /var/www/website/website/settings.py
    

    添加如下代码:

    STATIC_ROOT = os.path.join(BASE_DIR, 'static')
    

    保存退出,收集静态文件:

    cd /var/www/website
    python manage.py collectstatic
    

    再次启动ngnix 和 uwsgi 服务

    /etc/init.d/nginx restart
    cd /var/www
    uwsgi --ini uwsgi.ini
    
    重启nginx和uwsgi.png

    启动成功
    再次在浏览器中浏览


    admin加载静态文件成功.png

    为了明显一点,我重新修改了style.css文件,font-size加大了点,再次用命令收集一下静态文件,


    index加载成功.png

    OK 到此也就算配置通了。

    相关文章

      网友评论

        本文标题:Nginx+uWSGI+Django+阿里云ECS环境配置笔记

        本文链接:https://www.haomeiwen.com/subject/orjxlftx.html