#Framework# Python+Uwsig+Nginx+Supervisor
共 13950字,需浏览 28分钟
·
2024-05-16 22:55
查看python版本
查看python 可执行文件的位置
进行python所在位置,查看python信息
安装 python依赖包
yum -y group install "Development tools"
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel
进行python版本备份
Mv /bin/python /bin/python.bak
下载python安装包
wget https://www.python.org/ftp/python/3.7.6/Python-3.7.6.tar.xz
解压缩
tar -xvJf Python-3.7.6.tar.xz
安装
Cd Python-3.7.6
./configure --prefix=/usr/local/python3 --enable-optimizations --with-ssl #第一个指定安装的路径,不指定的话,安装过程中可能软件所需要的文件复制到其他不同目录,删除软件很不方便,复制软件也不方便. #第二个可以提高python10%-20%代码运行速度. #第三个是为了安装pip需要用到ssl,后面报错会有提到.
make && make install
确认目录下/usr/local/目录下就会有python3了。
cd /usr/local/python3/
创建软链接
ln -s /usr/local/python3/bin/python3 /usr/bin/python
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip
查看版本
python -V
python2 -V
cd /usr/bin/
ll python*
修改yum的配置
vi /usr/bin/yum
vi /usr/libexec/urlgrabber-ext-down
Python3 Flask安装:
Flask模块安装
pip install flask
创建flask项目
cd /home/wwwroot/flask_project
vi app.py
from flask import Flask,request,render_template
app = Flask(__name__)
@app.route('/')
def index():
return 'hello world'
if __name__ == '__main__':
app.run(debug=True)
python app.py
浏览器输入:
192.168.1.20:9000
Python3 Uwsgi安装:
uwigi安装
flask的作用只是一个框架,它不是服务器,也不会去关心一些安全问题、HTTP 的性能问题等。所以我们需要更加专业的 HTTP 服务器,如uwsgi。
uwsgi 卸载
yum remove uwsgi
pip uninstall uwsgi
yum install pcre
yum install libxml2
yum insall python-devel
pip install uwsgi
建立连接
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
编辑python文件
Vi /home/wwwroot/flask/test.py
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello World"]
运行命令
uwsgi --http :8001 --wsgi-file test.py
#app.py
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World"
#run.py
from app import app
if __name__ == "__main__":
app.run()
[uwsgi]
#uwsgi启动时,所使用的地址和端口(这个是http协议的)
http=0.0.0.0:5000
#uwsgi 启动时所使用的地址与端口(这个是socke协议)
socket=0.0.0.0:8001
#指向网站目录就是你那个包含flask项目的文件夹(如复制记得更改)
chdir=/home/xrf/mypython/flaskWeb
#python 启动程序文件就是包含if __name__ == "__main__":manager.run()的py文件(记得改哦)
wsgi-file=run.py
#python 程序内用以启动的application 变量名 就是这个:app = Flask(__name__)(记得改哦)
callable=app
#处理器数
processes=4
#线程数
threads=2
#状态检测地址
stats=127.0.0.1:9191
uwsgi uwsgi.ini
后台杀掉uwsgi进程
pkill -f uwsgi -9
Python3 Nginx安装:
Nginx
Uwsgi就是一个便携的 web 服务器,当然也可以做一个连接其他app的中间件,所以我们一般还是在它们前面档一个更加专业的 HTTP 服务器——nginx,也就是上文提到的。仅仅只使用uWSGI的会有性能不够,安全性不够的情况。nginx是经过长时间验证的一个更好的服务器。
Nginx安装
下载
wget http://nginx.org/download/nginx-1.21.2.tar.gz
解压缩
tar zxvf nginx-1.10.2.tar.gz
进入路径
cd nginx-1.21.2
配置
./configure && make && make install
查找安装路径
whereis nginx
把安装路劲添加到环境变量
vi ~/.bashrc
加上一句上面找到的nginx的路径
export PATH=$PATH:/usr/local/nginx/sbin/
保存并退出
source ~/.bashrc
系统添加nginx服务
Vi /etc/init.d/nginx
#!/bin/sh
# nginx - this script starts and stops the nginx daemin
#
# chkconfig: - 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /usr/local/nginx/conf/nginx.conf
# pidfile: /usr/local/nginx/logs/nginx.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
nginx="/usr/local/nginx/sbin/nginx"
prog=$(basename $nginx)
NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
lockfile=/var/lock/subsys/nginx
start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
echo -n $"Starting $prog: "
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
stop() {
echo -n $"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}
restart() {
configtest || return $?
stop
start
}
reload() {
configtest || return $?
echo -n $"Reloading $prog: "
killproc $nginx -HUP
RETVAL=$?
echo
}
force_reload() {
restart
}
configtest() {
$nginx -t -c $NGINX_CONF_FILE
}
rh_status() {
status $prog
}
rh_status_q() {
rh_status >/dev/null 2>&1
}
case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
exit 2
esac
进入目录
cd /etc/init.d
修改权限
chmod 755 /etc/init.d/nginx
开始注册
chkconfig --add nginx
启动服务
service nginx start
nginx 管理服务命令
systemctl start nginx #开启nginx服务
systemctl stop nginx #停止nginx服务
systemctl restart nginx #重启nginx服务
创建项目文件 hello.py
Vi /home/wwwroot/flask_project/hello.py
项目uwsgi配置文件 config.ini
Vi /home/wwwroot/flask_project/config.ini
系统nginx的配置文件
Vi /usr/local/nginx/conf/nginx.conf
关闭 uwsgi进程
Pkill -f uwsgi -9
配置uwsgi以及启动nginx
Uwsgi –ini /home/wwwroot/flask_project/config.ini & systemctl restart nginx
Python3 Supervisor安装:
Supervisor
Supervisor(http://supervisord.org/)是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制。
安装supervisor
yum install -y supervisor
如果提示supervisor找不到,则使用如下指令:
Yum install epel-release
Yum install -y supervisor
如果有问题
[root@localhost bin]# easy_install supervisor
配置supervisor
编辑下/usr/bin/supervisord、/usr/bin/echo_supervisord_conf、/usr/bin/supervisorctl
#!/usr/bin/python 改成 #!/usr/bin/python2
查看 supervisord的使用帮助
Supervisord -h
创建默认配置文件。
[root@localhost bin]# echo_supervisord_conf > /etc/supervisord.conf
修改/etc/supervisord.conf 默认配置文件
Vi /etc/supervisord.conf
直接找到最下面的这个。
[include] # 这里的‘;’注释去掉
;files = relative/directory/*.ini
files = /etc/supervisor/conf.d/*.conf # 这里加入自定义的配置文件文件路径
创建自定义文件配置文件夹
[root@localhost etc]# mkdir -p supervisor/conf.d
[root@localhost etc]# cd supervisor/conf.d
[root@localhost conf.d]# vim uwsgi.conf
stopasgroup=true ;默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程
killasgroup=true ;默认为false,向进程组发送kill信号,包括子进程
杀掉已经存在的进程
Pkill -f supervisord -9
-c指定配置文件路径,-n可前台运行,方便自己调试
/usr/bin/supervisord -c /etc/supervisord.conf
查看程序
Ps -aux | grep supervisord
Ps -aux | grep uwsgi
配置nginx文件
Vi /usr/local/nginx/conf/nginx.conf
Supervisor 配置文件 /etc/supervisord.conf
自定义配置文件 /etc/supervisor/conf.d/uwsgi.conf
Supervisor 配置重启
确保nginx 启动
Systemctl start nginx
启动supervisord
/usr/bin/supervisord -c /etc/supervisord.conf
杀掉supervisord进程
Pkill -f supervisord -9
supervisor出现Unlinking stale socket /tmp/supervisor、unix:/run/supervisor/supervisor.sock no such file
1、修改配置文件
vim supervisord.conf
这里把所有的/tmp路径改掉,
/tmp/supervisor.sock 改成/var/run/supervisor.sock,
/tmp/supervisord.log 改成/var/log/supervisor.log,
/tmp/supervisord.pid 改成 /var/run/supervisor.pid 要不容易被linux自动清掉。
样例如下:
[unix_http_server]
file=/run/supervisor/supervisor.sock ; the path to the socket file
[supervisord]
logfile=/var/log/supervisord.log ; main log file; default $CWD/supervisord.log
pidfile=/run/supervisor/supervisord.pid ; supervisord pidfile; default supervisord.pid
[supervisorctl]
serverurl=unix:///run/supervisor/supervisor.sock ; use a unix:// URL for a unix socket
2、修改权限
sudo chmod 777 -R /run
sudo chmod 777 -R /var
如果没改,启动可能会报错 IOError: [Errno 13] Permission denied: ‘/var/log/supervisord.log’
3、创建supervisor.sock
sudo touch /run/supervisor/supervisor.sock
sudo chmod 777 /run/supervisor/supervisor.sock
sudo chmod 777 -R /run
4、添加supervisor.sock链接
unlink /run/supervisor/supervisor.sock
5、启动supervisord
参考资料:
Linux vi命令(vi编辑器)30分钟入门教程 (biancheng.net)
http://c.biancheng.net/vi/
(4条消息) centos 7 网络配置( 网关、dns、ip地址配置)_jcxch的专栏-CSDN博客
https://blog.csdn.net/jcxch/article/details/48632761
(4条消息) CentOS网络配置与重启方法_wxt_hillwill的博客-CSDN博客_centos重置网络
https://blog.csdn.net/wxt_hillwill/article/details/113742637
CentOS 设置网络(修改IP&修改网关&修改DNS) - 网络爱上点击 - 博客园 (cnblogs.com)
https://www.cnblogs.com/visi_zhangyang/articles/2429185.html
(4条消息) VMware虚拟机设置上网及与本地计算机通信_bobozai86的博客-CSDN博客_虚拟机网络怎么设置可以与本机连接
https://blog.csdn.net/bobozai86/article/details/82699983
mysql细说show slave status参数详解(最全) - --smile - 博客园 (cnblogs.com)
https://www.cnblogs.com/--smile/p/11811715.html
(4条消息) CentOS7安装MySQL(完整版)_程序员进阶之路-CSDN博客_centos7安装mysql https://blog.csdn.net/qq_36582604/article/details/80526287
(4条消息) CentOS7上实现mysql数据库主从备份_贫僧想吃肉的博客-CSDN博客_centos mysql 主从备份
https://blog.csdn.net/weixin_41659822/article/details/108146409
supervisor介绍与使用 - 雪山过客 - 博客园 (cnblogs.com)
https://www.cnblogs.com/blogyuhan/p/9330831.html
centos7中安装python3 - 修瑾 - 博客园 (cnblogs.com)
https://www.cnblogs.com/xiujin/p/11477419.html
centos7建立删除软连接 - 豆浆D - 博客园 (cnblogs.com)
https://www.cnblogs.com/soymilk2019/p/14876096.html
CentOS+uWSGI+Nginx 配置Django Web服务器 (lazynight.me)
http://lazynight.me/2512.html
(4条消息) django为什么需要uwsgi和nginx的配合_TY_ANG的博客-CSDN博客
https://blog.csdn.net/weixin_44223088/article/details/105449446
(4条消息) centos7安装和配置uWSGI_u010863022的博客-CSDN博客_centos7 安装uwsgi
https://blog.csdn.net/u010863022/article/details/104866820
在centos下启动nginx出现Failed to start nginx.service:unit not found - ansibee - 博客园 (cnblogs.com)
https://www.cnblogs.com/ansibee/p/8087476.html
CentOS 7 Nginx 错误集合 - The-fat - 博客园 (cnblogs.com)
https://www.cnblogs.com/wangye666/p/10225003.html
(4条消息) centos7重启nginx报错解决办法nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed_susu1083018911的博客-CSDN博客
https://blog.csdn.net/susu1083018911/article/details/103526372
(4条消息) uwsgi启动报错 chdir(): No such file or directory [core/uwsgi.c line 2591]_中国移动。4G的博客-CSDN博客
https://blog.csdn.net/weixin_42292991/article/details/95976016
阿里云:uwsgi--配置出错 bind(): Address already in use [core/socket.c line 769] - Be-myself - 博客园 (cnblogs.com)
https://www.cnblogs.com/gengyufei/p/11678141.html
Centos7 下python3 uwsgi的安装配置 - 云+社区 - 腾讯云 (tencent.com)
https://cloud.tencent.com/developer/article/1416183
Centos7 搭建flask 应用 nginx + uwsgi + flask - 肥冬瓜 - 博客园 (cnblogs.com)
https://www.cnblogs.com/grayhuang/p/13447968.html
CentOS7.2安装配置nginx+uwsgi+python+flask运行环境 - 挨踢学霸 - 博客园 (cnblogs.com)
https://www.cnblogs.com/itxb/p/8570119.html
CentOS7.2安装配置nginx+uwsgi+python+flask运行环境 - 挨踢学霸 - 博客园 (cnblogs.com)
https://www.cnblogs.com/itxb/p/8570119.html
Centos7 搭建flask 应用 nginx + uwsgi + flask - 肥冬瓜 - 博客园 (cnblogs.com)
https://www.cnblogs.com/grayhuang/p/13447968.html
基于Centos7+Flask+Nginx+uWSGI+Python3的服务器网页搭建教程 - Pyrokine - 博客园 (cnblogs.com)
https://www.cnblogs.com/Pyrokine/p/9095629.html
(4条消息) 阿里云centos 部署python flask应用(centos+python3+nginx+flask+uwsgi+supervisor)_Courage-Hu的专栏-CSDN博客
https://blog.csdn.net/u012135009/article/details/87397166
Centos 7.6上supervisor问题集锦- 阿文博客 (wenfeifei.com)
http://www.wenfeifei.com/art/detail/n0baZG7
(4条消息) supervisor出现Unlinking stale socket /tmp/supervisor、unix:/run/supervisor/supervisor.sock no such file_代码讲故事-CSDN博客
https://blog.csdn.net/u014374009/article/details/109198777
在Centos7使用supervisor - 知乎 (zhihu.com)
https://zhuanlan.zhihu.com/p/79801019
Supervisor + Nginx + Python3 部署Tornado - 云+社区 - 腾讯云 (tencent.com)
https://cloud.tencent.com/developer/article/1744828