部署的是flask项目,但是是一个很小的项目,功能很少,所以没有用nginx这些
项目依赖
查看python版本:
python --version
python3 --version
python2和python3都有了
Python是2.7.18
Python3是3.7.9
再检查pip版本:
pip --version
pip3 --version
结果是未找到命令
然后使用yum安装:
yum update
yum install python3-pip
同时装了pip和pip3似乎会有些问题,所以只装pip3
安装完成后检查pip3版本:
pip3 --version
安装成功的话就会显示:
pip 23.1.2 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)
这里pip是python3的,说明是pip3
然后升级一下pip3的版本:
pip3 install --upgrade pip
因为之后要用pip安装包,所以要更换一下镜像源:
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
然后pip安装依赖包
我是用的requirements.txt记录所需的包
requirements.txt的用法:
在宿主机上
pip freeze > requirements.txt
pip freeze是查看项目使用了哪些包,这个命令是把使用的包写到txt里
在服务器上
pip3 install -r requirements.txt
这就是根据txt安装依赖包
pip安装时显示部分包需要3.8版本及以上的python
那就需要下一个高版本的python
先到https://www.python.org/ftp/python看一下有哪些版本
我这边选择跟我宿主机一样的版本
cd /usr/src
wget https://www.python.org/ftp/python/3.11.2/Python-3.11.2.tgz
tar -zxvf Python-3.11.2.tgz
cd Python-3.11.2/
./configure
make
make install
全部执行完
这样就安装完成了
再看一下python3的版本:
python3 --version
得到的就是Python 3.11.2
然后我们重新pip安装
pip3 install -r requirements.txt
就能把所有依赖包都安装好了
然后尝试运行python项目
python3 app.py
项目正常起来了,访问网页各项功能都正常
网络设置
然后尝试在宿主机上访问网页
我已经设置监听0.0.0.0的80端口,按理说我访问虚拟机ip就能打开网页,但是不行
先测试网络通不通
宿主机和虚拟机互ping,是可以ping通的
然后在宿主机和虚拟机各自启动flask,使用curl互相访问,发现虚拟机可以curl宿主机,但是宿主机不能curl虚拟机,猜测是虚拟机的防火墙问题。
开启80端口,然后重启防火墙
firewall-cmd --add-port=80/tcp --permanent
sudo firewall-cmd --reload
发现宿主机已经可以正常访问了
设置计划任务
计划任务建议写绝对路径
python的绝对路径获取方法
首先
python3
进入python环境
然后输入
>>> import sys
>>> sys.executable
就会打印python的绝对路径
我的python路径是/usr/local/bin/python3
打开用户的计划任务文件
crontab -e添加计划任务
0 09 * * * /usr/local/bin/python3 /srv/delay/app.py
每天9点运行py文件
也可以用脚本
vim run.sh
然后在run.sh里写
/usr/local/bin/python3 /srv/delay/app.py
要运行就./run.sh