如果你已经开发一个基于前后端的web项目,本地已经实现无bug运行,想上线挂在云服务器上跑,可以实现多人访问,那么就离不开部署的问题了。就比如说我的Django项目,如果你想简单的实现24小时后台运行,你搭建所需的环境后可以直接使用命令
sudo nohup python3 manage.py runserver 0.0.0.0:80 &
挂在服务器运行,你退出远程软件也可以运行。不过这样比较鸡肋,当访问人数增多时,会导致阻塞问题,因为这完全没有实现多进程多线程来运行,如果项目一旦上线,面对大量的用户访问显得无能为力,因此,Nginx就应运而生了,Nginx是一款高性能的HTTP和反向代理web服务器,其特点内存占有少,并发能力强,其并发能力在同类型的网页服务器中比较出色。其反向代理,负载均衡方面有名,对于反向代理,我们先理解正向代理,以我们的科学上网为例子,用户端通过代理实现访问海外服务器,这就是我们所说的翻墙,而反向代理,用户访问我们的网站,通过nginx将这些访问的请求转发到不同服务器上,用户端感知不到。具体用法在server块加上proxy_pass实现。负载均衡在单个服务器遇到大的流量时,将请求分发到不用服务器上。那么这样听好像反向代理和负载均衡没啥区别吗,其实二者是相互依存,共同使用的,可以说反向代理是实现负载均衡的一种方式。现在来说下Nginx配置Django项目了,我服务器是ubuntu系统,下载对应的Nginx安装包
使用命令进行解压
tar zxvf xxx
然后安装依赖使用命令
apt install pcre pcre-devel zlib zlib-devel openssl openssl-devel
再进入刚解压的文件夹目录,使用命令
./configure
再使用命令
make
进行编译,最后使用命令
make install
即成功配置完成。一般Nginx启动文件都在目录/usr/local/nginx中,切到项目文件目录,如图
新建一个myblog.xml文件,文件代码如图所示
<uwsgi>
<socket>127.0.0.1:8997</socket><!-- 内部端口,自定义 -->
<chdir>/home/ubuntu/django_blogs/myblog/</chdir><!-- 项目路径 -->
<module>myblog.wsgi</module>
<processes>4</processes> <!-- 进程数 -->
<daemonize>uwsgi.log</daemonize><!-- 日志文件 -->
</uwsgi>
保存,然后切换到nginx的配置文件conf中,命令
cd /usr/local/nginx/conf
编辑nginx.conf文件,如下配置
#user nobody;
worker_processes 4;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
user root;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name codingchangeworld.com;
charset utf-8;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8997;
uwsgi_param UWSGI_SCRIPT myblog.wsgi;
uwsgi_param UWSGI_CHDIR /home/ubuntu/django_blogs/myblog/; #项目路径
}
location /static {
alias /home/ubuntu/django_blogs/myblog/static/; #静态资源路径
}
location /media {
alias /home/ubuntu/django_blogs/myblog/media/; #静态资源路径
}
location /templates {
alias /home/ubuntu/django_blogs/myblog/templates/; #静态资源路径
}
}
设置了进程数4,在代码settings.py中设置debug=False生产模式。保存退出,切换到myblog.xml中,使用命令
uwsgi -x myblog.xml
即可运行,最后访问域名,配置成功!
点击此处登录后即可评论