nginx+uwsgi或nginx+python中manage部署多个网站

现在遇到一个问题自己有两个网站需要发布,但是自己只有一台服务器,想要发布两个网站。自己研究了两种方案。

一个服务器部署多个网站。

方案一:不推荐
1、blog 网站
1
2
使用python虚拟环境进入/home/code/blog_web目录
使用python manage.py 启动项目
2、学习 网站
1
2
使用python虚拟环境进入/home/code/study_web目录
使用python manage.py 启动项目
3、启动nginx

注:

Debian系统需要编译安装nginx

下面的命令是Debian系统的启动命令

1
2
启动  nginx 
关闭 nginx -s stop

centos的启动命令是

1
2
3
4
systemctl start nginx   启动
systemctl stop nginx 停止
systemctl restart nginx 重启
systemctl status nginx 查看nginx状态
4、nginx配置

单独启动两个网站使用 python manage.py文件

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
#网站1端口转发
server {
listen 80;
server_name www.blog.com;
access_log /home/code/blog_web/logs/blog_web.log;
error_log /home/code/blog_web/logs/blog_web.error;

#将所有请求转发给demo_pool池的应用处理
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8000;
}
}
#网站2端口转发
server {
listen 80;
server_name www.study.com;
access_log /home/code/study_web/logs/study_web.log;
error_log /home/code/study_web/logs/study_web.error;

#将所有请求转发给demo_pool池的应用处理
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8001;
}
}

这个需要在后台一直运行的话可以使用linux自带的nohup命令 到有manage.py文件夹下面运行:

1
nohup python manage.py &

不推荐这种方案。

方案二:推荐
1、nginx配合uwsgi的配置
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
#网站一端口转发
server {
listen 80;
server_name www.blog.com;
access_log /home/code/blog_web/logs/blog_web.log;
error_log /home/code/blog_web/logs/blog_web.error;

#将所有请求转发给demo_pool池的应用处理
location / {
include uwsgi_params;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
uwsgi_pass 127.0.0.1:8000;
}
}
#网站二端口转发
server {
listen 80;
server_name www.study.com;
access_log /home/code/study_web/logs/study_web.log;
error_log /home/code/study_web/logs/study_web.error;

#将所有请求转发给demo_pool池的应用处理
location / {
include uwsgi_params;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
uwsgi_pass 127.0.0.1:8001;
}
}
2、blog网站uwsgi配置

blog的uwsgi配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[uwsgi]
# chdir — 项目所在的目录
chdir=/home/code/blog_web
# virtualenv — 项目虚拟环境的目录
virtualenv = /home/blogenv
# 启动的model
module = manage:app
# 启动文件
wsgi-file=manage.py
callable=app
#启动一个master进程来管理其他进程,以上述配置为例,其中的4个uwsgi进程都是这个master进程的子进程,如果kill这个master进程,相当于重启所有的uwsgi进程
master=true
#进程数量
processes = 4
#线程数量
threads=2
###使进程在后台运行,并将日志打到指定的日志文件或者udp服务器,日志文件会自动创建
daemonize=/var/log/uwsgi/blog_web.log
#其中socket是用来uwsgi与nginx之间通信的
socket = 127.0.0.1:8000
3、学习 网站uwsgi配置

学习网站uwsgi配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[uwsgi]
# chdir — 项目所在的目录
chdir=/home/code/study_web
# virtualenv — 项目虚拟环境的目录
virtualenv = /home/studyenv
# 启动的model
module = manage:app
# 启动文件
wsgi-file=manage.py
callable=app
#启动一个master进程来管理其他进程,以上述配置为例,其中的4个uwsgi进程都是这个master进程的子进程,如果kill这个master进程,相当于重启所有的uwsgi进程
master=true
#进程数量
processes = 4
#线程数量
threads=2
###使进程在后台运行,并将日志打到指定的日志文件或者udp服务器,日志文件会自动创建
daemonize=/var/log/uwsgi/study_web.log
#其中socket是用来uwsgi与nginx之间通信的
socket = 127.0.0.1:8001

推荐方案:也是我现在用的方案。

部署一个网站可以参考文章《Flask项目部署

原创出品,喜欢可以收藏转载哦!!!

作者:lizhonglin

github: https://github.com/Leezhonglin/

blog: https://leezhonglin.github.io/

-------------本文结束 感谢您的阅读-------------