华为云HECS(云耀云服务器)部署Python项目
一、云服务器基本配置
1、注册华为云账号,完成实名认证。
2、首先,利用新用户优惠,购买了一年的HECS(2vCPUs | 4GiB | 带宽 2 Mbit/s,Huawei Cloud EulerOS 2.0)
3、首次使用需要重置密码(即root账号的密码)并重启
4、通过SSH工具远程登录(linux的密码输入不显示,输入完直接回车即可)
(工具:MobaXterm_Personal_22.1,通过SSH建立session)
5、不建议按照提示执行sh脚本,因为会限制权限,非常不利于后期的操作。但可以考虑清空/etc/motd文件。
注册新用户:(注:user_name可替换为自己设置的用户名)
useradd user_name
passwd user_name
6、根据官方提示,执行命令,安装Agent,便于监控。
7、断开链接,重新用管理员账户登录。
使用下列命令查看系统信息
cat /proc/version
至此,云服务器的基本配置已完成。
二、环境搭建
(一)conda环境
1、上传安装脚本
在https://docs.conda.io/en/latest/miniconda.html选择合适的版本,笔者选择Miniconda3-latest-Linux-x86_64.sh,下载到本机。
选择miniconda是因为我们只需要最基本的conda环境即可,而Anaconda包含大量科学包与软件,但在生产环境中并不重要,因为是直接从开发环境进行迁移部署。
在普通用户目录(/home/user_name)下,执行
mkdir -p downfile/other
建立两级文件夹,来存放上传的文件。
将sh文件上传到新建的目录下。(通过MobaXterm的可视化按钮Upload)
2、执行一键部署
在other目录下,执行一键部署脚本:
sh Miniconda3-latest-Linux-x86_64.sh
然后是一个会打印license协议内容,回车即可;接受yes。
选择安装目录,默认为用户目录下(即/home/user_name/miniconda3,也可依据自身要求根据提示进行修改),然后安装,再输入yes初始化conda。
3、修改终端设置
断开终端,再次进入,发现默认激活的是伪终端,会在 [] 的前面带有 (base)。执行:
conda config --set auto_activate_base false
再次连接时,默认终端没有就不是伪终端 (base) 了。
4、调试conda环境
执行下列命令,进入conda环境,即伪终端 (base) 。
conda activate
查看conda版本和Python版本:
conda -V
python -V
输出版本号则安装并运行成功。
conda可以切换国内镜像源:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
至此,miniconda安装完成。
(二)Python环境
0、环境迁移说明
环境迁移可大致分为以下几种情况:
序号 |
工具 |
文件 |
特点 |
1 |
pip |
requirements.txt |
涵盖范围全 |
2 |
conda |
requirements.txt |
使用conda下载的包 |
3 |
conda |
environment.yml |
不针对特定操作系统,包含使用conda和使用pip安装的软件包 |
4 |
conda-pack |
XXX.tar.gz |
离线迁移环境,直接打包环境 |
5 |
pip |
requirements.txt 相关的离线包 |
离线迁移环境,使用离线安装包进行安装 |
在开发时,使用pip与conda下载的包不同,容易造成环境混乱。
典型代表为,当使用第4种方法迁移环境时,会发生缺少使用pip下载的包的情况,故在离线安装下推荐第5种方法。
由于本次环境迁移在联网的云服务器进行,故采用第1种方法。
1、本机环境打包
将本机上的环境进行打包,导出requirements.txt文件。
在本机通过cd命令到一个文件夹下:
cd /d C:\Users\悠逸\Desktop\演示
然后进入开发使用的conda环境(pywebio),使用pip,在工作目录下生成当前conda环境的requirements.txt文件。
activate pywebio
pip freeze > requirements.txt
然后在“演示”文件夹下,生成requirements.txt文件。
2、建立虚拟环境
在普通用户目录(/home/user_name)下建立两级文件夹(/python_env/subject_name)来存放项目文件,将requirements.txt文件上传到该目录下。(subject_name一般为为项目名称)
执行:
conda create --name py39_som python=3.9
加载完后输入“y”确认,建立以Python3.9为基础的名为“py39_som”的虚拟环境。
3、安装Package
执行命令,进入虚拟环境:
conda activate py39_som
执行命令,进入项目目录:
cd /home/user_name/python_env/subject_name/
可以先将pip换源,否则可能由于网速原因安装第三方包失败:
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
执行命令,安装Python包:
pip install -r requirements.txt
稍等片刻,安装完毕。
可执行以下命令查看当前已安装的环境信息。
conda list
至此,所需基于conda的Python环境搭建完成。
三、部署项目
1、上传项目文件
将包含py文件和静态文件的项目文件夹“main_app“压缩为”main_app.zip“,通过MobaXterm上传到项目目录(/home/user_name/python_env/subject_name)下,
在项目目录下,解压缩,将所有文件解压到“main_app“文件夹中,
然后进入“main_app“文件夹中,
再进入之前建好的conda环境“py39_som”。
cd /home/you_yi/python_env/subject_name/
unzip main_app.zip
cd ./main_app
conda activate py39_som
2、运行部署程序
在项目目录下、虚拟环境中,运行主程序:
python app_main.py
注意:需要打开云服务器控制台相应的端口,比如我使用的是8080,就需要在“控制台-安全组”设置入方向规则,添加放行“TCP:8080”。
此时,便可以通过在浏览器输入“http://公网IP:端口号/”访问部署的网页。
一般使用nohup启动,在后台运行:(记着进程号,方便后期kill)
nohup python app_main.py
也可以保存程序运行时输出的信息:
nohup python -u xxx.py >xxx.log 2>&1 &
nohup:不断地运行
python :运行python文件
-u:使python不启用缓冲,可以即时看到输出
xxx.log:用来保存程序运行时输出的信息
2>&1 :将错误信息重定向到标准输出
& :代表后台运行
至此,项目部署完毕。
四、拓展
1、conda常用命令
创建指定python版本的环境
conda create --name your_env_name python=3.7
列举当前所有环境
conda env list
进入某个环境
conda activate your_env_name
退出当前环境
conda deactivate
删除某个环境
conda remove --name your_env_name --all
2、MobaXterm常用操作
(1)建立SSH连接
点击“Session”,选择“SSH”,填入IP,点击“OK”。
(2)常用操作
上一级目录、下载、上传、刷新、新建文件夹、新建文件、删除所选文件等。
右键菜单,“Copy”复制,“Paste”粘贴。
3、使用matplotlib缺失中文字体(服务器配置中文字体)
问题描述:在linux服务器中,可能没有中文字体,导致在云服务器中生成的图片,中文字体变成“□”而无法正常显示。同时,Python报错:
UserWarning: Glyph 24230 (\N{CJK UNIFIED IDEOGRAPH-5EA6}) missing from current font.
要查看系统中已经安装的字体,我们可以使用fc-list命令进行查看。如果系统中没有该命令的话,我们需要先安装相关的软件包。
(1)在root账户下,使用如下命令进行安装:
yum install -y fontconfig mkfontscale
可以发现,在安装完成后,出现了“/usr/share/fonts/”与“/usr/share/fontconfig/”文件夹
(2)查看linux已安装字体
fc-list
查看linux已安装中文字体
fc-list :lang=zh
(3)安装中文字体
Windows系统中的ttf字体是可以在Linux上使用的,我们可以使用Windows现成的字库,上传到服务器上,执行相关命令即可。
建立“/usr/share/fonts/zh_fonts”来存放中文字体。
mkdir -p /usr/share/fonts/zh_fonts
通常,“C:\Windows\Fonts”文件夹下存放相关字体,将所需字体(simsun宋体、simhei黑体)上传到新建立的“zh_fonts”。
(4)修改字体文件权限,使所有用户可以使用
cd /usr/share/fonts/
sudo chmod -R 755 zh_fonts
并建立字体索引,更新缓存
mkfontscale
mkfontdir
fc-cache -fv
查看字体情况
fc-list :lang=zh
(5)此时我们会发现matplotlib作出的图中中文依旧无法正常显示。
接下来有几点注意:
首先,root用户无法使用conda命令,因为缺乏环境变量;
其次,matplotlib的缓存目录,位于“/home/you_yi/.cache/”,在用户文件下,而非root用户的“/root/.cache/”下。
所以,这种情况只需删除matplotlib的缓存目录(/home/you_yi/.cache/matplotlib)即可解决。
重新运行Python程序,中文显示正常。(在“/home/you_yi/.cache/”下生成了matplotlib与fontconfig的缓存目录)
4、pyecharts加载慢
默认使用https://assets.pyecharts.org/assets/这个域名下的资源文件,访问慢。
一方面,可以自行根据官方教程(https://pyecharts.org/#/zh-cn/assets_host,“进阶话题-资源引用”部分)搭建本地文件服务器。
另一方面,可以使用国内cdn进行加速:定位安装pyechats的目录“/home/you_yi/miniconda3/envs/py39_som/lib/python3.9/site-packages/pyecharts/”,编辑配置文件globals.py,修改 DEFAULT_HOST 参数为如下:
DEFAULT_HOST = "https://cdn.jsdelivr.net/gh/pyecharts/pyecharts-assets@master/assets/"
即可。
华为云HECS(云耀云服务器)部署Python项目相关推荐
- 腾讯云服务器部署python项目(阿里云通用)
腾讯云服务器宝塔面板部署python项目(阿里云通用) 老师留的一项web作业完成的时候踩了很多坑,所以出个教程,大家一起学习进步. ## 购买云服务器 查看了腾讯云和阿里云的学生服务器的相关活动,为 ...
- 云服务器运行python程序_云服务器部署python项目
发现python的一个识别验证码识别模块 muggle-ocr(https://pypi.org/project/muggle-ocr/) 成功率还是可以的,打算把把部署到云服务器上 这里记录一下部署 ...
- 13.云服务器部署springboot项目
标题: 云服务器实战模拟网站被DDOS攻击?到底应该如何防御? 课程内容:1.云服务器部署项目 被人攻击了怎么办?2.DNS是如何解析域名的?3.一级.二级.三级域名区别4.什么是DNS轮询策略?如何 ...
- 云服务器部署springboot项目
相关概念 物理机器 -----项目 1万 专线(公网的ip---固定ip) 100兆 3万 家用带宽与专线区别? 家用带宽 电信 2000/年 1000兆 上行/下行 不对等 下载1000兆 上 ...
- win系统的阿里云服务器部署IDEASpringBoot项目保姆级教程
win系统的阿里云服务器部署SpringBoot项目保姆级教程 前言 配置阿里云服务器 配置环境 环境配置中的坑 还有别的坑的话,私信我我补充......毕竟配置是最基本的,还想咋样... jar包导 ...
- 阿里云轻量云服务器部署java项目
阿里云轻量云服务器部署java项目 前言:阿里云最新推出了轻量云服务器,说是可以简化配置.看重他是因为带宽明显提升.就继续照着ecs服务器的方式安装了一系列环境.系统是阿里云的Centos7.3.JD ...
- 如何快速在东方通服务器部署web项目
一.安装JDK,配置环境变量 二.TongWeb中间件安装部署 将TongWeb中间件绿色免安装版解压后,在TongWeb根目录下放入许可证license.dat. 注意:TongWeb解压目录不要包 ...
- linux 下部署Python项目
2019-02-18 by 崔斐然 目录 一.启用ROOT账户及密码和ssh 二.安装screen实现不掉线运行程序 三.部署Python项目 四.部署项目环境 五.善后 一.启用ROOT账户及密码 ...
- 【Python】使用Docker部署Python项目
用Docker部署Python项目 0.源码目录 1.编写Dockerfile文件 2.Docker根据Dockerfile文件生成Docker镜像 3.将镜像运行在Docker容器中 众所周知,同一 ...
最新文章
- iOS开发之使用CocoaPods更新第三方出现“target overrides the `OTHER_LDFLAGS`……”问题解决方案
- layer的一种用法,页面多选时用地址传递值过多时,用弹出层画一个form表单,然后通过提交表单传值
- Django实战之增加链接
- Android中开发习惯
- 计算机原理及基础 —— 有符号类型和无符号类型
- hdfs user 连接_通过API访问HDFS
- RocketMQ消息发送之pull和push
- @bzoj - 3238@ [Ahoi2013]差异
- SAP UI5 标准应用的多语言支持 - SAP UI5 运行时语言判定机制
- 内存模型是怎么解决缓存一致性的
- html绘制波形图,JS实现波形图
- 微信小程序云开发教程-WXML入门-基本语法
- MapGIS目录的设置
- MyEclipse配置Tomcat 7
- C语言面试题汇总(持续更)
- matlab如何插入“埃”这个符号
- Wilcoxon符合秩和检验
- 微信公众号、订阅号、服务号、企业号的区别
- 最后采用加权求和的方式得到样本的_论文阅读笔记《Principal characteristic networks for few-shot...
- windy数(数位dp)