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

一、安装Python3以及虚拟环境

安装Python3

在这里插入图片描述

# 下载 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
    在这里插入图片描述
    之后再安装可以安装成功了,如下图:
    在这里插入图片描述
    但是安装过程中还是会报这个错,如有大佬烦请帮忙看看原因。
    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.
    
  2. 修改虚拟环境的配置为Python3

    vim /usr/local/python3/bin/virtualenvwrapper.sh
    

    修改如下:
    在这里插入图片描述

  3. 修改bashrc配置文件

    vim ~/.bashrc
    

    在末行添加以下内容:
    在这里插入图片描述
    执行以下命令使得对.bashrc配置文件的修改有效

    source ~/.bashrc
    
  4. 增加虚拟环境的软链接

    cd /usr/bin/
    ls -al |grep virtualenv
    cd /usr/local/python3/bin/
    ln virtualenv /usr/bin/virtualenv
    
  5. 创建虚拟环境实例

    mkvirtualenv -p python3 [虚拟环境实例名字]
    workon	# 查看所有的虚拟环境实例
    deactivate	# 退出当前虚拟环境实例
    workon [虚拟环境实例名字]		# 退出后再进入某个虚拟环境实例
    rmvirtualenv [虚拟环境实例名字]		# 删除某个虚拟环境实例
    

    进入虚拟环境后会出现(虚拟实例名) [root@....],如图:
    在这里插入图片描述

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

Centos安装宝塔面板命令:

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

安装完成之后会出现以下信息:
在这里插入图片描述
打开外网面板地址,是一个登录页面,然后用username和password进行登录。

如果登录不上,有可能是服务器没有放行面板的端口[8888],云服务器可以找到控制台该实例的安全组设置,修改原来的或者新建一组安全组规则,放行该端口,再次尝试登录即可。
放行端口安全组如图
这里是宝塔官方提供的开端口教程,很详细了。
腾讯云服务器: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

宝塔面板登录成功后,会有一个快速部署这四项的选择,当然也可以之后到软件商店手动选择安装
在这里插入图片描述
打开SSH
在这里插入图片描述
安装pip install uwsgipip install flask
在这里插入图片描述

至此,

三、上传Flask项目到服务器

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

from app import app

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

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

[uwsgi]
module = run:app
master = true
processes = 3
threads = 2
# chdir是项目目录,一定要填对!!
chdir = /www/wwwroot/HelloWorld 
# wsgi-file= /www/wwwroot/HelloWorld/app.py
wsgi-file= /www/wwwroot/HelloWorld/run.py
# http = 42.192.77.44:22
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就行)
在这里插入图片描述
关闭uwsgi的命令是pkill -f uwsgi -9
到这一步,如果你输入服务器的公网ip,就能看到Hello World出现了。

五、 域名绑定

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

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

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

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

uwsgi_pass后面的地址一定要跟uwsgi.ini配置文件里的socket地址一致
在这里插入图片描述
解析完成后,可以用域名显示HelloWorld,就OK了。
在这里插入图片描述


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


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

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
【资源说明】 1、基于vue+python+flask+uwsgi+nginx+mysql的外包项目网站项目源码.zip 2、该资源包括项目的全部源码,下载可以直接使用! 3、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 4、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 基于vue+python+flask+uwsgi+nginx+mysql的外包项目网站项目源码.zip 基于vue+python+flask+uwsgi+nginx+mysql的外包项目网站项目源码.zip 基于vue+python+flask+uwsgi+nginx+mysql的外包项目网站项目源码.zip 基于vue+python+flask+uwsgi+nginx+mysql的外包项目网站项目源码.zip 基于vue+python+flask+uwsgi+nginx+mysql的外包项目网站项目源码.zip 基于vue+python+flask+uwsgi+nginx+mysql的外包项目网站项目源码.zip 基于vue+python+flask+uwsgi+nginx+mysql的外包项目网站项目源码.zip 基于vue+python+flask+uwsgi+nginx+mysql的外包项目网站项目源码.zip 基于vue+python+flask+uwsgi+nginx+mysql的外包项目网站项目源码.zip 基于vue+python+flask+uwsgi+nginx+mysql的外包项目网站项目源码.zip 基于vue+python+flask+uwsgi+nginx+mysql的外包项目网站项目源码.zip 基于vue+python+flask+uwsgi+nginx+mysql的外包项目网站项目源码.zip 基于vue+python+flask+uwsgi+nginx+mysql的外包项目网站项目源码.zip 基于vue+python+flask+uwsgi+nginx+mysql的外包项目网站项目源码.zip 基于vue+python+flask+uwsgi+nginx+mysql的外包项目网站项目源码.zip 基于vue+python+flask+uwsgi+nginx+mysql的外包项目网站项目源码.zip 基于vue+python+flask+uwsgi+nginx+mysql的外包项目网站项目源码.zip 基于vue+python+flask+uwsgi+nginx+mysql的外包项目网站项目源码.zip 基于vue+python+flask+uwsgi+nginx+mysql的外包项目网站项目源码.zip 基于vue+python+flask+uwsgi+nginx+mysql的外包项目网站项目源码.zip 基于vue+python+flask+uwsgi+nginx+mysql的外包项目网站项目源码.zip 基于vue+python+flask+uwsgi+nginx+mysql的外包项目网站项目源码.zip 基于vue+python+flask+uwsgi+nginx+mysql的外包项目网站项目源码.zip 基于vue+python+flask+uwsgi+nginx+mysql的外包项目网站项目源码.zip 基于vue+python+flask+uwsgi+nginx+mysql的外包项目网站项目源码.zip 基于vue+python+flask+uwsgi+nginx+mysql的外包项目网站项目源码.zip 基于vue+python+flask+uwsgi+nginx+mysql的外包项目网站项目源码.zip 基于vue+python+flask+uwsgi+nginx+mysql的外包项目网站项目源码.zip 基于vue+python+flask+uwsgi+nginx+mysql的外包项目网站项目源码.zip 基于vue+python+flask+uwsgi+nginx+mysql的外包项目网站项目源码.zip
Flask是一个基于Python的轻量级Web框架,它提供了简单易用的工具来构建Web应用程序。Flask具有灵活的设计,可以根据需求进行扩展和定制。它支持RESTful风格的API开发,并且具有良好的可扩展性,适用于开发小型到中型的Web应用。 uWSGI是一个Web服务器和应用服务器,它可以将Web应用程序从框架中分离出来,并通过WSGI协议与框架进行通信。它支持高并发和负载均衡,并且具有内置的缓存机制和性能监控。uWSGIFlask配合使用可以提高Web应用程序的性能和稳定性。 Nginx是一个高性能的开源HTTP服务器和反向代理服务器。它可以处理大量并发连接,并能有效地分发请求到后端服务器。Nginx的反向代理功能可以将请求转发给uWSGI服务器,然后由uWSGI服务器处理Flask应用程序的逻辑。 使用FlaskuWSGI和Nginx的组合可以实现一个高性能的Web应用程序架构。首先,Flask用于开发Web应用程序的逻辑和路由。然后,uWSGI作为应用程序服务器,将Flask应用程序加载到内存中,并以WSGI协议与Nginx进行通信。最后,Nginx作为前端服务器,通过负载均衡和反向代理将请求分发到uWSGI服务器。 这种架构可以提供高并发、可扩展和稳定的Web应用程序。Flask提供了优雅的开发方式,uWSGI处理应用程序的逻辑和性能优化,而Nginx作为前端服务器提供高性能的负载均衡和反向代理。整个架构可以根据需求进行灵活的配置和扩展,以满足不同规模的Web应用程序的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值