用 nginx + uwsgi + django 搭建web网站过程总结

1、设置云服务器

  • 在安全组设置开放80端口

2 安装django

2.1安装pip

sudo apt install python-pip -y

2.2 安装django

sudo pip install django ==1.9

3.修改django项目应用设置

3.1.目录结构修改:创建静态目录static地址

  • 在setting.py文件中下面的设置:
STATIC_URL = '/static/' # 添加app的静态文件地址,绝对地址和相对地址都可以

STATICFILES_DIRS = [     "/home/ubuntu/(django应用名称)/(django项目名)/static" ] # 统一的静态文件地址 

STATIC_ROOT = os.path.join(BASE_DIR, "static/")
  • 配置好后,我们Xshell命令行中的/home/ubuntu/(django应用名称)目录下执行以下语句完成整合:
python manage.py collectstatic

3.2 公网访问配置

  • 在setting.py中修改输入:
DEBUG = False  

ALLOWED_HOSTS = ['*']

3.3 测试修改

  • 在Xshell命令行中的/home/ubuntu/(django应用名称)目录下输入:
python manage.py runserver 0.0.0.0:8888
  • 成功运行后在浏览器中输入:http://IP:8888 进行测试,可以进行正常功能即可进行下一步。测试后按ctrl+c关闭测试进程。

4.部署uwsgi

4.1 安装uwsgi

sudo pip install uwsgi

4.2 创建uwsgi配置文件

  • 在(django应用)文件夹下,与manage.py同级的目录下创建.ini格式的配置文件,例如:Test_uwsgi.ini
sudo touch Test_uwsgi.ini

4.3 编辑uwsgi配置文件

#Test_uwsgi.ini file
[uwsgi]
# uwsgi监听的socket,一会儿配置Nginx会用到
socket = 127.0.0.1:8000
# 在app加载前切换到该目录,设置为Django项目根目录
chdir           = /home/ubuntu/(django应用名称)
# 加载指定的python WSGI模块,设置为Django项目的wsgi文件
module          = (django应用名称).wsgi
# 启动一个master进程来管理其他进程
master          = true
# 工作的进程数
processes       = 4
# 每个进程下的线程数量
threads = 2
# 当服务器退出的时候自动删除unix socket文件和pid文件
vacuum          = true
# 使进程在后台运行,并将日志打到指定的日志文件或者udp服务器
daemonize = /home/ubuntu/(django应用名称)/uwsgi.log

4.4 测试安装是否成功

  • 创建test.py文件
#test.py文件输入如下:

def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return ["success!"] 
  • 在test.py目录下输入:
uwsgi --http :8000 --wsgi-file test.py

4.5 启动uwsgi

  • 切换到/home/Ubuntu/(django应用名称)/目录下,输入:
uwsgi --ini (django应用名称)_uwsgi.ini

4.6 关闭uwsgi

sudo killall -9 uwsgi

5.部署nginx

5.1 安装nginx

sudo apt-get install nginx  # 安装

5.2 启动nginx测试是否安装成功

  • 启动nginx
/etc/init.d/nginx start  # 启动

5.3 编辑nginx配置文件

5.3.1.:下载配置文件:nginx.conf到本地

5.3.2.:打开配置文件,在Http内创建server子项如下:

server {
    listen         8888; # 设置监听端口号
    server_name    XXX.XXX.XXX.XXX; # 设置对外访问入口,可以是域名可以是IP地址,我设置的是IP 
    charset        UTF-8;  # 设置访问的语言编码
    access_log     /var/log/nginx/(django应用名称)_access.log; # 访问日志记录
    error_log      /var/log/nginx/(django应用名称)_error.log;  # 错误日志记录

    location / {   # 设置虚拟主机的基本信息
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:8000; # 刚才uwsgi设置的socket
        uwsgi_read_timeout 2;
    }   
    location /static {   # 静态文件设置,nginx自己处理
        expires 7d;      # 过期时间
        alias /home/ubuntu/(django应用名称)/static/;  # 项目静态文件地址
     }
 }

5.3.3.:把编辑好的配置文件传输到 /home/ubuntu/ 目录下

5.3.4.:将其替换原来的配置文件,执行如下命令:

sudo cp -f /home/ubuntu/nginx.conf /etc/nginx/ 

5.4 启动nginx服务

  • 切换到/home/Ubuntu/(django应用名称)/目录下,输入命令:
/etc/init.d/nginx start  # 启动
#备注:启动nginx之前,需要先把uwsgi启动。

5.5 检查nginx配置文件

sudo nginx -t  #检查配置文件

5.6 nginx一些操作命令

/etc/init.d/nginx start  # 启动

/etc/init.d/nginx restart #重启

/etc/init.d/nginx stop #关闭

pkill -9 nginx   #关闭
原文地址:https://www.cnblogs.com/jasontang369/p/9390933.html