• [技术干货] 【开发者空间实践指导】搭建可自动伸缩的Discuz!论坛网站
    一、 案例介绍Discuz!论坛是全球成熟度最高、覆盖率最大的论坛软件系统之一。用户对论坛的访问可分为高峰期和平峰期,若论坛采用多服务器部署模式且满足高峰时期的负载需求,平峰期必有部分服务器处于闲置状态,增加了不必要的成本,也造成了资源浪费。AS弹性伸缩服务可帮助用户解决以上问题。当用户在论坛的服务器系统中应用弹性伸缩后,弹性伸缩可以根据用户设定的策略,自动地增加或减少服务器的数量,即可以在保证网站正常运转的同时节约成本。本实践以搭建可自动伸缩的Discuz!论坛为例,介绍了如何使用弹性伸缩服务搭建一个可自动增加或减少弹性云服务器数量的Web服务。二、 免费领取云主机如您还没有云主机,可点击链接,根据领取指南进行操作。如您已领取云主机,可直接开始实验。三、 实验流程说明:华为云上搭建Discuz项目,初始web服务器为一台ECS资源;在AS弹性伸缩服务配置弹性伸缩策略并监控Discuz项目的web服务器;触发伸缩策略的增加/缩减服务器场景,使资源自动伸缩增加一台;两种场景下用户均可通过ELB正常访问到Discuz论坛网站。四、实验资源本次实验花费总计为10.8元,资源采取按需计费,体验结束后,请及时释放资源,避免产生多余费用,给您带来不便。云资源消耗/时时长弹性云服务器ECS X30.6876元/小时2负载均衡ELB0.383元/小时2弹性公网IP0.083元/小时2虚拟私有云VPC免费2网络安全组免费2云备份 CBR0.168元/小时2五、 资源配置与购买5.1 配置虚拟私有云VPC在浏览器中输入华为云网址:cid:link_2进入华为云首页。在华为云的首页右上方,点击“登录”,在弹出的对话框中输入自己的用户名和密码。在华为云首页,在搜索框中输入“虚拟私有云 VPC”,点击“控制台”进入虚拟私有云控制台页面。选择“北京四”,点击右上角的“创建虚拟私有云”按钮,进入创建虚拟私有云页面,按照下图配置完成虚拟私有云的创建。参考以下配置进行VPC的配置。区域华北-北京四名称vpc-DISCUZ(可自定义)企业项目default(可选择自己的其他项目,无则不填写)子网名称vpc-test(可自定义)可用区可用区15.2 配置弹性公网IP EIP浏览器切换到华为云主页,在搜索框中输入“弹性公网IP EIP”,单击下方的“控制台”进入弹性公网IP服务页面。点击右上角的“购买弹性公网IP”按钮,进行弹性公网IP的购买。参考以下配置完成弹性公网IP创建。计费模式按需计费区域华北-北京四线路全动态BPG公网带宽按带宽计费带宽大小1带宽名称自定义弹性公网IP名称discuz_ip(可自定义)企业项目default(可选择自己的其他项目,无则不填写)5.3 配置安全组点击“网络控制台”左侧菜单栏的“安全组”,点击右上角“创建安全组”来创建安全组并添加规则。参考以下配置完成安全组的创建。区域华北-北京四名称sg-DISCUZ(可自定义)企业项目default(可选择自己的其他项目,无则不填写)入方向规则22,3389,80,443,80805.4 购买ECS云主机浏览器切换到华为云主页,在搜索框中输入“弹性云服务器 ECS”点击进入弹性云服务页面。点击左上角的“购买弹性云服务器”。参考下列配置进行弹性云服务器ecs-DISCUZ01的购买。计费模式按需计费区域华北-北京四可用区可用区1CPU架构X86计算实例规格1vCPUs 4GiB(或者其他相似或以上规格)镜像公共镜像-CentOS-centOS7.6(本实验是基于Centos系统实现的,如因Centos下线停止更新导致对后续实验环境有要求的用户可以参考Centos停止维护解决方案 解决。存储与备份系统盘:高IO-40GiB数据盘:新增-高IO-500GiB-数量1-磁盘随实例释放虚拟私有云vpc-DISCUZ主网卡vpc-test安全组sg-DISCUZ弹性公网IP使用已有云服务器名称ecs-DISCUZ01(可自定义)登录凭证密码密码自定义企业项目default(可选择自己的其他项目,无则不填写)购买完ecs-DISCUZ01后,在弹性云服务器ECS列表页面,点击ecs-DISCUZ01后面的“更多”,选择“购买相同配置”。与ecs-DISCUZ01不同的是需要修改两处配置:1、弹性公网配置选择“暂不购买”。2、云服务器名称改为ecs-DISCUZ02,并设置登陆密码。配置完后点击立即购买即完成ecs-DISCUZ02资源的购买。5.5 配置弹性负载均衡ELB浏览器切换到华为云主页,在搜索框中输入“弹性负载均衡 ELB”,点击“控制台”跳转到弹性负载均衡ELB页面。点击右上角的“购买弹性负载均衡”按钮进行弹性负载均衡的购买配置。按照如下规格购买:实例类型共享型计费模式按需计费区域华北-北京四名称elb-discuz(可自定义)企业项目default(可选择自己的其他项目,无则不填写)所属VPCvpc-DISCUZ前端子网vpc-testIPv4地址自动分配IP地址弹性公网IP现在购买线路全动态BGP公网带宽按带宽计费带宽大小1点击“立即购买”后完成弹性负载均衡的配置购买。点击刚刚创建的ELB“elb-discuz”进入详情页面,然后点击右上角的“创建后端服务器组”。配置后端分配策略,然后点击下一步。名称server_group-discuz后端协议HTTP分配策略类型加权轮询算法添加后端服务器,服务器部署的服务端口为80,权重为1,然后点击“添加云服务器”按钮。将ECS服务器“ecs-DISCUZ02”选中,点击“确认”。配置业务端口为80,权重为1,点击下一步。确认信息无误后,点击“立即创建”。后端服务器组创建完毕。六、DISCUZ!网站搭建6.1 搭建数据库1、在搜索框中输入“弹性云服务器 ECS”点击进入弹性云服务页面,点击ecs-DISCUZ01服务器后面的“远程登录”远程登录云服务器ecs-DISCUZ01。弹出框下滑选择VNC方式页面登录服务器。填写用户名:root,回车,密码:购买ecs时设置的密码,回车,即可登录。2、依次在控制台中执行以下命令,安装MySQL并启动MySQL服务。wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpmyum -y install mysql57-community-release-el7-10.noarch.rpmyum -y install mysql-community-server --nogpgchecksystemctl start mysqldsystemctl enable mysqld3、查看MySQL运行状态。systemctl status mysqld.service4、执行以下命令,获取安装MySQL时自动设置的root用户密码,记录好,后面使用。grep 'temporary password' /var/log/mysqld.log5、执行以下命令,并按照下图回显提示信息进行操作,加固MySQL。mysql_secure_installation6、执行以下命令,再根据提示输入数据库管理员root账号的密码进入数据库。mysql -u root -p7、执行以下命令,使用MySQL数据库。use mysql;8、执行以下命令,查看用户列表。select host,user from user;9、执行以下命令,刷新用户列表并允许所有IP对数据库进行访问。update user set host='%' where user='root' LIMIT 1;10、执行以下命令,强制刷新权限。允许同一子网中设置为允许访问的云服务器通过私有IP对MySQL数据库进行访问。flush privileges;11、执行以下命令,退出数据库。quit12、执行以下命令,重启MySQL服务。systemctl restart mysqld13、执行以下命令,设置开机自动启动MySQL服务。systemctl enable mysqld14、执行以下命令,关闭防火墙。systemctl stop firewalld.service15、重新查看防火墙状态是否为关闭。systemctl status firewalld6.2 搭建web环境1、将弹性公网IP从云服务器ecs-DISCUZ01上解绑,并绑定至云服务器ecs-DISCUZ02上。点击“ecs-DISCUZ01”,进入ecs-DISCUZ01详情页。切换到“弹性公网IP”页面,点击“解绑”。解绑成功后,点击“ecs-DISCUZ02”,进入ecs-DISCUZ02详情页,同样切换到“弹性公网IP”页面,点击“绑定”,将discuz_ip绑定到ecs-DISCUZ02。2、参考远程登录云服务器ecs-DISCUZ01方式,远程登录云服务器ecs-DISCUZ02;3、安装Web环境:依次执行以下命令,安装MySQL。wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpmyum -y install mysql57-community-release-el7-10.noarch.rpmyum -y install mysql-community-server --nogpgcheck4、执行以下命令,安装Apache服务器、PHPFastCGI管理器、MySQL客户端和MySQL数据库服务器。yum install epel-releaserpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpmyum -y install php74-php-devel php74-php.x86_64 php74-php-cli.x86_64 php74-php-common.x86_64 php74-php-gd.x86_64 php74-php-ldap.x86_64 php74-php-mbstring.x86_64 php74-php-mcrypt.x86_64 php74-php-pdo.x86_64 php74-php-mysqlnd php74-php-fpm php74-php-opcache php74-php-pecl-redis php74-php-pecl-mongodb php74-php-xml httpd mysql mysql-server回显如下,说明安装成功。Complete!5、配置Web环境:执行以下命令,启动httpd服务service httpd start6、执行以下命令,设置开机自动启动httpd服务。chkconfig httpd on7、执行以下命令,启动php-fpm服务。service php74-php-fpm start8、执行以下命令,设置开机自动启动php-fpm服务。chkconfig php74-php-fpm on9、执行以下命令,关闭防火墙。systemctl stop firewalld.service10、执行以下命令,重新查看防火墙状态是否为关闭。systemctl status firewalld11、执行以下命令,启动MySQL服务。systemctl start mysqld12、执行以下命令,设置开机自动启动MySQL服务。systemctl enable mysqld.service6.3 部署网站代码1、继续在ecs-DISCUZ02服务器上执行以下命令,安装Discuz软件。wget https://gitee.com/Discuz/DiscuzX/releases/download/v3.5-20231001/Discuz_X3.5_SC_UTF8_20231001.zip2、执行以下命令,解压Discuz安装包。unzip Discuz_X3.5_SC_UTF8_20231001.zip3、执行以下命令,将解压后的“upload”文件夹下的所有文件复制到“var/www/html”路径下。cp -r upload/* /var/www/html4、执行以下命令,将写权限赋予给其他用户。chmod -R 777 /var/www/html5、在浏览器里输入地址:http://弹性公网IP地址进入安装界面,按照Discuz安装向导进行安装。a.确认协议,并单击“我同意”。b.开始安装后,检查安装环境并单击“下一步”。c.设置运行环境,并单击“下一步”。d. 安装数据库,填写数据库信息,单击“下一步”完成安装。①数据库服务器地址即为ecs-DISCUZ01的私有IP地址。②数据库密码是ecs-DISCUZ01配置的数据库管理员root账号的密码。自定义管理员信息。6.4 验证搭建结果1、在浏览器中输入:http://弹性公网IP地址/forum.php 可登录论坛主页则说明网站搭建成功。2、后台管理页面:http://弹性公网IP地址/admin.php七、AS弹性伸缩扩容缩容验证7.1 创建伸缩配置浏览器切换到华为云主页,控制台输入“弹性伸缩 AS”,点击控制台进入弹性伸缩服务首页。点击右上角“创建伸缩配置”。参考下列截图配置进行伸缩配置创建。计费模式按需计费区域华北-北京四名称as-config-discuz(可自定义)配置模板使用新模板cpu架构x86计算规格1vCPUs 2GiB(可购买其他相同或者更高规格的配置)镜像ecs-discuz私有镜像参考创建私有镜像步骤创建磁盘云硬盘:系统盘:高,IO-100GiB数据盘:高IO-100GiB安全组sg-DISCUZ弹性公网IP不使用登录方式密码密码自定义伸缩配置参数配置完成后,单击“立即创建”。7.2 创建弹性伸缩组在“弹性伸缩 AS”主页右上角,单击“创建弹性伸缩组”。参考下列截图配置进行弹性伸缩组创建。区域华北-北京四可用区可用区1, 可用区2, 可用区3, 可用区7多可用区扩展策略均衡分布名称as-group-discuz(可自定义)最大实例数(台)50期望实例数(台)0最小实例数(台)0伸缩配置as-config-discuz虚拟私有云vpc-DISCUZ子网vpc-test负载均衡使用弹性负载均衡负载均衡器:elb-discuz后端云服务器组:server_group-discuz后端端口:80权重:1IP协议版本:IPv4实例移除策略根据较早创建的配置较早创建的实例弹性公网IP释放数据盘删除健康检查方式负载均衡健康检查健康检查间隔5分钟健康状况检查宽限期(秒)600企业项目default(可选择自己的其他项目,无则不填写)弹性伸缩组参数配置完成后,单击“立即创建”返回弹性伸缩组列表,若伸缩组为“已启用”状态,说明伸缩组创建成功。7.3 添加伸缩策略在已创建的弹性伸缩组“as-group-discuz”所在行,单击操作列的“查看伸缩策略”。在伸缩策略页面单击“添加伸缩策略”。参考下列截图配置进行弹性策略as-policy-discuz01的创建,即当系统连续3次监控到CPU使用率超过70%时,触发伸缩策略as-policy-discuz01,伸缩组会增加一台弹性云服务器。策略名称as-policy-discuz01策略类型告警策略告警规则现在创建告警规则名称as-alarm-cpu-01监控类型系统监控触发条件CPU使用率—最大值—>--70监控周期5分钟连续出现次数3企业项目default(可选择自己的其他项目,无则不填写)告警策略类型简单策略执行动作增加—1—个实例冷却实践(秒)900点击“确定”进行创建。参考下列截图配置进行弹性策略as-policy-discuz02的创建,即当系统连续3次监控到CPU使用率低于30%时,触发伸缩策略as-policy-discuz02,伸缩组会减少一台弹性云服务器。策略名称as-policy-discuz02策略类型告警策略告警规则现在创建告警规则名称as-alarm-cpu-02监控类型系统监控触发条件CPU使用率—最大值—<--30监控周期5分钟连续出现次数3企业项目default(可选择自己的其他项目,无则不填写)告警策略类型简单策略执行动作减少—1—个实例冷却实践(秒)900点击“确定”进行创建。返回列表查看两个伸缩策略创建完毕并启用。7.4 手动移入待检测主机单击伸缩组as-group-discuz名称进入伸缩组详情页面。切换到“伸缩实例”页签,将ecs-DISCUZ02手动移入伸缩组中。点击“确定”。修改最小实例数。修改最小实例数的目的是为保证ecs-DISCUZ02不被伸缩活动移出伸缩组。单击页面右上角的“修改伸缩组”。修改最小实例数为1,确认。7.5 验证弹性伸缩1、登录http://弹性公网IP地址/admin.php确认discuz论坛可以正常使用。2、控制台输入“弹性云服务器 ECS”跳转弹性云服务器列表,然后登录部署网站的ecs-DISCUZ02机器上。3、构造cpu超过70%场景执行以下命令创建模拟cpu内存占用脚本。vim cpu.sh单击键盘上的“i”键,进入vim的INSERT模式。通过“复制粘贴”按钮将以下代码复制到服务器中。该脚本主要是为了模拟虚拟机内存到达100%的场景,执行脚本后,输入10,则会将虚拟机内存提升至100%,再输入0之后就会停止内存占用。#!/bin/bashread -p "please input a num:(0:stop;10:CPU100%):" numif [ $num -eq 8 ]; thenpkill -9 ddfor i in $(seq 1 $(cat /proc/cpuinfo | grep "physical id" | wc -l | awk '{print $1-1}')); dodd if=/dev/zero of=/dev/null &doneelif [ $num -eq 10 ]; thenpkill -9 ddfor i in $(seq 1 $(cat /proc/cpuinfo | grep "physical id" | wc -l)); dodd if=/dev/zero of=/dev/null &doneelif [ $num -eq 0 ]; thenpkill -9 ddelseecho "input error"fi按“Esc”按键,然后按“Shift+:”,输入“wq”,回车保存脚本。输入“sh cpu.sh”后回车,开始执行脚本。输入“10”,开始模拟内存占用到达100%场景。4、返回云服务器列表,点击服务器边上的“监控”图标,观察ecs机器cpu指标,返回弹性伸缩详情页面,点击监控也可以查看CPU使用情况。5、弹性伸缩详情页面的活动历史标签中可以查看到弹性伸缩已触发的通知。返回云服务器列表也可以查看到新扩容的虚拟机。6、登录http://弹性公网IP地址/admin.php确认discuz论坛是否可以正常使用。7、模拟cpu使用率低于30%,弹性伸缩缩减主机功能。登录ecs-DISCUZ02机器,执行以下命令再次运行脚本。sh cpu.sh输入“0”,回车,将内存占用程序停止。待CPU内存降下来之后,弹性伸缩详情页面的活动历史标签中可以查看到弹性伸缩触发了主机移除策略,新扩容的虚拟机也会被回收8、登录http://弹性公网IP地址/admin.php确认discuz论坛是否可以正常使用。至此基于公有云上可自动伸缩的Discuz!论坛网站搭建完毕。八、Discuz!论坛网站镜像制作步骤8.1 创建云服务器备份存储库控制台搜索“云备份 CBR”,跳转到“云备份”主页,左侧菜单点击“云服务器备份”,进入云服务器备份页面。点击右上角的“购买云服务器备份存储库”,参考下面的配置进行云备份配置。计费模式按需计费区域华北-北京四保护类型备份备份数据冗余单AZ备份选择服务器暂不配置存储库容量600GB自动扩容暂不配置备份策略暂不配置企业项目default(可选择自己的其他项目,无则不填写)存储库名称valut-discuz(自定义)8.2 创建私有镜像登录“云服务器控制台”,点击左侧菜单中的“镜像服务”,点击“私有镜像”,然后单击右上角的“创建私有镜像”参照下列参数进行私有镜像创建区域华北-北京四创建方式创建私有镜像镜像类型整机镜像选择镜像源云服务器云服务器ecs-DISCUZ02(或者自己创建的的discuz资源服务器)云服务器备份存储库valut-discuz(5.1步骤创建)名称ecs-discuz(自定义)企业项目default(可选择自己的其他项目,无则不填写)
  • [技术干货] 【开发者空间实践指导】云主机安装Docker并制作自定义镜像在ModelArts平台做模型训练
    一、 案例介绍在AI业务开发以及运行的过程中,一般都会有复杂的环境依赖需要进行调测并固化。面对开发中的开发环境的脆弱和多轨切换问题,在ModelArts的AI开发最佳实践中,通过容器镜像的方式将运行环境进行固化,以这种方式不仅能够进行依赖管理,而且可以方便的完成工作环境切换。配合ModelArts提供的云化容器资源使用,可以更加快速、高效的进行AI开发与模型实验的迭代等。本案例将指导开发者如何在云主机上安装Docker制作一个自定义模型镜像并在ModelArts平台使用这个镜像作模型训练。二、 免费领取云主机如您还没有云主机,可点击链接,根据领取指南进行操作。如您已领取云主机,可直接开始实验。三、 实验流程说明:在云主机上安装docker;制作模型训练镜像并上传到SWR;在云主机创建训练脚本,使用浏览器打开OBS服务,上传训练脚本;在ModelArts平台创建训练作业完成模型训练。四、实验资源本次实验花费总计为1.1元,资源采取按需计费,体验结束后,请及时释放资源,避免产生多余费用,给您带来不便。资源名称规格单价(元)时长(h)开发者空间-云主机免费版免费1OBS资源包40G1元/月1ModelArts免费体验版免费1五、操作步骤1、在云主机安装Docker进入云主机后,点击左面菜单的“终端”按钮,打开命令行工具。在命令行中输入以下命令安装Docker:curl -fsSL get.docker.com -o get-docker.sh sh get-docker.sh输入命令“sudo docker info” 确认Docker已经安装完毕。接下来需要配置镜像加速,输入命令“vim /etc/docker/daemon.json”编辑docker配置文件,单击“i”键进入插入模式,然后输入以下内容:{"registry-mirrors": [ "https://a3cc4b6f1d0747bda78ca8d86e4c5419.mirror.swr.myhuaweicloud.com" ]}输入完成后,按“Esc”退出插入模式,再输入“:wq”保存文件,再输入“sudo systemctl restart docker”命令重启docker,然后输入命令“sudo docker info”查看,显示如下信息则表示镜像加速配置完成。2、准备制作镜像的必要文件确认安装好Docker以后,在当前目录使用命令“mkdir -p context”创建文件夹使用“cd context/”命令进入context文件夹。使用“vim pip.conf”命令编辑pip源文件pip.conf ,单击“i”键进入插入模式,输入如下内容,确认无误后单击ESC回到命令模式,使用“:wq”命令保存退出。[global]index-url = https://repo.huaweicloud.com/repository/pypi/simpletrusted-host = repo.huaweicloud.comtimeout = 120使用wget命令下载“torch*.whl ”文件,一共三个文件wget https://download.pytorch.org/whl/cu111/torch-1.8.1%2Bcu111-cp37-cp37m-linux_x86_64.whlwget https://download.pytorch.org/whl/torchaudio-0.8.1-cp37-cp37m-linux_x86_64.whlwget cid:link_0使用“wget https://repo.anaconda.com/miniconda/Miniconda3-py37_4.12.0-Linux-x86_64.sh”命令,下载Miniconda3 py37 4.12.0安装文件将上述pip源文件、torch*.whl文件、Miniconda3安装文件放置在context文件夹内,完成上述操作后context文件夹内容如下。context├── Miniconda3-py37_4.12.0-Linux-x86_64.sh├── pip.conf├── torch-1.8.1+cu111-cp37-cp37m-linux_x86_64.whl├── torchaudio-0.8.1-cp37-cp37m-linux_x86_64.whl└── torchvision-0.9.1+cu111-cp37-cp37m-linux_x86_64.whl使用“vim Dockerfile”创建编辑Dockerfile文件,填入以下内容# 容器镜像构建主机需要连通公网# 基础容器镜像, https://github.com/NVIDIA/nvidia-docker/wiki/CUDA# # https://docs.docker.com/develop/develop-images/multistage-build/#use-multi-stage-builds# require Docker Engine >= 17.05## builder stageFROM nvidia/cuda:11.1.1-runtime-ubuntu18.04 AS builder# 基础容器镜像的默认用户已经是 root# USER root# 使用华为开源镜像站提供的 pypi 配置RUN mkdir -p /root/.pip/COPY pip.conf /root/.pip/pip.conf# 复制待安装文件到基础容器镜像中的 /tmp 目录COPY Miniconda3-py37_4.12.0-Linux-x86_64.sh /tmpCOPY torch-1.8.1+cu111-cp37-cp37m-linux_x86_64.whl /tmpCOPY torchvision-0.9.1+cu111-cp37-cp37m-linux_x86_64.whl /tmpCOPY torchaudio-0.8.1-cp37-cp37m-linux_x86_64.whl /tmp# https://conda.io/projects/conda/en/latest/user-guide/install/linux.html#installing-on-linux# 安装 Miniconda3 到基础容器镜像的 /home/ma-user/miniconda3 目录中RUN bash /tmp/Miniconda3-py37_4.12.0-Linux-x86_64.sh -b -p /home/ma-user/miniconda3# 使用 Miniconda3 默认 python 环境 (即 /home/ma-user/miniconda3/bin/pip) 安装 torch*.whlRUN cd /tmp && \ /home/ma-user/miniconda3/bin/pip install --no-cache-dir \ /tmp/torch-1.8.1+cu111-cp37-cp37m-linux_x86_64.whl \ /tmp/torchvision-0.9.1+cu111-cp37-cp37m-linux_x86_64.whl \ /tmp/torchaudio-0.8.1-cp37-cp37m-linux_x86_64.whl# 构建最终容器镜像FROM nvidia/cuda:11.1.1-runtime-ubuntu18.04# 安装 vim和curl 工具(依然使用华为开源镜像站)RUN cp -a /etc/apt/sources.list /etc/apt/sources.list.bak && \ sed -i "s@http://.*archive.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list && \ sed -i "s@http://.*security.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list && \ apt-get update && \ apt-get install -y vim curl && \ apt-get clean && \ mv /etc/apt/sources.list.bak /etc/apt/sources.list# 增加 ma-user 用户 (uid = 1000, gid = 100)# 注意到基础容器镜像已存在 gid = 100 的组,因此 ma-user 用户可直接使用RUN useradd -m -d /home/ma-user -s /bin/bash -g 100 -u 1000 ma-user# 从上述 builder stage 中复制 /home/ma-user/miniconda3 目录到当前容器镜像的同名目录COPY --chown=ma-user:100 --from=builder /home/ma-user/miniconda3 /home/ma-user/miniconda3# 设置容器镜像预置环境变量# 请务必设置 PYTHONUNBUFFERED=1, 以免日志丢失ENV PATH=$PATH:/home/ma-user/miniconda3/bin \ PYTHONUNBUFFERED=1# 设置容器镜像默认用户与工作目录USER ma-userWORKDIR /home/ma-user完成编辑后,按“Esc”键退出编辑模式,输入“:wq”命令保存文件。完成操作后,使用“ll”命令查看context文件夹内容如下context├── Dockerfile ├── Miniconda3-py37_4.12.0-Linux-x86_64.sh ├── pip.conf ├── torch-1.8.1+cu111-cp37-cp37m-linux_x86_64.whl ├── torchaudio-0.8.1-cp37-cp37m-linux_x86_64.whl └── torchvision-0.9.1+cu111-cp37-cp37m-linux_x86_64.whl3、制作镜像并上传SWR在context文件夹下,输入“sudo docker build . -t pytorch:1.8.1-cuda11.1”命令构建镜像。此过程需要5-8分钟,可以先进行下面的步骤。打开火狐浏览器,进入华为云首页,依次选择“产品”>“容器”>“容器镜像服务SWR”,进入服务页面,然后点击“控制台”进入SWR控制台页面。点击右上角的“创建组织”按钮,输入组织名,点击“确定”。如果已经有可用的组织,此步骤可以跳过。然后回到总览页面,点击上方的“登录指令”按钮,复制弹出的docker命令,在此命令前面加上“sudo ”然后在云主机的终端命令行输入,显示“Login Succeeded”则表示登录成功。使用下列命令给新做好的镜像打标签sudo docker tag pytorch:1.8.1-cuda11.1 swr.{区域参数}/{组织名称}/pytorch:1.8.1-cuda11.1区域参数从登录指令中获取,如下图红框所示,组织名称也请替换为上面步骤创建的组织名。此处以华为云 华南-广州区为例​sudo docker tag pytorch:1.8.1-cuda11.1 swr.cn-south-1.myhuaweicloud.com/ai-test/pytorch:1.8.1-cuda11.1使用下列命令将镜像上传到SWRsudo docker push swr.{区域参数}/{组织名称}/pytorch:1.8.1-cuda11.1区域参数从登录指令中获取,如下图红框所示,组织名称也请替换为上面步骤创建的组织名。此处以华为云 华南-广州区为例sudo docker push swr.cn-south-1.myhuaweicloud.com/ai-test/pytorch:1.8.1-cuda11.1完成镜像上传后,在容器镜像服务控制台的“我的镜像”页面可查看已上传的自定义镜像。4、创建OBS桶和文件夹并上传训练脚本在华为云首页,依次选择“产品”>“存储”>“对象存储服务OBS”,进入服务页面,然后点击“购买”进入资源包购买页面。按照如下规格购买:区域选择上面步骤创建SWR组织的区域资源包类型存储包-标准存储多AZ包规格40G购买时长一个月生效时间支付完成后立即生效购买完成后,在控制台页面左面的菜单中,点击“桶列表”。然后点击右上角“创建桶”按钮,进入创建页面,按照如下规格创建:区域选择上面购买资源包的区域桶名称自行定义数据冗余存储策略多AZ存储-标准存储桶策略私有其他默认即可,不需要更改创建好桶后,就可以在桶列表页面看到,点击桶的名称链接进入桶的详情页。点击“新建文件夹”按钮,创建一个名为“pytorch”的文件夹,在此文件夹下再创建两个子文件夹,分别命名“log”和“demo-code”。Demo-code文件夹存放训练脚本,log文件夹存放训练日志。回到命令行窗口,在context文件夹下,使用vim pytorch-verification.py命令新建编辑训练脚本,单击“i”键进入插入模式,输入如下内容,确认无误后单击ESC回到命令模式,使用“:wq”命令保存退出。import torchimport torch.nn as nnx = torch.randn(5, 3)print(x)available_dev = torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu")y = torch.randn(5, 3).to(available_dev)print(y)新建好脚本后,回到OBS控制台页面,进入到demo-code文件夹,将脚本上传到demo-code文件夹下。点击“添加文件”,在/developer/context目录下,选择刚刚创建的pytorch-verification.py文件,点击“打开”,完成上传。5、在ModelArts上创建训练作业在华为云首页,依次选择“产品”>“人工智能”>“AI开发平台ModelArts”,进入服务页面,点击“控制台”按钮,进入控制台页面。第一次使用ModelArts平台,会提示权限不足,需要授权OBS服务和SWR服务。点击上面红框的“此处”的超链接,进入授权委托页面,选择“新增委托”,权限配置选择“普通用户”,然后点击“创建”按钮即可。重新回到ModelArts控制台页面,提示权限不足的红框就消失了,可以正常使用了。在左侧导航栏中选择“模型训练 > 训练作业”,默认进入“训练作业”列表。按照如下表格填入参数信息:创建方式选择自定义算法启动方式选择自定义镜像地址选择上面步骤创建的镜像代码目录设置2.4步骤创建的demo-code文件夹启动命令/home/ma-user/miniconda3/bin/python ${MA_JOB_DIR}/demo-code/pytorch-verification.py资源池选择公共资源池类型选择GPU或CPU规格永久保存日志打开作业日志路径设置2.4步骤创建的log文件夹训练作业创建完成后,后台将自动完成容器镜像下载、代码目录下载、执行启动命令等动作。训练作业一般需要运行一段时间。训练完成后,在OBS服务,我们创建的桶和log文件夹下找到训练日志并下载下来,在下载的日志文件中搜索关键字:tensor,看到如下信息表示训练成功。至此,实验完成。
  • [技术干货] 【开发者空间实践指导】基于Repo和流水线门禁的分支合并与部署
    一、 案例介绍流水线(CodeArts Pipeline)提供可视化、可编排的CI/CD持续交付软件生产线,帮助企业快速转型,实现DevOps持续交付高效自动化,缩短应用TTM(Time to Market)交付周期,提升研发效率。流水线本质上是一个可视化的自动化任务调度平台,需要配合软件开发生产线中编译构建、代码检查、测试计划、部署等服务的自动化任务使用。根据用户需要的场景,如开发测试环境应用部署、生产环境应用部署等,对这些自动化任务进行自定义编排,一次配置后就可以一键自动化触发调度执行,避免频繁低效的手工操作。通过本次实验,可以学会通过CodeArts流水线来自定义编排云上任务,实现流水线门禁的分支合并与部署。二、 免费领取云主机如您还没有云主机,可点击链接,根据领取指南进行操作。如您已领取云主机,可直接开始实验。三、 实验流程​说明:购买弹性云服务器,创建虚拟私有云及安全组;登录云主机,购买CodeArts并创建CodeArts项目,创建代码质量门禁检查流水线;CodeArts IDE本地拉取云上代码;CodeArts IDE集成CodeArts Pipeline插件实现本地调用华为云云上流水线任务;云上流水线查看运行结果;进行分支合并,创建部署流水线。四、实验资源本次实验花费总计为1.55元,资源采取按需计费,体验结束后,请及时释放资源,避免产生多余费用,给您带来不便。资源名称规格单价(元)时长(h)弹性云服务器ECSX86计算,通用计算增强型| c6.large.4 | 2 vCPUs | 8 GiB CentOS 7.6 64bit (40GB)0.751弹性公网IP按流量计费 5Mbit/s0.8元/GB1CodeArts服务免费体验版免费1五、实验流程5.1 购买CodeArts已购买请跳过。在浏览器中输入华为云网址:cid:link_2进入华为云首页。在华为云的首页右上方,点击“登录”,在弹出的对话框中输入自己的用户名和密码。在华为云首页,依次选择“产品”>“开发与运维”>“软件开发生产线CodeArts”,进入CodeArts页面。​​点击“购买”按钮进入购买页面,选择“体验版”购买即可。5.2 创建CodeArts项目1、创建云上项目 购买服务后,点击立即使用,进入CodeArts首页,左上角选择“华北-北京四”,选择“Scrum”类型项目模板。​在打开的新建项目窗口,填写好项目名称(例:Scrum-demo),点击“确定”创建。创建云上仓库,进入Scrum-demo项目,点击左侧“代码代码托管新建仓库”。​选择 “模板仓库 Java Maven Demo”,点击“下一步”。​输入仓库名称,点击“确定”。​进入仓库,示例代码如下(如有自己的代码请参考“【开发者空间实践指导】软件开发生产线CodeArts初体验:一站式体验代码云上托管、构建、检查与修复-云社区-华为云 ”上传至仓库)。​2、CodeArts IDE本地代码拉取复制云上代码仓库地址。​登录云主机,双击打开CodeArts IDE。​点击CodeArts IDE 右上角的头像,登录华为云账号。​登录完毕,选择“克隆git仓库”, 输入云仓库地址,点击 “克隆”。​获取仓库的用户名和密码。​填写到Codearts IDE中。​云仓库与本地CodeArts IDE连接完毕。​5.3 创建代码质量门禁检查的流水线1、创建检查任务返回CodeArts项目,点击左侧“代码代码检查新建任务”。​修改任务名称,仓库选择为5.2中步骤2创建的仓库,点击“新建任务”。​2、创建构建任务点击左侧“持续交付编译构建新建任务”。​修改名称,点击“下一步”。​​选择“Maven模板”,点击“确定”。​点击右上方“保存”。3、创建流水线点击左侧“流水线新建流水线”。​修改流水线名称,点击“下一步”。​选择“空白模板”点击“确定”。​确定完成自动跳转流水线界面,点击“新建任务”,右侧跳出弹窗,选择“构建Build构建”,点击 “添加”。​调用的任务选择5.3步骤2创建的构建任务,仓库选择5.2步骤2创建的仓库,点击“确定”。​点击“并行任务”,右侧跳出弹窗,选择“代码检查Check代码检查”,点击“添加”。​同理选择5.3步骤1创建的检查任务,点击“确定”。添加门禁:点击“准出条件”,选择标准策略准出条件,点击“添加”。选择“系统策略”,点击“确定”,门禁添加已完成。点击右上方“保存并执行”,弹出来界面点击“执行”,等待执行结果。执行完毕,绿色为执行成功,红色为失败。​点击左侧“制品仓库软件发布库”,可以找到jar包,复制下载地址备用。​5.4 CodeArts IDE本地管理CodeArts流水线在CodeArts IDE中安装CodeArts Pipeline插件。​安装完成后,点击左侧的“DevSecOps”菜单栏(如没有请重启IDE),并切换自己项目所在的区域“北京四”,查询当前项目下的所有流水线,选择5.3创建的代码质量门禁流水线,点击三角号运行。​绿色代表执行完毕,此时切到流水线界面可以查看刚刚执行的流水线。​5.5 合并分支点击左侧“工作项需求管理迭代新建”。​选择 “task”,设置名称(例:修改代码demo)。​点击左侧“代码托管”,点击仓库,进入代码界面,点击“代码分支所有分支”,可以看到只有一个主分支master,点击“新建分支”。​设置分支名称(例:feature),关联工作项,选择上面创建的迭代task。点击“确定”。​点击“代码master”,下拉框选择刚刚创建的feature分支,模拟代码修改。​找到src下面的 “HelloWorld.Java”。点击编辑。​修改代码,点击“确定”。​点击右上角“新建合并请求”,模拟分支合并,点击“下一步”。​选择标题,并关联工作项,点击“新建合并请求”,点击“合入”。​合入完成后,点击代码,可以查看master代码已修改。​5.6 创建虚拟私有云和安全组在华为云首页,依次选择“产品”>“网络”>“虚拟私有云VPC”,进入服务页面,然后点击“开始使用”进入创建虚拟私有云页面。在创建页面,“名称”“子网名称”填入自己可以识别的名称,企业项目选择“default”,点击“立即创建”完成虚拟私有云的创建。​5.7 购买弹性云服务器浏览器登录华为云控制台,搜索ECS弹性云服务器,进入ECS界面,点击有上角购买弹性云服务器,ECS配置如下:配置项具体配置计费模式:按需计费区域/可用区华北-北京四 | 随机分配规格X86计算 | c6.large.4 | 2vCPUs | 8GiB操作系统镜像CentOS 7.6 64bit with ARM系统盘通用型SSD, 40GiB弹性公网IP全动态BGP | 按流量计费 | 5 Mbit/s | 随实例释放网络和安全组选择第二步购买的虚拟私有云,安全组没有可新建,入方向网段开放22,8080端口公网带宽按流量计费云服务器名称(自定义)登录凭证(自定义)购买量1购买弹性云服务器时,若无虚拟私有云VPC、安全组,需要新建;安全组也可以对全部开放22,8084端口(不建议,若通过云主机连接不到该服务器,可以尝试全开)。​​​点击“立即购买”完成购买,购买成功后可以看到服务器名称及公网ip等信息。​5.8 创建部署流水线1、创建主机集群进入CodeArts项目,点击“设置通用设置基础资源管理”,点击“新建主机集群”设置集群名称(例:scrum-demo-group),点击“添加或导入主机”,选择“通过ip手动添加”,输入5.6创建的服务器名称,IP地址为公网地址,输入用户名密码,端口22。​点击“确定”,等待一会可以看到导入成功。​2、创建部署任务点击“部署新建应用”,设置名称,点击“下一步”,选择“Tomcat应用部署”,点击“确定”。​点击“环境管理新建环境”,自定义环境名称,点击“确定”。​点击“导入主机”,选择5.7步骤1创建的主机集群,点击“保存”,等待成功即可。​点击“参数设置”,host_group默认值选择上一步新建环境名称,package_url为2.3.3的jar包地址,点击“保存”。​3、创建部署流水线点击“流水线新建流水线”,检查及构建步骤参照2.3,点击“新建阶段新建任务”,选择Deploy部署,点击“添加”,选择调度任务,host_group,关联构建任务,点击“确定”。​等待执行成功(也可以在本地IDE中查看运行该流水线,请参照5.4)。​至此本次实验全部内容完成。
  • [技术干货] 【开发者空间实践指导】使用函数工作流部署画图工具Excalidraw
    一、 案例介绍函数工作流FunctionGraph是一项基于事件驱动的函数托管计算服务,只需要编写业务函数代码并设置运行的条件,无需配置和管理服务器等基础设施,函数以弹性、免运维、高可靠的方式运行。本案例将指导开发者如何使用函数工作流15分钟部署Web版画图工具Excalidraw。二、 免费领取云主机如您还没有云主机,可点击链接,根据领取指南进行操作。如您已领取云主机,可直接开始实验。三、 实验流程说明:① 用户访问函数工作流服务;② 创建函数;③ 从对象存储服务OBS中拉取函数代码;④ 创建APIG触发器;⑤ 触发执行函数;⑥ 访问画图工具Excalidraw。四、实验步骤4.1创建函数在浏览器打开FunctionGraph主页:cid:link_2,点击“开始使用”并登录,区域选择“北京四”。点击“创建函数”。创建方式选择“创建空白函数”,基本信息填写如下:函数类型HTTP函数区域华北-北京四项目华北-北京四(默认)函数名称自定义企业项目默认委托名称未使用任何委托填写完成后点击“创建函数”。4.2上传函数代码点击“上传自”,选择“OBS地址”。将代码地址复制到文本框里,代码地址:cid:link_0。4.3创建触发器点击“创建触发器”。触发器信息填写如下:触发器类型API网关服务(APIG)API名称保持默认即可分组任意选择一个,如果没有可以点击“创建分组”,创建完成后点击刷新发布环境RELEASE安全认证NONE请求协议HTTPS后端超时时间5000(ms)点击“确定”。4.4访问服务复制APIG触发器的调用URL,在浏览器中打开,即可进行绘图。至此,使用函数工作流部署画图工具Excalidraw实验完毕。
  • [产品体验官] 【开发者日武汉站】产品体验官:在开发者空间基于FunctionGraph实现Gif动图制作应用开发
    华为云开发者日·武汉站来啦!参加“基于FunctionGraph实现Gif动图制作应用开发”体验项目提出你的建议或使用体验有机会获得开发者盲盒礼包惊喜不容错过,快叫上小伙伴一起来参加吧~【体验项目】基于FunctionGraph实现Gif动图制作应用开发【活动时间】2024年10月16日-10月20日【参与方式】直接在此活动帖下方回帖提建议/提建议即可比如对产品功能的改进建议、对活动流程的感想、对现场活动的感悟等等PS:不要少于30字哦~【获奖规则】奖项设置有效回复楼层评选条件获奖名额激励礼品优质建议奖20对产品功能有改进价值的建议1名开发者盲盒礼品价值50-100元积极反馈奖20优质建议奖轮空的情况下进行抽取每满20层抽取1名开发者盲盒礼品价值50元【活动规则】1、本帖的回帖建议不少于30字,仅限于对“基于FunctionGraph实现Gif动图制作应用开发”体验项目,其他项目建议不参与此次活动,否则将视为无效内容。2、本次活动将根据实际参与情况发放奖励,包括但不限于用户百分之百中奖或奖项轮空的情况;以上奖品均为实物奖品,具体发放视出库情况而定;3、活动预计于结束后七天内完成奖项公示,并于结束后15个工作日内完成邮寄。【温馨提示】1、请务必使用个人实名账号参与活动(IAM、企业账号等账号参与无效)。如一个实名认证对应多个账号,只有一个账号可领取奖励,若同一账号填写多个不同收件人或不同账号填写同一收件人,均不予发放奖励。2、所有获得奖品的获奖用户,请于获奖后3日内完成实名认证,否则视为放弃奖励。
  • [问题求助] 资源券必须要提交作品才能成功申请吗?
    资源券必须要提交作品才能成功申请吗?
  • [问题求助] 本地上传文件到云主机
    本地上传文件到云主机,看说明是上传到云存储空间,上传文件后在云主机里看不到啊
  • [技术干货] 【开发者空间实践指导】鲲鹏DevKit代码迁移工具快速完成C&C++源码迁移
    一、 案例介绍鲲鹏和传统X86两者的指令集不同(X86是复杂指令集、鲲鹏使用精简指令集),一样的代码经过编译后,在不同的芯片架构下转换成的不同的机器码,从而不能交叉运行。为了帮助开发者解决将软件从X86平台迁移到鲲鹏平台过程中遇到的疑难问题,鲲鹏提供了DevKit迁移工具,帮助开发者更快更方便的实现跨平台软件的迁移。本次实验将完成鲲鹏DevKit代码迁移工具的使用,了解其基本功能和使用方法。本案例将指导开发者如何使用鲲鹏DevKit代码迁移工具,以smartdenovo软件包为待迁移案例展示C/C++软件的快速迁移过程,达到快速完成C&C++源码迁移的实验目的。如果希望更进一步了解DevKit代码迁移工具Porting Advisor,欢迎大家前往鲲鹏社区了解代码迁移工具的详细使用方法:https://www.hikunpeng.com/document/detail/zh/kunpengdevps/porting/qs/qs-pa-kunpengdevps.html二、 免费领取云主机如您还没有云主机,可点击链接,根据领取指南进行操作。如您已领取云主机,可直接开始实验。三、 实验流程说明:① 下载迁移源码;② 自动部署装有DevKit的鲲鹏服务器; ③ 安装鲲鹏代码迁移插件; ④ 登录DevKit工具;⑤ 执行源码扫描任务;⑥ 根据扫描报告修改源码。四、下载迁移源码smartdenovo是一款在github上开源的一款基于C语言开发的开源软件,基于X86平台进行开发,源码地址如下:cid:link_8。在实验的过程中,还需要avxToNeon的源代码,当应用程序从x86架构移植到鲲鹏架构时,由于Arm64指令名称和功能与x86不同,需要进一步开发指令。为了减少用户的移植工作量,在avxToNeon项目中,常用的AVX指令被封装为独立的模块, AVX指令被相关的NEON SIMD指令取代,而指令名称和功能保持不变。用户可以通过将相关头文件导入应用软件来调用相应的指令。avxToNeon的源码存放地址如下:cid:link_7。在云主机桌面创建smart-denovo文件夹,在该文件夹下打开终端命令窗口,克隆两个开源项目代码:将AvxToNeon复制到smartdenovo项目目录下,然后将smartdenovo打成zip压缩包,留作后面创建源码迁移任务。五、自动部署装有DevKit的鲲鹏服务器在云主机打开终端窗口,执行自动部署命令:hcd deploy --password 远端服务器密码 --time 3600# --password 待部署项目所在ECS的root用户密码(至少8个字符)# --time value 待部署资源的保留期(单位为秒,至少600秒,默认600秒)。当前实验预估需要1小时,可以配置time为1-2小时保留期。该命令会自动部署鲲鹏服务器并安装DevKit。首次部署会直接执行,旧资源未到期时重复部署,会提示是否删除前面创建的资源,可以删除旧资源再次部署。记录部署远端服务器公网IP、Devkit平台访问地址,如截图中对应的就是:124.71.195.85、https://124.71.195.85:8084。这里自动部署安装有DevKit工具的ECS服务器使用到的Terraform可以在部署后,到华为开发者空间,鲲鹏沙箱资源中进行下载,下载后您可以在华为云资源编排服务RFS通过该模板进行部署安装有DevKit工具的ECS服务器。六、安装鲲鹏代码迁移插件方式一:在线安装进入云主机,打开CodeArts IDE,点击左侧“扩展”搜索“Kunpeng Porting Advisor Plugin”点击安装该插件。​方式二:本地安装前往鲲鹏社区官网下载插件Kunpeng Porting Advisor Plugin到云主机,下载地址为:CodeArts IDE插件市场。​在云主机桌面,打开CodeArts IDE开发环境,单击右侧“扩展”按钮,点击从本地安装,选择下载好的插件安装。​使用任一方式安装好插件后,在CodeArts IDE点击左上角“文件”,选择“设置”,在设置界面选择“应用程序”-“代理服务器”,将“Proxy Support”设置为“off”。​七、登录DevKit工具在云主机进入CodeArts IDE,打开安装好的鲲鹏代码迁移插件,点击点击“…”中的“配置远端服务器”。填配置远端服务器成功后,点击“登录”,首次登录需要创建管理员密码。安装完成后选择“采用SSH连接时输入的IP地址xxx.xxx.xx.xx”然后点击立即登录。首次登录需要设置密码,设置密码后进行登录。八、执行源码扫描任务登录代码迁移工具成功后,在插件窗口新建源码迁移任务。 在新建源码迁移任务界面,上传步骤五打好的smartdenovo.zip压缩包,目标操作系统切换成EulerOS 2.8,其他保持默认,点击“开始分析”。扫描完成完成后,点击CodeArts IDE下面“终端”登录到远端弹性云服务器(命令:ssh root@远端服务器公网IP),在远端服务器中执行以下命令,编译迁移前的代码,对比迁移效果。尝试编译未进行迁移修改的代码,查看是否可以编译成功。编译运行命令如下:cd /opt/portadv/portadmin/sourcecode/smartdenovo/make从执行结果中可以看到,编译过程报错,无法成功编译smartdenovo软件包。接下来根据扫描报告修改源码后再编译。九、根据扫描报告修改源码在扫描报告界面,可以在“需要迁移的源文件”下查看需要修改文件,点击“查看建议代码”后可跳转到源码页面,根据修改建议直接修改源码。从迁移报告中可以得知,有Makefile和ksw.c两个文件需要修改。首先点击ksw.c对应的“查看建议代码”按钮,修改ksw.c的源代码。1、修改源码文件ksw.c根据源码页面中的红色波浪线发现一共有两处修改点修改点一:点击“快速修复…”按钮后,在右下角的弹框中点击确认按钮,自动完成此处的代码适配。修改后,效果如下:修改点二:使用快速自动修改,修改效果如下图所示,增加了ARM的NEON指令库头文件。增加的头文件需要引入到工程中,点击CodeArts IDE下面菜单栏中“终端”,登录远端弹性云服务器(命令:ssh root@远端服务器公网IP),在远端服务器中执行以下命令将头文件目录复制一份到/opt/portadv/portadmin/sourcecode/smartdenovo的include目录里。cd /opt/portadv/portadmin/sourcecode/smartdenovomkdir includecp -r /opt/portadv/portadmin/sourcecode/smartdenovo/AvxToNeon /opt/portadv/portadmin/sourcecode/smartdenovo/include/AvxToNeon​2、修改构建文件Makefile在“源码迁移建议”页面,查看Makefile文件的修改建议,悬浮在黄色波浪线的语句上,可以看到详细的迁移建议。根据建议,Makefile文件中需要给CFLAGS变量增加选项内容-march=armv8-a -fsigned-char,同时,还需要删除CFLAGS变量中的选项“-mpopcnt”和“-msse3”。 同时,由于增加了额外的Neon库头文件,Makefile文件中还需要给CFLAGS变量增加选项内容-I./include/AvxToNeon。修改效果如下:图片中5-7行代码修改为如下:CFLAGS=-I./include/AvxToNeon -g3 -W -Wall -O0 -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -march=armv8-a -fsigned-charelseCFLAGS=-I./include/AvxToNeon -W -Wall -O4 -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -march=armv8-a -fsigned-char此外,因smartdenovo的系统兼容性问题,在CodeArts IDE的系统中无法直接编译,还需要修改 smartdenovo/wtlay.h 文件。点击CodeArts IDE下面菜单栏中“终端”,登录远端弹性云服务器(命令:ssh root@远端服务器公网IP),在远端服务器中执行以下命令进行修改:cd /opt/portadv/portadmin/sourcecode/smartdenovo/vi wtlay.h回车后进入编辑界面,点击ESC按键后,输入:516,按回车后跳转到516行,按下键盘上的A按键,进入编辑模式,如下图所示。在该行前面添加“static”,修改完成后点击ESC按键,输入:wq!,点击回车。至此,所有源码迁移修改都已经完毕。点击CodeArts IDE下面菜单栏中“终端”,登录远端弹性云服务器(命令:ssh root@远端服务器公网IP),在远端服务器中执行以下命令进行编译,从输出中可以看到,编译成功完成,无报错信息展示:cd /opt/portadv/portadmin/sourcecode/smartdenovo/make迁移后可以在远端鲲鹏服务器上编译成功。点击CodeArts IDE下面菜单栏中“终端”,登录远端弹性云服务器(命令:ssh root@远端服务器公网IP),在远端服务器中编译生成的二进制文件有 wtmsa,wtcns,wtlay等。可以执行这些文件看看。./wtmsa到这里整个实验流程就已经结束了,通过上面的源码迁移动作我们拿到了可以在鲲鹏平台上运行的smartdenovo软件包。各位鲲鹏开发者也可以参考上面的软件迁移过程迁移一些其他的跨平台软件,同时探索迁移工具提供的软件包扫描、亲和分析等功能,更深入的掌握迁移工具的使用方法。除了上述学习内容,我们还提供了很多辅助学习资源(课程/实验/文档/文章),希望能帮助到您更好的使用鲲鹏DevKit迁移工具:鲲鹏代码迁移工具介绍(课程)学习路径 - 应用跨平台迁移(课程)
  • [热门活动] 【剧透】华为全联接大会2024开发者空间活动地图来啦,速收!
    9月19日-21日,华为开发者空间将携手产学研专家在华为全联接大会2024举办系列主题演讲、专题论坛、圆桌,面向全球开发者发布产品最新升级功能及会员成长计划。也将在展区展览、Codelabs等活动中与广大开发者深入讨论华为开发者空间的应用场景、开发设计体验及未来发展趋势。除了线下活动外,华为开发者空间还为广大开发者们准备了线上体验活动,点击链接即可参与体验,参与互动赢开发者定制好礼,快快行动起来吧!cid:link_0
  • [活动公告] 【HUAWEI CONNECT 2024丨社区活动】掌握Redis部署,轻松实现电商平台秒杀抢购!
    因参与楼层不满足开奖条件,本活动不开奖。-------------------------------------------------------------------参加“掌握Redis部署,轻松实现电商平台秒杀抢购!”项目在本活动帖下回帖,提出你的问题与建议有机会获得开发者定制礼品【体验项目】掌握Redis部署,轻松实现电商平台秒杀抢购!【体验简介】通过本案例,开发者将掌握在云主机中安装和配置Redis,了解如何在Java项目中使用Jedis对接Redis服务器实现缓存功能并且使用CodeArts IDE模拟运行电商秒杀抢购场景。【体验形式】1.登录注册华为云账号,领取云主机;2、使用云主机资源进行应用开发。【活动时间】2024年9月13-10月12日【参与方式】直接在此活动帖下方回帖,将体验完成的截图和您的问题/建议/感受一起回帖即可比如体验中遇到的问题,对产品的建议、对活动感受等等PS:不要少于30字哦~【获奖规则】可提前填写获奖信息收集表,后续如您中奖,我们会及时发货,谢谢。获奖信息收集表: cid:link_0【活动规则】1、本帖的回帖建议不少于30字,仅限于对“掌握Redis部署,轻松实现电商平台秒杀抢购!”体验项目,其他项目建议不参与此次活动,否则将视为无效内容。2、本次活动将根据实际参与情况发放奖励,包括但不限于用户百分之百中奖或奖项轮空的情况;实物奖品具体发放视出库情况而定; 3、活动预计于结束后七天内完成奖项公示,并于结束后15个工作日内完成邮寄。【温馨提示】1、请务必使用个人实名账号参与活动(IAM、企业账号等账号参与无效)。如一个实名认证对应多个账号,只有一个账号可领取奖励,若同一账号填写多个不同收件人或不同账号填写同一收件人,均不予发放奖励。2、所有获得奖品的获奖用户,请于获奖后3日内完成实名认证,否则视为放弃奖励。
  • [问题求助] 开发者云主机 安装宝塔面板后无法正常连接 , 跟楼上楼主一样的问题
    开发者云主机   安装宝塔面板后无法正常连接  , 跟楼上楼主一样的问题
  • [技术干货] 【汇总帖】华为开发者空间领取指南&实践指导
    类别分类主题内容介绍链接领取指南领取指南云主机免费领取指南开发者空间云主机免费领取指南点击查看实操指导鲲鹏应用开发鲲鹏DevKit代码迁移工具快速完成C&C++源码迁移本次实验将完成鲲鹏DevKit代码迁移工具的使用,了解其基本功能和使用方法。本案例将指导开发者如何使用鲲鹏DevKit代码迁移工具,以smartdenovo软件包为待迁移案例展示C/C++软件的快速迁移过程,达到快速完成C&C++源码迁移的实验目的。点击查看基于鲲鹏服务器的打砖块小游戏部署鲲鹏服务器是基于鲲鹏处理器的新一代数据中心服务器,适用于大数据、分布式存储、高性能计算和数据库等应用。鲲鹏服务器具有高性能、低功耗、灵活的扩展能力,适合大数据分析、软件定义存储、Web等应用场景。点击查看AI应用开发云主机安装Docker并制作自定义镜像在ModelArts平台做模型训练本案例将指导开发者如何在云主机上安装Docker制作一个自定义模型镜像并在ModelArts平台使用这个镜像作模型训练。点击查看基于TensorFlow的手写体识别 本实验 是在云主机中安装PyCharm,并且基于TensorFlow框架的手写体识别的案例。点击查看 基于PyTorch的手写体识别本ne实验 是在云主机中安装PyCharm,并且基于PyTorch框架的手写体识别的案例。点击查看Serverless应用开发使用函数工作流部署画图工具Excalidraw本案例将指导开发者如何使用函数工作流15分钟部署Web版画图工具Excalidraw。点击查看高可用开发搭建可自动伸缩的Discuz!论坛网站本实践以搭建可自动伸缩的Discuz!论坛为例,介绍了如何使用弹性伸缩服务搭建一个可自动增加或减少弹性云服务器数量的Web服务。点击查看软件开发软件开发生产线CodeArts初体验:一站式体验代码云上托管、构建、检查与修复本案例将指导开发者在云主机上快速使用工具实现代码质量的维护和代码资源的管理,达到能让开发者第一时间进入代码产出阶段并可以持续输出归档和改善代码质量的目的。点击查看基于3大PaaS主流服务轻松实现文字转换语音开发者将在云主机中,基于CodeArts API设计语音合成接口,基于API Explorer调试接口,并利用CodeArts IDE实现数据流转换为音频。点击查看基于Repo和流水线门禁的分支合并与部署通过本次实验,可以学会通过CodeArts流水线来自定义编排云上任务,实现流水线门禁的分支合并与部署。点击查看中间件开发掌握Redis部署,轻松实现电商平台秒杀抢购!指导开发者如何在云主机中安装和配置Redis,如何在Java项目中使用Jedis对接Redis服务器实现缓存功能并且使用CodeArts IDE模拟运行电商秒杀抢购场景。点击查看实践体验华为云之开发者空间云主机使用体验开发者空间全流程一站式指导点击查看华为云开发者云主机体验在开发者空间中快速体验YOLOV3目标检测算法点击查看个人论坛工程自动化部署将个人论坛工程导入到云主机,在云主机中CodeatrSide打开工程,并在终端上部署到远程ECS主机,再修改工程重新打包工程并重新部署到远程ECS主机,用户可以通过公网ip查看部署的工程点击查看
  • [问题求助] 华为开发者云主机 一直显示正在预装软件90% 进度不动了
    华为开发者云主机 一直显示正在预装软件90% 进度不动了
  • [技术干货] 【开发者空间实践指导】基于3大PaaS主流服务轻松实现文字转换语音
    案例简介开发者将在云主机中,基于CodeArts API设计语音合成接口,基于API Explorer调试接口,并利用CodeArts IDE实现数据流转换为音频。在此过程中,开发者可体验API设计、开发、调试等全生命周期,对华为云产品API体系及API开放能力有全面了解,并最终完成应用创建,全程实践约15分钟。配置开发者空间华为云为全球开发者打造专属开发者空间,汇聚了华为优质开发资源及工具,让每一位开发者拥有一台云主机。在华为开发者空间,每位开发者每年可享有数百小时的云主机使用时长,5GB的云存储空间和场景化沙箱资源,以及海量的技术赋能课程与专业开发者认证内容。点此领取:https://auth.huaweicloud.com/authui/login.html?service=https%3A%2F%2Fdeveloper.huaweicloud.com%2Fspace%2Flogin-forword.html%3FforwardUrl%3Dhttps%253A%252F%252Fdeveloper.huaweicloud.com%252Fspace%252Fhome%26module%3Dhuaweideveloper&locale=zh-cn#/login1.进入开发者空间,点击“云主机(beta体验)”2.点击“添加云主机”3.点击“立即进入”4.点击“下一步”5.配置云主机,名称、描述可根据需要填写,点击“下一步”6.点击“进入桌面”7.界面状态显示为“已就绪”,表明领取成功。点击 “打开桌面”,进入云主机内,预计等待1分钟通过CodeArts API设计语音合成接口3.1     进入CodeArts API官网,打开左边工具栏-Firefox网络浏览器,输入网页版体验地址并登录cid:link_43.2     创建项目3.2.1    登录后点击页面右上角的“创建项目”按钮3.2.2    在创建项目弹窗中输入项目名称:语音合成,并点击保存3.2.3    提示保存成功,点击API设计页签,进入到API设计页面3.3     设计接口3.3.1    点击页面上的“新建API接口”卡片3.3.2    显示新建标签页3.3.3    输入接口的URL:/tts3.3.4    输入接口名称:语音合成3.3.5    下拉滚动条到请求参数区域,点击请求体“Body”页签,选择“raw”,默认选择“JSON”格式。3.3.6    显示请求体的数据结构模板,默认根节点类型为“object”3.3.7    点击根节点最右侧的“+”操作3.3.8    页面上在根节点下新增一条参数(可以通过滚动条左右拖动)3.3.9    将参数名param2修改为text,描述param2修改为待合成的文本3.3.10 下拉页面,看到返回响应区域3.3.11 同样点击根节点最右侧的“+”操作(可以通过滚动条拖动到最右侧),在根节点下显示一条新的参数3.3.12 将参数名param2修改为result,将描述修改为合成结果3.3.13 点击右上角的保存按钮3.3.14 保存成功,设计完成通过API Explorer调试语音合成接口,生成5段数据流4.1     语音合成(API Explorer部分):链接:cid:link_24.1.1    生成语音格式为wav,采样率:8000,标准女音,语速0,音色0图1.1.1 wav标准女音4.1.2    生成语音格式为wav,采样率:16000,标准男声,语速0,音色0图1..12 wav标准男音4.1.3    生成语音格式为mp3,采样率:8000,标准女音,语速100,音色100图1.1.3 mp3标准女音4.1.4    生成语音格式为mp3,采样率:16000,标准男声,语速100,音色100图1.1.4 mp3标准男声4.1.5    生成语音格式为pcm,采样率:16000,标准男声,语速100,音色100图1.1.5 标准男声在开发者空间基于华为云自研CodeArts IDE,实现数据流转换为音频的功能5.1     实现数据流转换为音频5.1.1    将实验用Demo工程上传到CodeArts IDE打开右侧工具栏-Firefox网络浏览器,输入并访问Demo工程下载链接:https://sandbox-expriment-files.obs.cn-north-1.myhuaweicloud.com/2601/CodeArtsProject.zip对下载好的文件进行解压(目录:主文件夹/下载),右键提取到此处打开CodeArts IDE,左上角点击“工程”->“打开工程”,选择刚刚解压出来的文件夹,打开: 预计等待1分钟左右的时间,工程模型同步成功:5.1.2    在华为云控制台新增访问秘钥,配置AK/SK1)登录华为云控制台:https://console.huaweicloud.com/iam/?agencyId=599e2ee1492f48e9b69a0a682d435fb8&region=cn-north-4&locale=zh-cn#/mine/accessKey选择“我的凭证”->“访问秘钥”->新增访问秘钥注:如果已经有AK/SK秘钥,不需要新增访问秘钥创建秘钥成功后点击“立即下载”,即可获得“credentials.csv”文件,里面可以查看到AK(Access Key Id)和SK(Secret Access Key)2)进入工程,src/main/resources下选择credentials.properties,将AK/SK配置上5.1.3    将API Explorer上调试成功的流数据文件配置到APIResponse.json中在2.1语音合成章节,我们在API Explorer完成接口的调试cid:link_2最终生成“SIS_RunTts_ResponseBody_xxxxxxxxxxxxx.json”文件,打开json文件,复制响应体内容(如果响应体内容没有超出限制,直接点击右侧的复制按钮即可)打开工程,进入src/main/resources中,选择APIResponse.json,将json文件的内容复制到APIResponse.json中。5.1.4    配置pom.xml:在pom.xml中如图所示,增加如下配置:  <properties>        <java.version>17</java.version>        <maven.compiler.source>17</maven.compiler.source>        <maven.compiler.target>17</maven.compiler.target>  </properties>5.1.5    执行“should_return_audio_when_response_json”,生成mps格式音频文件:找到test目录下的测试类SisServiceTest.java,点击找到方法“should_return_audio_when_response_json()”,点击执行测试,最后可以看到目录下生成的音频文件。目录下生成“devkit.mps”文件,实验结束。备注:在使用过程中,遇到技术问题,可在论坛-开发者空间版块发帖提问。如需技术支持,可提交开发者工单。如有产品优化建议,欢迎来云声平台提交。【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的
  • [技术干货] 【开发者空间实践指导】软件开发生产线CodeArts初体验:一站式体验代码云上托管、构建、检查与修复
    一、案例介绍华为云CodeArts Check,基于华为在自动化源代码静态检查方面的技术积累与企业级应用经验,为用户提供代码风格、通用质量与代码安全风险等检查能力,并提供问题闭环处理、检查报告等功能,可一站式完成代码检查作业,将代码质量保证活动从原始的人工检视中解脱出来;提供先进的产品给研发,高效的服务给企业,好用的工具给学生,帮助用户写出Clean Code,为产品代码质量提供有力保障。通过本次实验,可以掌握在云主机上如何使用CodeArts IDE进行代码检查与修复,进而提高代码质量,以及如将CodeArts IDE中代码上传到CodeArts代码托管服务Repo中做云上托管,实现本地调用CodeArts流水线任务的执行。本案例将指导开发者在云主机上快速使用工具实现代码质量的维护和代码资源的管理,达到能让开发者第一时间进入代码产出阶段并可以持续输出归档和改善代码质量的目的。二、免费领取云主机如您还没有云主机,可点击链接,根据领取指南进行操作。如您已领取云主机,可直接开始实验。三、实验流程申请并登录华为云主机;在云主机的CodeArts IDE中接入用户代码;在CodeArts IDE中集成CodeArts Check插件进行本地代码检查与运维;通过CodeArts IDE将本地代码上传CodeArts Repo服务云上归档管理;CodeArts IDE集成CodeArts Pipeline插件实现本地调用华为云云上流水线任务。四、云主机CodeArts IDE导入代码1、登录云主机,双击打开CodeArts IDE。2、点击“新建工程”创建本地项目。3、初始化项目信息,确认后创建项目。4、初始化Java项目成功,即可新项目中进行代码编程。5、导入已有项目复制链接到浏览器打开,下载代码到本地,(如果有自己的代码可以下载自己的代码):https://gitcode.com/HuaweiCloudDeveloper/spring-cloud-huawei-samples/overview6、下载成功后解压zip包,然后在CodeArts IDE中打开工程,即可完成项目的导入。五、云主机CodeArts IDE上集成CodeArts Check1、点击CodeArts IDE 右上角的头像,登录华为云账号。2、在CodeArts IDE中安装CodeArts Check代码检查插件。3、CodeArts IDE 中单击鼠标右键,进行代码检查,查看结果。4、本地修改代码,根据代码检查结果提示对代码问题进行修复,并重新检查。六、CodeArts IDE本地代码上传华为云CodeArts1、申请软件开发生产线CodeArts云服务在云主机桌面,双击“软件开发生产线”,登录软件开发生产线CodeArts首页。点击“免费试用”按钮进行资源申请。登录华为云账号。登陆后申请体验版套餐来体验CodeArts。开通完毕后点击立即使用,即可跳转至CodeArts首页,完成CodeArts资源申请。登录CodeArts首页,创建一个项目。输入项目名称,确认。2、创建云上代码仓库点击“代码-代码托管”。点击“新建仓库”按钮创建仓库。选择“普通仓库”,下一步。输入代码仓库名称,确认,完成repo代码仓库资源的初始化。3、将本地代码上传到云仓库打开云主机上的CodeArts IDE,选择“克隆git仓库”。复制代码仓库地址。输入云仓库地址。获取仓库的用户名和密码。填写到Codearts IDE中。云仓库与本地CodeArts IDE连接完毕。将本地代码导入云仓库。提交代码到云上仓库repo服务中。4、创建云上代码检查任务点击“代码-代码检查”,新建代码检查任务。初始化基本信息,选择待检查的代码仓库分支。配置规则集,点击开始检查,进行代码检查。查看代码检查结果以及修复建议。5、创建云上编译构建任务点击“持续交付-编译构建”,新建一个编译构建任务。初始化基本信息,选择待编译构建的代码仓库分支。选择Maven构建模板,确认。配置构建信息,样例代码以basic服务为例,进入basic文件夹,确认pom文件在maven执行目录,点击“保存并执行”,确认代码仓库分支。编译构建成功。查看构建产物。七、CodeArts IDE本地管理CodeArts流水线1、在CodeArts IDE中安装CodeArts Pipeline代码检查插件。2、查寻项目下所有的流水线点击左侧的“DevSecOps”菜单栏,并切换自己项目所在的区域“北京四”,查询当前项目下的所有流水线。3、华为云上新建流水线登录华为云CodeArts,点击“持续交付-流水线”,点击“新建流水线”。填写基本信息,并按照提示将自己的云仓库进行授权给流水线。创建一个Maven模板。可以在这里把我们步骤2、3中的第4步创建代码检查任务和第5步创建构建任务添加到这里。保存流水线并执行。4、返回云主机CodeArts IDE刷新,查看新建的流水线信息,并本地调用执行。至此实验全部结束。
总条数:499 到第
上滑加载中