美文网首页
ubuntu+nginx+uwsgi+

ubuntu+nginx+uwsgi+

作者: Android小人 | 来源:发表于2017-12-12 11:52 被阅读0次

    首先安装pip:

    安装pip是为了更好的安装别的环境,这个不是必须的用别的也行,安装命令如下:
    sudo apt-get install python-pip

    安装django:

    安装django的命令为:sudo pip install Django

    安装nginx:命令为:sudo pip install install nginx

    安装完成后有可能还会用到下面三个命令:
    sudo service nginx start 服务器启动命令
    sudo service nginx stop 服务器停止命令
    sudo service nginx restart 服务器重启命令

    接下来是配置nginx:

    在安装的nginx目录下找到nginx.conf文件,(我的目录是/etc/nginx/nginx.conf)用命令sudo vim /etc/nginx/nginx.conf打开配置,在http里面提添加以下配置:

    server {
        listen         8080;
        server_name   localhost;
        charset UTF-8;
        access_log      /var/log/nginx/myweb_access.log main;
        error_log       /var/log/nginx/myweb_error.log ;
    
        client_max_body_size 75M;
    
        location / {
            add_header 'Access-Control-Allow-Origin' '*';
            add_header 'Access-Control-Allow-Credentials' 'true';
            add_header 'Access-Control-Allow-Methods' 'POST';
            include uwsgi_params;
    #这个端口后面我会说到
            uwsgi_pass 127.0.0.1:8000;
            uwsgi_read_timeout 2;
        }
        location /static {
           # expires 30d;
            autoindex on;
            add_header Cache-Control private;
    #这里配置你项目的静态文件的目录
            alias /home/myweb/zhuanli/zhuanli_app/static/;
         }
     }
    #       include /etc/nginx/conf.d/*.conf;
    #       include /etc/nginx/sites-enabled/*;
    

    完成上面的配置后用服务器重启命令重启下nginx,在介绍个命令如果完成nginx的配置后想看看是不是有语法错误可以用:nginx -t来检测下。这时候去刘浏览器访问http://127.0.0.1:8088/如果出现welcome to nginx则说明nginx配置成功。

    配置和安装uwsgi

    命令如下:sudo pip install uwsgi
    下面测试uwsgi是不是可以使用,创建test.py文件(这个文件可以随意放就是你下面运行的时候路径写对就好)::

    def application(env, start_response):
        start_response('200 OK', [('Content-Type','text/html')])
        return [b"Hello World"]
    

    下面cd到你放这个test.py的目录下执行一下命令:uwsgi --http :8001 --wsgi-file test.py
    去浏览器访问:127.0.0.1:8001如果浏览器出现holle word则说明uwsgi安装完成

    配置usgi

    如果你上面的步骤都已经完成则说明你的nginx和uwsgi都已经可以单独完成现在这一步就是为了让他们协同合同,
    首先在django项目目录下创建my_uwsgi.ini文件,文件里面填写内容如下:

    # myweb_uwsgi.ini file
    [uwsgi]
    
    # Django-related settings
    #看见这个端口熟悉吗?对就是在nginx里面有一个127.0.0.1:8000,这个端口要和nginx里面的这个端口一致
    socket = :8000
    
    # the base directory (full path)
    #这个目录是你项目的全路径,写到你的project这一层就可以
    chdir           = /home/fnngj/pydj/myweb
    #这里面其实是用到了相对路径,可以理解为myweb这个app下面的wsgi.py这个文件
    # Django s wsgi file
    module          = myweb.wsgi
    
    # process-related settings
    # master
    master          = true
    
    # maximum number of worker processes
    processes       = 4
    
    # ... with appropriate permissions - may be needed
    # chmod-socket    = 664
    # clear environment on exit
    vacuum          = true
    

    然后cd到myweb(也就是project路径下)执行myweb_uwsgi.ini这个文件执行命令如下:
    uwsgi --ini myweb_uwsgi.ini
    现在nginx和uwsgi就已经连起来了。

    我遇到的问题:

    -post跨域的问题,这个很是郁闷在本地测试的好好的到服务器上就是不行,我甚至都已经把setting里面有关csrf都已经注释了还是不行。解决方法是:重启uwsgi,你可以通过命令:ps -A来查看是不是有uwsgi的进程在运行着,如果有那么就用 sudo killall uwsgi来杀死这个进程,如果杀不死就先用命令ps -fe来查看uwsgi的pid,然后再用命令:sudo kill -9 (pid的号)来进行强制杀死进程,然后cd到myweb(也就是project路径下)执行myweb_uwsgi.ini这个文件执行命令如下:
    uwsgi --ini myweb_uwsgi.ini然后就可以起来了。基本上每次更改django的代码都需要这样操作下要不新的代码是不会生效的。

    相关文章

      网友评论

          本文标题: ubuntu+nginx+uwsgi+

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