Ex_treme's blog.

填坑之旅(三)---NGINX配置

2018/06/19 Share

填坑之旅—云服务器生产环境

在即将大功告成之际,uwsgi出来搅了个局,nginx很正常的泡在80端口,uwsgi跑出来了却没办法路由导80端口,唉…填坑之旅路漫漫

填坑必备技能

1
2
3
4
5
6
#查看端口占用情况
lsof -i:端口号
#查看进程
ps aux|grep 进程名
#推出进程
kill -QUIT PID

直接启动django

  1. 对外开启8000端口
  2. python manager.py runserver 0.0.0.0:8000
  3. http://39.105.124.151:8000/

通过uwsgi启动django

  1. uwsgi --http :8000 --module IQAS.wsgi
  2. http://39.105.124.151:8000/

nginx转发8000端口

  1. nano IQAS.conf(0.0.0.0:8000)
  2. nginx -s reload
  3. 通过uwsgi启动django
  4. http://www.piggrush.cn:8000/

域名解析也成功了,说明问题就在nginx,没办法把8000端口映射到80,也就是负载均衡没用上。

折腾NGINX

参考博客:projectsedu.com
nginx的问题一般都是配置文件的问题,娴熟西NGINX的基本命令,而后修改配置文件!
命令

1
2
3
4
5
6
#退出
nginx -s quit
#重启
nginx -s reload
#启动
nginx -c *.conf

配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
server {

listen 80;
server_name 39.105.124.151 www.piggrush.cn piggrush.cn;
charset utf-8;
access_log /home/admin/IQAS/nginx_access.log;
error_log /home/admin/IQAS/nginx_error.log;
client_max_body_size 75M;


location /static/ {
root /home/admin/IQAS;
}

location /media/ {
root /home/admin/IQAS;
}

location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000;
fastcgi_buffers 16 256k;
send_timeout 999999999;
}

}
}

ERR:找不到静态文件

最主要的问题还是NGINX启动问题,NGINX的配置文件是默认的如果不按照自己定义的配置文件启动,这里需要强调两种启动方式。

  • .nginx -c *.conf
    不推荐这种启动方式,这种启动方式的配置文件放在/usr/nginx/share里面,配置形式的要求不是很清楚,但应该粒度更细。
  • ln .conf /etc/niginx/.cong 创建软链接,直接nginx启动
    推荐这种启动方式,因为这是nginx默认配置文件地址,软链接可以很方便的取覆盖它。

**很重要的一点:**遇到找不到静态文件这种情况,重启NGINX之后一定要重载浏览器缓存,不然配置即使生效了你也看不出来。

好了这次的填坑之旅到此位置,末尾附上NGINX配置大全和UWSGI的配置和命令,以飨读者~

附录


1
2
3
4
#uwsgi命令
启动uwsgi:uwsgi --ini uwsgi.ini
停止uwsgi:uwsgi --stop uwsgi.pid
重新加载配置:uwsgi --reload uwsgi.pid

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#uwsgi配置
新建uwsgi.ini 配置文件, 内容如下:

# mysite_uwsgi.ini file
[uwsgi]

# Django-related settings
# the base directory (full path)
chdir = /home/bobby/Projects/MxOnline
# Django's wsgi file
module = MxOnline.wsgi
# the virtualenv (full path)

# process-related settings
# master
master = true
# maximum number of worker processes
processes = 10
# the socket (use the full path to be safe
socket = 127.0.0.1:8000
# ... with appropriate permissions - may be needed
# chmod-socket = 664
# clear environment on exit
vacuum = true
virtualenv = /home/bobby/.virtualenvs/mxonline

logto = /tmp/mylog.log

注:
chdir: 表示需要操作的目录,也就是项目的目录
module: wsgi文件的路径
processes: 进程数
virtualenv:虚拟环境的目录


workon mxonline
uwsgi -i 你的目录/Mxonline/conf/uwsgi.ini &

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#niginx配置
新建uc_nginx.conf


# the upstream component nginx needs to connect to
upstream django {
# server unix:///path/to/your/mysite/mysite.sock; # for a file socket
server 127.0.0.1:8000; # for a web port socket (we'll use this first)
}
# configuration of the server

server {
# the port your site will be served on
listen 80;
# the domain name it will serve for
server_name 你的ip地址 ; # substitute your machine's IP address or FQDN
charset utf-8;

# max upload size
client_max_body_size 75M; # adjust to taste

# Django media
location /media {
alias 你的目录/Mxonline/media; # 指向django的media目录
}

location /static {
alias 你的目录/Mxonline/static; # 指向django的static目录
}

# Finally, send all non-media requests to the Django server.
location / {
uwsgi_pass django;
include uwsgi_params; # the uwsgi_params file you installed
}
}
CATALOG
  1. 1. 填坑之旅—云服务器生产环境
    1. 1.1. 填坑必备技能
    2. 1.2. 直接启动django
    3. 1.3. 通过uwsgi启动django
    4. 1.4. nginx转发8000端口
    5. 1.5. 折腾NGINX
    6. 1.6. ERR:找不到静态文件
      1. 1.6.1. 附录