利用宝塔面板部署云服务器(Flask+uwsgi)

一、安装Python3以及虚拟环境

安装Python3

利用宝塔面板部署云服务器(Flask+uwsgi)
下载 python 3.8.6
wget https://www.Python.org/ftp/python/3.8.6/Python-3.8.6.tar.xz
解压
tar xvf Python-3.8.6.tar

进入 python3.8.6 目录
cd  Python-3.8.6
安装
./configure  --prefix=/usr/local/python3 && make && make install
#创建软连接
ln -s /usr/local/python3/bin/python3 /usr/bin/python
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip

安装虚拟环境

  1. 安装 virtualenvvirtualenvwrapper
pip3 install virtualenv
pip3 install virtualenvwrapper

在安装 virtualenvwrapper过程中遇到了一个Error,一开始这个错误直接导致安装失败,后面用 rm -rf /usr/bin/pythonln -s /usr/local/python3/bin/python3 /usr/bin/python更新了一下软连接,更新了一下pip
python -m pip install --upgrade pip,把它从 pip 20.2.1更新到了 pip 21.0.1

利用宝塔面板部署云服务器(Flask+uwsgi)
之后再安装可以安装成功了,如下图:
利用宝塔面板部署云服务器(Flask+uwsgi)
但是安装过程中还是会报这个错,如有大佬烦请帮忙看看原因。
Error内容如下:
distutils.errors.DistutilsError: Command '['/usr/bin/python', '-m', 'pip', '--disable-pip-version-check', 'wheel', '--no-deps', '-w', '/tmp/tmpbyfisgsj', '--quiet', '--index-url', 'http://mirrors.tencentyun.com/pypi/simple', 'pbr']' returned non-zero exit status 1.

  1. 修改虚拟环境的配置为Python3
vim /usr/local/python3/bin/virtualenvwrapper.sh

修改如下:

利用宝塔面板部署云服务器(Flask+uwsgi)
3. 修改bashrc配置文件
vim ~/.bashrc

在末行添加以下内容:

利用宝塔面板部署云服务器(Flask+uwsgi)
执行以下命令使得对 .bashrc配置文件的修改有效
source ~/.bashrc
  1. 增加虚拟环境的软链接
cd /usr/bin/
ls -al |grep virtualenv
cd /usr/local/python3/bin/
ln virtualenv /usr/bin/virtualenv
  1. 创建虚拟环境实例
mkvirtualenv -p python3 [虚拟环境实例名字]
workon  # 查看所有的虚拟环境实例
deactivate  # 退出当前虚拟环境实例
workon [虚拟环境实例名字]       # 退出后再进入某个虚拟环境实例
rmvirtualenv [虚拟环境实例名字]     # 删除某个虚拟环境实例

进入虚拟环境后会出现 (虚拟实例名) [root@....],如图:

利用宝塔面板部署云服务器(Flask+uwsgi)

二、利用宝塔面板快速部署项目环境

Centos安装宝塔面板命令:

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

安装完成之后会出现以下信息:

利用宝塔面板部署云服务器(Flask+uwsgi)
打开外网面板地址,是一个登录页面,然后用username和password进行登录。

如果登录不上,有可能是服务器没有放行面板的端口 [8888],云服务器可以找到控制台该实例的安全组设置,修改原来的或者新建一组安全组规则,放行该端口,再次尝试登录即可。

利用宝塔面板部署云服务器(Flask+uwsgi)
这里是宝塔官方提供的开端口教程,很详细了。
腾讯云服务器:https://www.bt.cn/bbs/thread-1229-1-1.html
阿里云服务器:https://www.bt.cn/bbs/thread-2897-1-1.html
华为云服务器:https://www.bt.cn/bbs/thread-3923-1-1.html

宝塔面板登录成功后,会有一个快速部署这四项的选择,当然也可以之后到软件商店手动选择安装

利用宝塔面板部署云服务器(Flask+uwsgi)
打开SSH
利用宝塔面板部署云服务器(Flask+uwsgi)
安装 pip install uwsgipip install flask
利用宝塔面板部署云服务器(Flask+uwsgi)

至此,

三、上传Flask项目到服务器

利用宝塔面板部署云服务器(Flask+uwsgi)
上传项目默认上传目录是在 /www/wwwroot下。
上传了一个最简单的Flask项目HW
利用宝塔面板部署云服务器(Flask+uwsgi)
点击终端,打开终端(确保终端的当前目录在HelloWorld下面),执行命令 pip freeze >requirements.txt,再点击刷新,目录下会出现这个文件。这个文件是Python项目管理器创建Flask项目时需要的可执行文件?我也不是很懂这里,但是没有这个文件,下一步部署项目就会出问题。
利用宝塔面板部署云服务器(Flask+uwsgi)
这里找到了解释和一个说明,🐎🐖
利用宝塔面板部署云服务器(Flask+uwsgi)
创建一个 run.py文件,文件内容是以下内容:
from app import app

if __name__ == '__main__':
    app.run()

创建一个 uwsgi.ini,内容如下:

[uwsgi]
module = run:app
master = true
processes = 3
threads = 2

chdir = /www/wwwroot/HelloWorld

wsgi-file= /www/wwwroot/HelloWorld/run.py

logto = /www/wwwroot/HelloWorld/logs/error.log
chmod-socket = 660
vacuum = true
master = true
max-requests = 1000
socket = 127.0.0.1:5000

把文件的后缀名改成 .ini

如果有域名绑定,在域名绑定后,把 app.pyrun.pyuwsgi.ini这三个文件复制到 /www/wwwroot/www.[我的域名].xyz这个路径下,Flask项目上传完成。

四、启动uwsgi

在面板SSH用以下命令启动uwsgi。

uwsgi --ini /www/wwwroot/HelloWorld/uwsgi.ini &

启动的状态可以用进程查看 netstat -anp|grep 5000,也可以在日志里查看,我推荐查看启动日志,不论是项目的问题还是启动的状态日志都写得一清二楚,日志查看请参考 uwsgi.ini这个配置文件的 logto的路径。启动一次日志截图如下:(一般启动有问题,问题都会在 *** Operational MODE: preforking+threaded ***下面进行说明,你根据它的error提示进行修改,再重新启动uwsgi就行)

利用宝塔面板部署云服务器(Flask+uwsgi)
关闭uwsgi的命令是 pkill -f uwsgi -9
到这一步,如果你输入服务器的公网ip,就能看到 Hello World出现了。

五、 域名绑定

利用宝塔面板部署云服务器(Flask+uwsgi)
宝塔面板点开”网站”,然后创建站点(这一步相当于在服务器端绑定域名,同时在域名处也需要绑定服务器,双向绑定才能用域名打开服务器部署的项目。站点需要在域名购买的地方进行解析,一般是在域名管理处)
利用宝塔面板部署云服务器(Flask+uwsgi)
域名解析详细内容,一般会有帮助,这里不详述了。

(创建站点后,会自动生成一个网站目录, /www/wwwroot/www.[域名].xyz

修改nginx,在网站设置的配置文件中的这个位置添加这一段

location / {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:5000;
    }

uwsgi_pass后面的地址一定要跟uwsgi.ini配置文件里的socket地址一致

利用宝塔面板部署云服务器(Flask+uwsgi)
解析完成后,可以用域名显示HelloWorld,就OK了。
利用宝塔面板部署云服务器(Flask+uwsgi)

这是个人(小白)经验总结帖,表述不合理的地方敬请(大佬)指正。

参考:
利用宝塔搭建nginx+uwsgi+flask的web服务器(阿里云centos_7系统)
宝塔python项目管理器_宝塔python项目管理器部署flask笔记

Original: https://blog.csdn.net/m0_46182627/article/details/115443372
Author: TheShy:)
Title: 利用宝塔面板部署云服务器(Flask+uwsgi)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/749525/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球