ubuntu+nginx+uwsgi+

2017-12-12  本文已影响0人  Android小人

首先安装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的代码都需要这样操作下要不新的代码是不会生效的。

上一篇 下一篇

猜你喜欢

热点阅读