佛系程序员
首页
栏目
标签
归档
关于
友链
佛系程序员
首页
栏目
标签
归档
友链
关于
阿里云服务器命令行部署python项目xinli 网站全过程
学习笔记
网站开发
发布日期: 2025-06-02 17:14:11
喜欢量: 7 个
阅读次数:
107
本文介绍了,服务器上安装python 虚拟环境,并用nohup不挂断运行python项目
阿里云服务器安装的是宝塔面板,但这一次我用终端命令行部署python项目xinli 网站,以下是全过程记录: 先git clone 代码, ```bash [root@yyii wwwroot]# git clone <your project git address>``` ## 方法一:用命令运行 ### 查看目前python版本 ```bash [root@yyii blog]# pip3 --version pip 9.0.3 from /usr/lib/python3.6/site-packages (python 3.6) [root@yyii blog]# python3 --version Python 3.6.8``` ### 安装python3.11 ```bash [root@yyii blog]# yum install python3.11 [root@yyii blog]# python3.11 --version Python 3.11.11``` ### 创建虚拟环境 ```bash [root@yyii blog]# python3.11 -m venv myenv``` ### 激活虚拟环境 ```bash [root@yyii blog]# source myenv/bin/activate (myenv) [root@yyii blog]# pip --version pip 22.3.1 from /www/wwwroot/xinli.xiuxinwenhua.com/blog/myenv/lib64/python3.11/site-packages/pip (python 3.11)``` ### 安装依赖 ```bash [root@yyii blog]# pip install -r requirements.txt``` ### 错误处理 安装时出现一个报错: 错误提示表明在安装某个需要 mysqlclient 库的 Python 包时,系统无法找到有效的 pkg - config 名称的错误。 由于服务器没有安装mysql, 项目在线上连接的是阿里云RDS,项目代码里除了 requirements.txt 中有mysqlclient外,其他地方并无,而且项目依赖中有pymysql,所以果断删除requirements.txt中的mysqlclient,再重新安装。 ```bash [root@yyii blog]# pip install -r requirements.txt``` ### 运行项目 ```bash (myenv) [root@yyii blog]# nohup python main.py& (myenv) [root@yyii blog]# vi nohup.out``` ### 错误处理 出现报错: ```bash No module named 'pytz' No module named ‘flask’``` 则 pip install pytz ```bash (myenv) [root@yyii blog]# pip install flask``` 正确解决办法,应该把这两个,加入到requirements.txt ### 运行正常 最后,当看到: ```bash INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) INFO: Started reloader process [1148332] using StatReload ...... INFO: Started server process [1148345] INFO: Waiting for application startup. INFO: Application startup complete.``` 就表示成功了。 上面INFO已经表示:在 8000 端口运行起来了。 ### 再次检查确认 ```bash (myenv) [root@yyii blog]# lsof -i:8000 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME python 1148332 root 4u IPv4 27787646 0t0 TCP localhost:personal-agent (LISTEN) python 1148345 root 4u IPv4 27787646 0t0 TCP localhost:personal-agent (LISTEN)``` 发现有两个进程,说明重复了一个,可以删掉一个。 ```bash [root@yyii ~]# kill -9 1148332 [root@yyii ~]# lsof -i:8000 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME python 1148345 root 4u IPv4 27787646 0t0 TCP localhost:personal-agent (LISTEN)``` ### 安全组开放端口 阿里云安全组规则,添加 8000, ### 设置反向代理 设置反向代理,使用一个域名 xinli.xiuxinwenhua.com,目标填写:http://127.0.0.1:8000 ### 浏览器输入域名 正常打开。 ### 部署SSL 证书 申请证书 ### 浏览器输入 ```https://域名``` 最后:```https://xinli.xiuxinwenhua.com``` 也可以正常打开了。 ### 后续,统一管理虚拟环境 我又发现,虚拟环境创建在项目下, 于是为了统一管理,我想虚拟环境从项目目录移动到 ~/.virtualenvs , 网站已经运行起来的情况下,移动 myenv 虚拟环境可能会产生影响。 #### 具体操作如下: 先停止,停止网站运行, kill 命令终止进程。 /www/wwwroot/xinli.xiuxinwenhua.com/blog 下,移动,myenv,mv myenv ~/.virtualenvs 再激活虚拟环境,source ~/.virtualenvs/myenv/bin/activate 此时,再检查:```python3.11 --version, pip3.11 --version``` ```bash (myenv) [root@yyii blog]# python3.11 --version Python 3.11.11 (myenv) [root@yyii blog]# pip3.11 --version pip 22.3.1 from /usr/local/lib/python3.11/site-packages/pip (python 3.11)``` 这种情况下,再 ```bash (myenv) [root@yyii blog]# nohup python3.11 main.py&``` 方法二,用python项目管理器面板(另一个服务器的设置为例) 如图: 
文章作者:
yyii
文章链接:
https://www.amtb.info/show/MjI2
版权声明:
本博客所有文章除特別声明外,转载请注明来源
佛系程序员
!
分享:
搜索