Python Flask+uwsgi 配置uwsgi文件重启、停止服务,修改python文件立即生效

0 评论
/ /
0 阅读
/
14422 字
18 2021-05

方法一:修改python文件后立刻生效

在uwsgi的配置文件(我的uwsgi配置文件在项目根目录/root/app/test/uwsgi.ini)

增加:

py-autoreload=1

保存后让uwsgi服务重启生效即可,以后修改python文件都会立刻生效。

方法二、配置uwsgi,让重启uwsgi服务更方便

背景:我的项目在/root/app/test ,uwsgi配置文件uwsgi.ini在/root/app/test里

(uwsgi的配置可以看我的文章《腾讯云Centos7 从零开始安装Python3 Flask框架,并配置uWSGI+nginx》)

1、创建uwsgi文件夹和相关文件

创建uwsgi文件夹

mkdir -p /root/app/test/uwsgi
cd /root/app/test/uwsgi

创建uwsgi.pid,并保存退出

vi uwsgi.pid

创建uwsgi.status,并保存退出

vi uwsgi.status
touch uwsgi.pid
touch uwsgi.status

说明:uwsgi.pid文件用来重启和停止uwsgi服务,uwsgi.status用来查看uwsgi的服务状态

2、修改uwsgi配置文件

修改uwsgin.ini配置文件,添加pid文件和status文件的配置

stats=%(chdir)/uwsgi/uwsgi.status
pidfile=%(chdir)/uwsgi/uwsgi.pid

保存退出

3、启动uwsgin配置文件

完成配置后,可以用如下命令操作uwsgi服务

uwsgi --ini uwsgi.ini

如果uwsgi已经启动,无法再次启动,可以尝试杀死进程或者重启服务器(我使用的是重启服务器的方法)

执行完成后,查看uwsgi的pid号

cat uwsgi/uwsgi.pid

查看一下uwsgi的进程

ps aux | grep uwsgi

发现主进程的pid与我们的pid文件里存的是一样的

到此就可以使用重启、停止uwsgi服务了

重启uwsgi

uwsgi --reload uwsgi/uwsgi.pid

停止uwsgi

uwsgi --stop uwsgi/uwsgi.pid

停止uwsgi服务后,用ps命令查看uwsgi的进程发现已经不存在了

开启uwsgi

uwsgi --ini uwsgi.ini

uwsgi进程和worker的状态很详细

uwsgi --connect-and-read uwsgi/uwsgi.status

到此配置完成,python文件修改后可以重启uwsgi服务来生效。

 

Ubuntu系统:Python+pip+Venv+Nginx+uwsgi环境搭建及项目部署

一、Python环境搭建

  1. Python 环境

# Ubuntu18.04 python默认版本2.7 和3.6.9
# 项目Python版本为3.6.9
1.验证:
python -V
  python3 -V

2.指定的python安装pip命令

1.# 查看pip版本及对应的python
pip -V
2.# 若没有,安装pip
sudo apt-get update
   sudo apt-get upgrade
apt install python3-pip
3.# 测试
pip3 list
4.# 升级pip
sudo pip3 install --upgrade pip
# 升级对应环境的 pip
  python -m pip install --upgrade pip
5.# 如果报错:
vi /usr/bin/pip3
  将源文件
  from pip import main
   if __name__ == '__main__':
      sys.exit(main())
  修改为:
  from pip import __main__
   if __name__ == '__main__':
      sys.exit(__main__.main())
  wq 保存退出
  测试:pip3 list

3.安装虚拟环境

1.# 为python3安装虚拟环境
sudo apt install python3-venv
2.# 创建一个村发放虚拟环境的目录
cd /home
mkdir venv_folder
3.# 创建虚拟环境
cd venv_folder
python3 -m venv venv_name
4.# 激活并进入该虚拟环境
source venv_folder/bin/activate

4.安装nginx

1. # 安装
sudo apt install nginx
2. # 启动验证
service nginx start    # 启动nginx
service nginx reload   # 重新加载nginx配置文件

  nginx -s reopen   # 重启 Nginx
nginx -s stop  # 停止 Nginx
nginx - V  # 查看版本号

5.配置nginx

1. # 配置nginx 并替换default文件
cd /etc/nginx/sites-available/
cp default xxx
vi default  
2. # 配置
server {
  listen 80;
  server_name elmjst.xxxx.com;
  return 301 https://elmjst.xxxx.com$request_uri;
}

server {
  listen 443;
  server_name elmjst.jijips.com;
  ssl on;
  ssl_certificate   /etc/nginx/cert/elmjst.jijips.com.pem;
  ssl_certificate_key /etc/nginx/cert/elmjst.jijips.com.key;
  ssl_session_timeout 5m;
  ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_prefer_server_ciphers on;
  location / {
      include     uwsgi_params;
      uwsgi_pass   127.0.0.1:5000;
      proxy_set_header Host $host;
      root /root/front_end;
      index /index.html;                        
      try_files $uri $uri/ /index.html;
    }
}

3. # 启动
sudo nginx -c /etc/nginx/nginx.conf
4. # 日志
cat /var/log/nginx/error.log
cat /var/log/nginx/access.log

5.安装Uwsgi

1. # 安装
sudo pip3 install uwsgi
2. # cd 到项目启动文件的根目录,新建文件 uwsgi.ini,添加相应配置
[uwsgi]
module = start_file_name:app      
master = true
processes = 6
chdir = /root/xxx/
socket = /root/xxx/log/pro.sock
socket = 127.0.0.1:8080
logto = /root/xxx/log/uwsgi.log
chmod-socket = 660
vacuum = true
buffer-size  = 8192

3. # 启动
uwsgi --ini ./uwsgi.ini &

6.停止项目

sudo pkill -f nginx -9
sudo pkill -f uwsgi -9