一、安装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
安装虚拟环境
-
安装
virtualenv
和virtualenvwrapper
pip3 install virtualenv pip3 install virtualenvwrapper
在安装
virtualenvwrapper
过程中遇到了一个Error,一开始这个错误直接导致安装失败,后面用rm -rf /usr/bin/python
和ln -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.
-
修改虚拟环境的配置为Python3
vim /usr/local/python3/bin/virtualenvwrapper.sh
修改如下:
-
修改bashrc配置文件
vim ~/.bashrc
在末行添加以下内容:
执行以下命令使得对.bashrc
配置文件的修改有效source ~/.bashrc
-
增加虚拟环境的软链接
cd /usr/bin/ ls -al |grep virtualenv cd /usr/local/python3/bin/ ln virtualenv /usr/bin/virtualenv
-
创建虚拟环境实例
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 uwsgi
,pip 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.py
、run.py
、uwsgi.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笔记