腾讯云服务器centos7.2+nginx(开启gzip压缩)+uwsgi+Django+react

时间:2024-06-02 14:33:32

因为项目原因,学习了react,Django,完成react开发项目过后,打包(做好了代码分割、压缩)放入Django中,在本地运行速度很快,结果放到服务器中,虽然某些js文件很小(只有一百多kb),但是下载速度非常慢,需要3-6秒,这样导致页面加载速度很慢,通过查询,通过gzip压缩,可以使项目js文件进行进一步压缩,极大的加快项目运行速度。现将完整的流程分享如下:

一、确保项目在服务器中运行成功(暂不做任何处理):

  比如我购买腾讯云服务,在服务器中启动Django项目,python manage.py runserver 0.0.0.0:80  (腾讯云服务公网ip会映射到此地址),在本机使用公网ip确保能访问

二、在centos中安装uwsgi

直接使用以下命令完成安装:

pip install uwsgi

1.配置uwsgi:在Django项目的根目录下,新建两个文件,uwsgi.ini( 配置文件)和run.log(日志文件)

2.在uwsgi.ini配置如下:

  

[uwsgi]
chdir = /home/myweb ----->项目根目录
module = myweb.wsgi:application ----->项目myweb/myweb/wsgi.py
socket = 127.0.0.1:8000 ----->nginx与uwsgi通信端口,与nginx配置文件中一直,下面会说
master = true ----->允许主线程存在(true)
processes=4 ----->开启的进程数量(这里是开启4个进程)
max-requests=5000 ----->最大请求数
daemonize = /home/myweb/run.log ----->上面创建的日志文件
disable-logging = true ----->表示不记录正常信息,只记录错误信息
wsgi-file = /home/myweb/myweb/wsgi.py ----->项目myweb/myweb/wsgi.py
pidfile=/home/myweb/uwsgi.pid ----->uWSGI运行后自动生成的,里面记录了uWSGI的进程号,可以用来重启uWSGI
vacuum=true ----->当服务器退出的时候自动清理环境,删除unix socket文件和pid文件

4.在项目根目录中运行以下命令进行static文件收集,这个提供ngnix静态文件

python manage.py collectstatic

3.uwsgi.ini操作

启动:uwsgi --ini uwsgi.ini
停止:uwsgi --stop uwsgi.pid
重启:uwsgi --reload uwsgi.pid

三、centos安装nginx

安装依赖

1.yum install gcc-c++  
2.yum install pcre pcre-devel
3.yum install zlib zlib-devel
4.yum install openssl openssl--devel

下载nginx

wget http://nginx.org/download/nginx-1.12.0.tar.gz 

解压缩

tar -zxvf nginx-1.12.0.tar.gz

进入目录

cd  nginx-1.12.0

安装

./configure
make
make install

centos默认安装路径:/usr/local/nginx

进入此目录:cd /usr/local/nginx/sbin

输入命令启动nginx(测试是否安装成功):./nginx

如果成功会显示以下界面:

腾讯云服务器centos7.2+nginx(开启gzip压缩)+uwsgi+Django+react

进行nginx配置

  cd /usr/local/nginx/conf

vi nginx.conf进行编辑

插入:

    gzip  on;                              ----->启动gzip压缩
gzip_min_length 1k; ----->最小压缩为1k
gzip_buffers 4 16k; ----->以16k为单位,按照原始数据大小以16k为单位的4倍申请内存
#gzip_http_version 1.0; ----->识别http协议的版本,早起浏览器可能不支持gzip自解压,用户会看到乱码
gzip_comp_level 4; ----->等级1-9 最小的压缩最快 但是消耗cpu
gzip_types text/plain application/javascript application/x-javascript text/css text/javascript image/jpeg image/gif image/png; ------>压缩格式,这个很重要,只有对应格式才压缩
gzip_disable "MSIE [1-6]\."; ----->指定哪些不需要gzip压缩的浏览器
gzip_proxied any; ------>nginx做为反向代理时启用,off(关闭所有代理结果的数据的压缩),expired(启用压缩,如果header头中包括"Expires"头信息),no-cache(启用压缩,header头中包含"Cache-Control:no-cache"),no-store(启用压缩,header头中包含"Cache-Control:no-store"),private(启用压缩,header头中包含"Cache-Control:private"),no_last_modefied(启用压缩,header头中不包含"Last-Modified"),no_etag(启用压缩,如果header头中不包含"Etag"头信息),auth(启用压缩,如果header头中包含"Authorization"头信息)
    gzip_vary on;                          ------>启用应答头"Vary: Accept-Encoding"

继续编辑在server里编辑

charset utf-8;                                  ----->设置字符编码

        location / {
uwsgi_pass 127.0.0.1:8000; ----->对应uwsgi配置的端口
include /usr/local/nginx/conf/uwsgi_params; ------conf目录下
}
location /static{ ----->静态文件
alias /home/myweb/static;
}

nginx操作:

启动:在sbin目录    ./nginx -c /usr/local/nginx/conf/nginx.conf
停止:查看进程 ps -ef|grep nginx 杀死进程 kill -TERM 2132
重启:./nginx -s reload

四:启动uwsgi、nginx服务,项目就运行成功了,如下:

腾讯云服务器centos7.2+nginx(开启gzip压缩)+uwsgi+Django+react

参考文章:

  https://blog.****.net/xing851483876/article/details/84306953

  https://www.cnblogs.com/leechenxiang/p/7086298.html

https://www.jianshu.com/p/cc61d74104e5

https://www.cnblogs.com/codingcloud/p/5095066.html