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
至此,云服务器的基本配置已完成。
在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)
在other目录下,执行一键部署脚本:
sh Miniconda3-latest-Linux-x86_64.sh
然后是一个会打印license协议内容,回车即可;接受yes。
选择安装目录,默认为用户目录下(即/home/user_name/miniconda3,也可依据自身要求根据提示进行修改),然后安装,再输入yes初始化conda。
断开终端,再次进入,发现默认激活的是伪终端,会在 [] 的前面带有 (base)。执行:
conda config --set auto_activate_base false
再次连接时,默认终端没有就不是伪终端 (base) 了。
执行下列命令,进入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安装完成。
环境迁移可大致分为以下几种情况:
序号 |
工具 |
文件 |
特点 |
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种方法。
将本机上的环境进行打包,导出requirements.txt文件。
在本机通过cd命令到一个文件夹下:
cd /d C:\Users\悠逸\Desktop\演示
然后进入开发使用的conda环境(pywebio),使用pip,在工作目录下生成当前conda环境的requirements.txt文件。
activate pywebio
pip freeze > requirements.txt
然后在“演示”文件夹下,生成requirements.txt文件。
在普通用户目录(/home/user_name)下建立两级文件夹(/python_env/subject_name)来存放项目文件,将requirements.txt文件上传到该目录下。(subject_name一般为为项目名称)
执行:
conda create --name py39_som python=3.9
加载完后输入“y”确认,建立以Python3.9为基础的名为“py39_som”的虚拟环境。
执行命令,进入虚拟环境:
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环境搭建完成。
将包含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
在项目目录下、虚拟环境中,运行主程序:
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 :将错误信息重定向到标准输出
& :代表后台运行
至此,项目部署完毕。
创建指定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
(1)建立SSH连接
点击“Session”,选择“SSH”,填入IP,点击“OK”。
(2)常用操作
上一级目录、下载、上传、刷新、新建文件夹、新建文件、删除所选文件等。
右键菜单,“Copy”复制,“Paste”粘贴。
问题描述:在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的缓存目录)
默认使用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/"
即可。