华为云HECS(云耀云服务器)部署Python项目

一、云服务器基本配置

1、注册华为云账号,完成实名认证。

2、首先,利用新用户优惠,购买了一年的HECS(2vCPUs | 4GiB | 带宽 2 Mbit/s,Huawei Cloud EulerOS 2.0

华为云HECS(云耀云服务器)部署Python项目_第1张图片

3、首次使用需要重置密码(即root账号的密码)并重启

华为云HECS(云耀云服务器)部署Python项目_第2张图片

4、通过SSH工具远程登录(linux的密码输入不显示,输入完直接回车即可)

(工具:MobaXterm_Personal_22.1,通过SSH建立session)

华为云HECS(云耀云服务器)部署Python项目_第3张图片

5、不建议按照提示执行sh脚本,因为会限制权限,非常不利于后期的操作。但可以考虑清空/etc/motd文件。

注册新用户:(注:user_name可替换为自己设置的用户名)

useradd user_name
passwd user_name
华为云HECS(云耀云服务器)部署Python项目_第4张图片

6、根据官方提示,执行命令,安装Agent,便于监控。

华为云HECS(云耀云服务器)部署Python项目_第5张图片

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)

华为云HECS(云耀云服务器)部署Python项目_第6张图片

2、执行一键部署

在other目录下,执行一键部署脚本:

sh Miniconda3-latest-Linux-x86_64.sh

然后是一个会打印license协议内容,回车即可;接受yes。

选择安装目录,默认为用户目录下(即/home/user_name/miniconda3,也可依据自身要求根据提示进行修改),然后安装,再输入yes初始化conda。

华为云HECS(云耀云服务器)部署Python项目_第7张图片

3、修改终端设置

断开终端,再次进入,发现默认激活的是伪终端,会在 [] 的前面带有 (base)。执行:

conda config --set auto_activate_base false

再次连接时,默认终端没有就不是伪终端 (base) 了。

华为云HECS(云耀云服务器)部署Python项目_第8张图片

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/
华为云HECS(云耀云服务器)部署Python项目_第9张图片

至此,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文件。

华为云HECS(云耀云服务器)部署Python项目_第10张图片

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”的虚拟环境。

华为云HECS(云耀云服务器)部署Python项目_第11张图片

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
华为云HECS(云耀云服务器)部署Python项目_第12张图片

至此,所需基于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
华为云HECS(云耀云服务器)部署Python项目_第13张图片

2、运行部署程序

在项目目录下、虚拟环境中,运行主程序:

python app_main.py

注意:需要打开云服务器控制台相应的端口,比如我使用的是8080,就需要在“控制台-安全组”设置入方向规则,添加放行“TCP:8080”。

华为云HECS(云耀云服务器)部署Python项目_第14张图片

此时,便可以通过在浏览器输入“http://公网IP:端口号/”访问部署的网页。

华为云HECS(云耀云服务器)部署Python项目_第15张图片

一般使用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”。

华为云HECS(云耀云服务器)部署Python项目_第16张图片

(2)常用操作

上一级目录、下载、上传、刷新、新建文件夹、新建文件、删除所选文件等。

右键菜单,“Copy”复制,“Paste”粘贴。

3、使用matplotlib缺失中文字体(服务器配置中文字体)

问题描述:在linux服务器中,可能没有中文字体,导致在云服务器中生成的图片,中文字体变成“□”而无法正常显示。同时,Python报错:

UserWarning: Glyph 24230 (\N{CJK UNIFIED IDEOGRAPH-5EA6}) missing from current font.
华为云HECS(云耀云服务器)部署Python项目_第17张图片

要查看系统中已经安装的字体,我们可以使用fc-list命令进行查看。如果系统中没有该命令的话,我们需要先安装相关的软件包。

(1)在root账户下,使用如下命令进行安装:

yum install -y fontconfig mkfontscale
华为云HECS(云耀云服务器)部署Python项目_第18张图片

可以发现,在安装完成后,出现了“/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”。

华为云HECS(云耀云服务器)部署Python项目_第19张图片

(4)修改字体文件权限,使所有用户可以使用

cd /usr/share/fonts/
sudo chmod -R 755 zh_fonts

并建立字体索引,更新缓存

mkfontscale
mkfontdir
fc-cache -fv

查看字体情况

fc-list :lang=zh
华为云HECS(云耀云服务器)部署Python项目_第20张图片

(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的缓存目录)

华为云HECS(云耀云服务器)部署Python项目_第21张图片
华为云HECS(云耀云服务器)部署Python项目_第22张图片

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/"

即可。

你可能感兴趣的:(服务器,服务器,华为云,运维)