问题描述
将Django应用部署到服务器上需要用uwsgi代替manage.py启动服务,但是启动后日志中有报错
!!! no internal routing support, rebuild with pcre support !!!
解决方法
注意:本文采用的是Ubuntu系统的服务器
这个错误通常是由于 Nginx 编译时没有启用 PCRE 支持导致的。需要下载Nginx的源码进行编译安装
最终代码
首先卸载原本的Nginx
-
停止Nginx服务
sudo service nginx stop
-
移除Nginx包及其依赖项
sudo apt-get remove nginx nginx-common
如果使用的是Ubuntu 16.04 或更早版本的系统,还需要执行以下命令来删除 Nginx 包及其依赖项:
sudo apt-get remove nginx-full nginx-common
然后重新安装Nginx
-
确保安装了
libpcre3
和libpcre3-dev
sudo apt-get install libpcre3 libpcre3-dev
-
安装Nginx编译所需的其他依赖
sudo apt-get install build-essential libssl-dev zlib1g-dev
-
下载并解压Nginx源码
wget http://nginx.org/download/nginx-1.16.1.tar.gz tar -xzf nginx-1.16.1.tar.gz cd nginx-1.16.1
-
配置Nginx编译选项,并启用PCRE支持
./configure --with-pcre
-
编译安装Nginx
make sudo make install
-
重新启动Nginx
sudo service nginx restart
如果启动Nginx时报错:Failed to restart nginx.service: Unit nginx.service is masked.
按下面来操作
-
检查当前 nginx.service 状态:
systemctl status nginx.service
如果显示Nginx已被屏蔽,则需要先解除屏蔽才能重启Nginx服务
-
解除屏蔽
sudo systemctl unmask nginx.service
-
重新启动Nginx服务
sudo systemctl restart nginx.service
-
检查Nginx服务状态
systemctl status nginx.service
如果服务状态显示为“active”,则说明 Nginx 已经成功启动