华为云用户手册

  • ts_compare函数 ts_compare函数用于对比当前时间周期内的计算结果与n秒之前时间周期内的计算结果。 ts_compare函数必须按照时间列进行分组(GROUP BY)。 语法格式 对比当前时间周期内的计算结果与n秒之前时间周期内的计算结果。 ts_compare(x, n) 对比当前时间周期内的计算结果与n1、n2、n3秒之前时间周期内的计算结果。 ts_compare(x, n1, n2, n3...) 参数说明 表2 环比函数参数说明 参数 说明 x 参数值为double类型或long类型。 n 时间窗口,单位为秒。例如3600(1小时)、86400(1天)、604800(1周)、31622400(1年)。 返回类型 JSON数组。格式为[当前计算结果, n秒前的计算结果, 当前计算结果与n秒前计算结果的比值, n秒前的UNIX时间戳]。 示例说明 环比今天3小时与昨天3小时的网站访问量。 选择查询和分析的时间范围为今天某3小时,并执行如下查询和分析语句。其中86400表示当前时间减去86400秒(1天),date_trunc('hour',__time)表示使用date_trunc函数将时间对齐到小时。 查询和分析语句 SELECT t_time, ts_compare(PV, 86400) AS data FROM( SELECT date_trunc('hour', __time) AS t_time, count(*) AS PV GROUP BY t_time ORDER BY t_time ) GROUP BY t_time 查询和分析结果 t_time data 2021-10-26T06:00:00.000Z [159.0,224.0,0.7098214285714286,1.6351416E9] 2021-10-26T07:00:00.000Z [100.0,148.0,0.6756756756756757,1.6351452E9] 2021-10-26T08:00:00.000Z [100.0,100.0,1.0, 1.6016544E9, 1.6351488E9]
  • IP函数语句 表1 IP函数语句 语句 说明 示例 ip_to_province 分析目标IP地址所属省份。 ip_to_province(x) ip_to_country 分析目标IP地址所属国家或地区。 ip_to_country(x) ip_to_city 分析目标IP地址所属城市。 ip_to_city(x) ip_to_provider 分析目标IP地址所对应的网络运营商。 ip_to_provider(x) ip_to_geo 根据传入的ip返回ip所在的经纬度。 ip_to_geo(x)
  • 示例及说明 ip_to_province函数 统计请求总数Top3的省份 查询和分析语句 SELECT count(*) AS PV, ip_to_province(client_ip) AS province GROUP BY province ORDER BY PV desc LIMIT 3 查询和分析结果 表2 查询和分析结果 PV province 101 广东 83 上海 78 山东 ip_to_country函数 统计请求总数的Top3的国家或地区 查询和分析语句 SELECT count(*) AS PV, ip_to_country(client_ip) AS county GROUP BY country ORDER BY PV desc LIMIT 3 查询和分析结果 表3 查询和分析结果 PV country 100 中国 76 美国 55 加拿大 ip_to_city函数 统计请求总数的Top3的城市 查询和分析语句 SELECT count(*) AS PV, ip_to_city(client_ip) AS city GROUP BY city ORDER BY PV desc LIMIT 3 查询和分析结果 表4 查询和分析结果 PV city 109 广州 89 上海 23 西安 ip_to_provider函数 统计请求总数的Top3的运营商 查询和分析语句 SELECT count(*) AS PV, ip_to_provider(client_ip) AS provider GROUP BY provider ORDER BY PV desc LIMIT 3 查询和分析结果 表5 查询和分析结果 PV provider 115 电信 65 att.com 44 联通 ip_to_geo函数 根据传入的ip返回经纬度。 查询和分析语句 SELECT count(*) AS PV, ip_to_geo (client_ip) AS geo GROUP BY province ORDER BY PV desc LIMIT 3 查询和分析结果 表6 PV geo 101 *, * 83 47.369013, -68.326674 78 32.715891, -117.161588
  • 示例及说明 GREATEST([expr1, ...])/ LEAST([expr1, ...])函数 GREATEST函数,计算零个或多个表达式,并根据上述比较返回最大值。 LEAST函数,计算零个或多个表达式,并根据上述比较返回最小值。 字段样例 Num: 11785730 查询和分析语句 select Num,GREATEST( "Num"/10,(select count(1)) ),LEAST("Num"/10,(select count(1))) 查询和分析结果 表1 归约函数查询和分析结果 Num EXPR$1 EXPR$2 11785730 1178573 1
  • 功能描述 归约函数对零个或多个表达式进行操作,并返回单个表达式。如果没有表达式作为参数传递,则结果为 NULL。表达式必须全部转换为公共数据类型,即结果的类型有: 如果所有的参数都是 NULL,结果是 NULL,否则,NULL 参数被忽略。 如果所有的参数包含了数字和字符串的混合,参数都被解释为字符串。 如果所有的参数是整型数字,参数都被解释为长整型。 如果所有的参数是数值且至少一个参数是double,则参数都被解释为double。
  • IP函数语句 语句 说明 示例 IPV4_MATCH(address,subnet) 如果subnet属于address的子网地址则返回true,否则返回false。如果 address不是有效的IPv4地址,则返回false。如果 address是整数而不是字符串,则此函数更效率。 SELECT IPV4_MATCH (address,subnet) IPV4_PARSE(address) 将address解析为整数的IPv4地址。如果address是有效的IPv4地址,则它可以被解析。如果address不是有效的IPv4地址,则返回null。 SELECT IPV4_PARSE(address) IPV4_STRINGIFY(address) 将整数address转换为以点分隔的IPv4地址字符串。如果address是有效的IPv4地址的整数,则它可以被解析。如果address不能表示为IPv4地址,则返回null。 SELECT IPV4_STRINGIFY(address)
  • 示例及说明 IPV4_MATCH(address, subnet)函数 IPV4_MATCH函数,如果address属于subnet的子网ip,则返回true,否则返回false。如果address不是有效的IPv4地址,则返回false。如果address 是整数而不是字符串,则此函数具有更高的执行效率。 字段样例 Ipv4: 192.168.1.18 查询和分析语句 select IPV4,IPV4_MATCH(Ipv4, '192.168.0.0/16') 查询和分析结果 表1 查询和分析结果 IPV4 EXPR$1 192.168.1.18 true IPV4_PARSE(address)/ IPV4_STRINGIFY(address)函数 将address解析为整数的IPv4地址。如果address是有效的IPv4地址,则它可以被解析。如果address不是有效的IPv4地址,则返回null。 字段样例 Ipv4: 192.168.0.1 Num: 3232235521 查询和分析语句 select IPV4_PARSE(Ipv4), IPV4_STRINGIFY(Num) 查询和分析结果 表2 查询和分析结果 EXPR$0 EXPR$1 -1062731775 192.168.0.1
  • 示例及说明 json_extract函数 获取Results字段中EndTime字段的值。 字段样例 Results:[{"EndTime":1626314520},{"FireResult":2}] 查询和分析语句 SELECT json_extract(Results, '$.[0].EndTime') 查询和分析结果 表2 查询和分析结果 EXPR$0 1626314520 json_extract_scalar函数 从Results字段中获取RawResultCount字段的值,并将这些值转换为bigint类型进行求和。 字段样例 Results:[{"EndTime":1626314520},{"RawResultCount":1}] 查询和分析语句 SELECT sum(cast(json_extract_scalar(Results,'$.[1].RawResultCount') AS bigint) ) 查询和分析结果 表3 查询和分析结果 EXPR$0 1546
  • JSON函数语句 表1 JSON函数语句 语句 说明 示例 返回值类型 json_extract 用于从JSON对象或JSON数组中提取一组JSON值(数组或对象) json_extract(x, json_path) JSON格式的string类型 json_extract_scalar 用于从JSON对象或JSON数组中提取一组标量值(字符串、整数或布尔值)。如果指定JSON路径下不是标量,则返回null。 json_extract_scalar(x,json_path) varchar类型
  • 示例及说明 ACOS(expr)函数 求参数值的反余弦,y=arccosx,x的取值范围[-1,1]。 字段样例 x:0.5 查询和分析语句 select ACOS(x) 查询和分析结果 表2 查询和分析结果 x EXPR$1 0.5 1.0471975511965979 ATAN(expr)函数 ATAN求参数值的反正切,y= arctanx,x的取值范围R。 字段样例 x:0.5 查询和分析语句 select ATAN(X) 查询和分析结果 表3 查询和分析结果 x EXPR$1 0.5 1.0471975511965979 ATAN2(expr)函数 ATAN2从直角坐标(x,y)到极坐标(r,θ)的转换角度θ。 字段样例 x:3;y:4 查询和分析语句 SELECT x , y, ATAN2(x,y) 查询和分析结果 表4 查询和分析结果 x y EXPR$0 3 4 0.6435011087932844
  • 数学函数语句 表1 数学函数语句 语句 说明 示例 ABS(expr) 取绝对值。 SELECT ABS(fieldname1) CEIL(expr) 向上取整,即向上取最接近的整数值 SELECT CEIL(fieldname1) FLOOR(expr) 向下取整,即向下取最接近的整数值。 SELECT FLOOR(fieldname1) TRUNCATE(expr, digits) 将expr截断为特定的digits位数。如果数字为负数,则会截断小数点左侧的许多位置。如果未指定,数字默认为零。 SELECT TRUNCATE(fieldname1, 2) ROUND(expr, digits) ROUND(expr, digits)对expr值进行四舍五入,保留小数位数由digits指定。expr可以是整数或浮点数,但digits必须是整数。返回值的类型由expr的类型决定。如果没有指定digits,则使用默认值0。如果digits是负数,则返回expr四舍五入后的整数。当expr是非数字值时,会被转换为数字0。如果expr是无限位数的数字,则被转换为最接近的DOUBLE类型的有限位数数字。 SELECT ROUND(fieldname1, 2) x + y 加法。 SELECT fieldname1 + fieldname2 x - y 减法。 SELECT fieldname1 - fieldname2 x * y 乘法。 SELECT fieldname1 * fieldname2 x / y 除法。 SELECT fieldname1 / fieldname2 MOD(x, y) 求余,即取x除以y后的余数。 SELECT MOD(fieldname1, fieldname2) LN(expr) 对数(以e为底)。 SELECT ln(expr) LOG10(expr) 对数(以10为底)。 SELECT LOG10(expr) POWER(expr,power) expr的power次幂。 SELECT POWER(expr ,2) SQRT(expr) expr的平方根 SELECT SQRT(expr) SIN(expr) 正弦 SELECT SIN(expr) COS(expr) 余弦 SELECT COS(expr) TAN(expr) 正切 SELECT TAN(expr) COT(expr) 余切 SELECT COT(expr) ASIN(expr) 反正弦 SELECT ASIN(expr) ACOS(expr) 反余弦 SELECT ACOS(expr) ATAN(expr) 反正切 SELECT ATAN(expr)
  • 请求示例 更新项目id为9d80d070b6d44942af73c9c3d38e0429下的防火墙id为7a004e79-0b8b-4679-ab20-267f3946e8ba的域名组id为94da194d-24b2-4f60-919e-cf0bc76c75b3,修改名称为test。 https://{Endpoint}/v1/9d80d070b6d44942af73c9c3d38e0429/domain-set/94da194d-24b2-4f60-919e-cf0bc76c75b3?fw_instance_id=7a004e79-0b8b-4679-ab20-267f3946e8ba&enterprise_project_id=default { "name" : "test", "description" : "" }
  • 修订记录 发布日期 修订记录 2024-02-29 新增查看算法详情的指导:查看算法详情 重构创建训练作业的操作指导:创建训练作业 2023-12-29 训练作业挂载SFS Turbo时支持文件夹权限控制:创建训练作业 模型转换提供ATC模型转换工具和MindSpore Lite离线转换模型工具链接:模型转换操作 2023-11-17 补充NPU训练示例:基于训练作业启动PyTorch DDP on Ascend加速卡训练示例 2023-10-01 支持配置容器运行时的用户ID:创建训练作业 Cloud Shell提供问题定位提示:使用Cloud Shell登录训练容器 2023-08-01 新增训练作业支持按资源池维度筛选训练作业功能:停止、重建或查找作业
  • 如何防止Cloud Shell的Session断开 如果需要长时间运行某一个任务,为避免在期间连接断开导致任务失败,可通过使用screen命令使得任务在远程终端窗口运行。 如果镜像中未安装screen,则执行“apt-get install screen”安装。 创建screen终端。 # 使用 -S 创建一个叫name的screen终端 screen -S name 显示已创建的screen终端。 screen -ls There are screens on: 2433.pts-3.linux (2013年10月20日 16时48分59秒) (Detached) 2428.pts-3.linux (2013年10月20日 16时48分05秒) (Detached) 2284.pts-3.linux (2013年10月20日 16时14分55秒) (Detached) 2276.pts-3.linux (2013年10月20日 16时13分18秒) (Detached) 4 Sockets in /var/run/screen/S-root. 连接“screen_id”为“2276”的screen终端。 screen -r 2276 按下“Ctrl”+“a”+“d”键离开screen终端。离开后,screen会话仍将是活跃的,之后可以随时重新连接。 更多Screen使用说明可参考Screen User’s Manual。 父主题: Cloud Shell
  • 预置的训练引擎 当前ModelArts支持的训练引擎及对应版本如下所示。 不同区域支持的AI引擎有差异,请以实际环境为准。 表1 训练作业支持的AI引擎 工作环境 系统架构 系统版本 AI引擎与版本 支持的cuda或Ascend版本 TensorFlow x86_64 Ubuntu18.04 tensorflow_2.1.0-cuda_10.1-py_3.7-ubuntu_18.04-x86_64 cuda10.1 PyTorch x86_64 Ubuntu18.04 pytorch_1.8.0-cuda_10.2-py_3.7-ubuntu_18.04-x86_64 cuda10.2 Ascend-Powered-Engine aarch64 Euler2.8 mindspore_1.7.0-cann_5.1.0-py_3.7-euler_2.8.3-aarch64 cann 5.1.0 tensorflow_1.15-cann_5.1.0-py_3.7-euler_2.8.3-aarch64 cann 5.1.0 MPI x86_64 Ubuntu18.04 mindspore_1.3.0-cuda_10.1-py_3.7-ubuntu_1804-x86_64 cuda_10.1 Horovod x86_64 ubuntu_18.04 horovod_0.20.0-tensorflow_2.1.0-cuda_10.1-py_3.7-ubuntu_18.04-x86_64 cuda_10.1 horovod_0.22.1-pytorch_1.8.0-cuda_10.2-py_3.7-ubuntu_18.04-x86_64 cuda_10.2
  • 约束限制 模型转换当前只支持Ascend芯片类型。 模型转换当前仅支持原始框架类型为Caffe和Tensorflow的模型转换。当原始框架类型为Caffe时,输入数据类型为FLOAT;当原始框架类型为Tensorflow时,输入数据类型为INT32、BOOL、UINT8、FLOAT。 ModelArts提供了转换模板供用户选择,只能选择对应模板进行转换,支持的模板描述,请参见转换模板。 针对用于Ascend芯片的模型转换,其转换限制说明可参见“昇腾开发者社区”的约束及参数说明。 压缩/转换任务指定的OBS路径,需确保OBS目录与ModelArts在同一区域。 转换后的模型,再导入ModelArts时,需从模板中选择元模型。 支持模型文件类型为onnx的模型转换,转换时会先将其转换为Tensorflow框架的FrozenGraphDef格式,然后再转换为om格式。转换工具要求onnx版本为1.6.0,opset为9+。 当原始框架类型为Caffe时,模型文件(“.prototxt”)和权重文件(“.caffemodel”)的op name、op type必须保持名称一致(包括大小写)。 当原始框架类型为Caffe时,除了top与bottom相同的layer以外(例如BatchNorm,Scale,ReLU等),其他layer的top名称需要与其name名称保持一致。 当原始框架类型为TensorFlow时,支持FrozenGraphDef格式和SavedModel格式。如果是SavedModel格式,转换时会先将其转换为FrozenGraphDef格式,然后再转换为om格式。 不支持动态shape的输入,例如:NHWC输入为[?,?,?,3]多个维度可任意指定数值。模型转换时需指定固定数值。 输入数据最大支持四维,转维算子(reshape、expanddim等)不能输出五维。 模型中的所有层算子除const算子外,输入和输出需要满足“dim!=0”。 模型转换不支持含有训练算子的模型。 量化(uint8)后的模型不支持模型转换。 模型中的算子只支持2D卷积,暂不支持3D卷积。暂不支持多批量转换batch_normalization_1算子和FusedBatchNorm算子。 只支持Caffe算子清单和Tensorflow算子清单中的算子,并需满足算子限制条件。
  • 排查是否有权限 登录统一身份认证服务管理控制台。 查看当前登录所用的账号或IAM用户所属的用户组。 具体操作请参见《统一身份认证服务用户指南》中的查看或修改用户信息章节。 查看用户组的权限中是否包含:“全局服务”中“对象存储服务”项目的“Tenant Administrator”权限、当前所属区域的“Elasticsearch Administrator”权限。 具体操作请参见《统一身份认证服务用户指南》中的查看或修改用户组章节。 如果用户组的权限中不包含以上两个权限,请执行4。 如果用户组的权限中包含以上两个权限,请联系人工客服协助解决。 为用户组添加:“全局服务”中“对象存储服务”项目的“Tenant Administrator”权限、当前所属区域的“Elasticsearch Administrator”权限。 具体操作请参见《统一身份认证服务用户指南》中的查看或修改用户组章节。
  • 原因分析及处理方法 如果集群列表的任务状态显示“冻结”,可能是集群冻结状态导致集群不可用。 如果集群列表的任务状态显示“配置错误,重启失败”,可能是X-pack参数配置导致集群不可用。 如果集群节点的日志内容存在警告“master not discovered or elected yet, an election requires at least 2 nodes with ids [xxx, xxx, xxx, ...], have discovered [xxx...] which is not a quorum”,可能是安全组策略设置不合理导致集群不可用。 如果集群节点的日志内容存在明显的关于插件的报错“fatal error in thread [main], exitingjava.lang. NoClassDefFoundError: xxx/xxx/.../xxxPlugin at ...”,可能是插件不兼容导致集群不可用。 如果集群的健康状态为红色和且“unassigned shards”不为0,表示集群存在无法分配的索引分片,是分片未正常分配导致集群不可用。 如果集群进行备份恢复或集群迁移操作后,出现的不可用现象,可能是数据类型不兼容导致集群不可用。 如果集群节点的日志内容存在报错“OutOfMemoryError”和警告“[gc][xxxxx] overhead spent [x.xs] collecting in the last [x.xs]”,可能是集群负载过高导致集群不可用。
  • 搭建Web环境 安装Web环境 将弹性公网IP从云服务器discuz01上解绑,并绑定至云服务器discuz02上。 远程登录云服务器discuz02,填写用户名和密码。 依次执行以下命令,安装MySQL。 wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm yum -y install mysql57-community-release-el7-10.noarch.rpm yum -y install mysql-community-server --nogpgcheck 执行以下命令,安装Apache服务器、PHPFastCGI管理器、MySQL客户端和MySQL数据库服务器。 yum install -y httpd php php-fpm mysql mysql-server php-mysql 回显如下,说明安装成功。 Complete! 执行以下命令,更新安装Apache服务器、PHPFastCGI管理器、MySQL客户端和MySQL数据库服务器。 yum reinstall -y httpd php php-fpm mysql mysql-server php-mysql 回显如下,更新安装成功。 Complete! 配置Web环境 执行以下命令,启动httpd服务。 service httpd start 执行以下命令,设置开机自动启动httpd服务。 chkconfig httpd on 执行以下命令,启动php-fpm服务。 service php-fpm start 执行以下命令,设置开机自动启动php-fpm服务。 chkconfig php-fpm on 执行以下命令,关闭防火墙。 systemctl stop firewalld.service 执行以下命令,重新查看防火墙状态是否为关闭。 systemctl status firewalld 执行以下命令,启动MySQL服务。 systemctl start mysqld 执行以下命令,设置开机自动启动MySQL服务。 systemctl enable mysqld.service 在浏览器中输入http://弹性公网IP地址 ,即可访问服务器的默认主页。
  • 部署网站代码 远程登录云服务器discuz02,执行以下命令,安装Discuz软件。 wget https://gitee.com/Discuz/DiscuzX/releases/download/v3.5-20231001/Discuz_X3.5_SC_UTF8_20231001.zip 以上软件来自第三方网站,仅作示例。建议自行获取需要的版本软件,以应对不同需求。 上述软件仅为搭建网站指导示例,若搭建的网站做商业用途请自行准备所需软件。 执行以下命令,解压Discuz安装包。 unzip Discuz_X3.5_SC_UTF8_20231001.zip 执行以下命令,将解压后的“upload”文件夹下的所有文件复制到“var/www/html”路径下。 cp -r upload/* /var/www/html 执行以下命令,将写权限赋予给其他用户。 chmod -R 777 /var/www/html 在浏览器里输入地址:http://弹性公网IP地址进入安装界面,按照Discuz安装向导进行安装。 确认协议,并单击“我同意”。 开始安装后,检查安装环境并单击“下一步”。 设置运行环境,并单击“下一步”。 安装数据库,填写数据库信息,单击“下一步”完成安装。 数据库服务器地址即为discuz01的私有IP地址。 数据库密码是discuz01配置的数据库管理员root账号的密码。 自定义管理员信息。
  • 搭建数据库 安装MySQL 本文档以CentOS 7.2操作系统为例安装MySQL。 远程登录云服务器discuz01,填写用户名和密码。 依次执行以下命令,安装MySQL。 wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm yum -y install mysql57-community-release-el7-10.noarch.rpm yum -y install mysql-community-server --nogpgcheck 配置MySQL 执行以下命令,启动MySQL服务。 systemctl start mysqld systemctl enable mysqld 查看MySQL运行状态。 systemctl status mysqld.service 回显信息如下所示: # systemctl status mysqld.service ● mysqld.service - MySQL Server Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled) Active: active (running) since Mon 2021-08-23 10:54:55 CST; 7s ago Docs: man:mysqld(8) http://dev.mysql.com/doc/refman/en/using-systemd.html Main PID: 7873 (mysqld) CGroup: /system.slice/mysqld.service └─7873 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid Aug 23 10:54:49 ecs-adc3-420652-aed6 systemd[1]: Starting MySQL Server... Aug 23 10:54:55 ecs-adc3-420652-aed6 systemd[1]: Started MySQL Server. 执行以下命令,获取安装MySQL时自动设置的root用户密码。 grep 'temporary password' /var/log/mysqld.log 回显如下类似信息。 2021-08-16T11:33:37.790533Z 1 [Note] A temporary password is generated for root@localhost: ;8nPd29lhs,k 执行以下命令,并按照回显提示信息进行操作,加固MySQL。 mysql_secure_installation Securing the MySQL server deployment. Enter password for user root: #输入上一步骤中获取的安装MySQL时自动设置的root用户密码 The existing password for the user account root has expired. Please set a new password. New password: #设置新的root用户密码 Re-enter new password: #再次输入密码 The 'validate_password' plugin is installed on the server. The subsequent steps will run with the existing configuration of the plugin. Using existing password for root. Estimated strength of the password: 100 Change the password for root ? ((Press y|Y for Yes, any other key for No) : N #是否更改root用户密码,输入N ... skipping. By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y #是否删除匿名用户,输入Y Success. Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y #禁止root远程登录,输入Y Success. By default, MySQL comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y #是否删除test库和对它的访问权限,输入Y - Dropping test database... Success. - Removing privileges on test database... Success. Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y #是否重新加载授权表,输入Y Success. All done! 执行以下命令,再根据提示输入数据库管理员root账号的密码进入数据库。 mysql -u root -p 执行以下命令,使用MySQL数据库。 use mysql; 执行以下命令,查看用户列表。 select host,user from user; 此命令及以下数据库语句均以分号结尾,请勿忽略。 执行以下命令,刷新用户列表并允许所有IP对数据库进行访问。 update user set host='%' where user='root' LIMIT 1; 执行以下命令,强制刷新权限。允许同一子网中设置为允许访问的云服务器通过私有IP对MySQL数据库进行访问。 flush privileges; 执行以下命令,退出数据库。 quit 执行以下命令,重启MySQL服务。 systemctl restart mysqld 执行以下命令,设置开机自动启动MySQL服务。 systemctl enable mysqld 执行以下命令,关闭防火墙。 systemctl stop firewalld.service 重新查看防火墙状态是否为关闭。 systemctl status firewalld
  • Ghost 安装与配置 Ghost v1.0.0 及以上版本已加入了Ghost-CLI,因此可以直接安装配置Ghost-CLI。 安装Ghost-CLI。 sudo npm i -g ghost-cli 创建一个文件夹,之前介绍过Nginx的重要文件结构 /var/www/ 就是将要创建文件夹的地方。 sudo mkdir -p /var/www/ghost ghost在/root文件夹中安装Ghost 将无法正常工作。 配置权限。 sudo chown [user]:[user] /var/www/ghost [user] 是在安装阶段创建的用户。 进入刚才创建的文件夹。 cd /var/www/ghost/ 执行以下命令,用Ghost-CLI 安装Ghost。 ghost install 如果Ghost安装时提示node版本不匹配,可以在nodejs官方网站查询相应的版本重新安装。 https://nodejs.org/en/download/ 配置Ghost。 如果上面在 /var/www/ghost/ 目录下运行ghost install成功的话,会要求配置一些东西: 您可以根据需要进行简单的配置。如果配置后需要修改可以通过以下命令去文件中进行配置: vi config.production.json 打开之后就是生产环境配置内容了。参考配置见下图:
  • 安装Node.js 执行以下命令,安装Node.js sudo curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash - sudo apt-get install -y nodejs 安装完成后,执行以下命令查看Node.js版本和npm版本。 node -v npm -v 回显信息: root@ecs-c47c:~# node -v v18.16.1 root@ecs-c47c:~# npm -v 9.5.1
  • 安装Nginx 部署Ghost博客,需要安装Nginx作为HTTP服务器,本节以安装Nginx 1.10.0 版本为例。 输入以下命令安装Nginx。 sudo apt-get update sudo apt-get install nginx 调整防火墙(可选)。 UFW(Uncomplicated Firewall)是一个iptables的接口,可以简化配置防火墙的过程。Ubuntu默认安装了UFW,执行以下命令查看防火墙的状态。 sudo ufw status 如果你没有也不想开启防火墙,则可以直接跳过此步骤,如果你想要开启防火墙可以通过以下命令实现。 sudo ufw enable 之后再次检查防火墙状态验证是否成功开启防火墙。 在测试Nginx之前,需要重新配置防火墙软件以允许访问Nginx。执行以下命令,将Nginx自动 注册在UFW。 sudo ufw app list 回显信息: Available applications: Nginx Full Nginx HTTP Nginx HTTPS ... Nginx Full:此配置文件打开端口 80(正常,未加密的Web流量)和端口443(TLS / SSL加密流量) Nginx HTTP:此配置文件仅打开端口 80(正常,未加密的Web流量) Nginx HTTPS:此配置文件仅打开端口 443(TLS / SSL加密流量) 执行以下命令确保防火墙允许HTTP和HTTPS连接。 sudo ufw allow 'Nginx Full' 验证Nginx是否正常工作。 在浏览器中通过域名或者IP地址进行访问Nginx,如果Nginx正常启动则会打开Welcome to nginx的欢迎页面。 使用浏览器访问 “http://云服务器IP地址”,显示如下页面,说明Nginx安装成功。 配置Nginx。 新建配置文件。 vim /etc/nginx/sites-available/ghost.conf 把以下配置内容粘贴进你的配置文件中。 server { listen 80; server_name 119.3.xx.xxx.com; #这里写你的域名或者ip地址 location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $http_host; proxy_pass http://127.0.0.1:2368; } } 以上配置文件已经把反向代理写好了, 唯一需要修改的地方是: 把server_name改成你自己的顶级域名. 把配置文件软链接到sites-enabled中。 sudo ln -s /etc/nginx/sites-available/ghost.conf /etc/nginx/sites-enabled/ghost.conf 重启Nginx。 sudo service nginx restart
  • 安装gcc和g++ 执行以下命令,安装常用的开发编译工具包。 sudo apt-get install build-essential 执行如下命令,安装gcc。 apt-get install gcc 执行以下命令查看gcc版本。 gcc --version 回显信息: root@ecs-c47c:~# gcc --version gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0 Copyright (C) 2019 Free Software Foundation, Inc. 执行以下命令安装g++。 sudo apt-get install g++ 执行以下命令查看g++版本。 g++ --version 回显信息: root@ecs-c47c:~# g++ --version g++ (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0 Copyright (C) 2019 Free Software Foundation, Inc.
  • 操作步骤 购买市场镜像 登录华为云官网。 单击菜单栏的“云市场”,进入“华为云市场”页面。 在页面右上角的搜索框中,输入“Drupal”。 在搜索结果中,选择市场镜像“Drupal内容管理系统(LAMP)”,进入对应市场镜像的购买页面。 在本文中,购买的市场镜像规格如图1所示。“虚拟私有云”设置为关联预先创建的“vpc-drupal” 图1 购买市场镜像 根据需要设置市场镜像规格后,单击“立即购买”。 确认订单详情,并设置云主机的登录密码。 图2 设置云主机登录密码 勾选“我已阅读并同意《华为云市场服务协议》”,单击“提交订单”。 当弹性云服务器处于“运行中”后,表示市场镜像购买成功。 设置弹性云服务器 在弹性云服务器列表中,单击购买成功的弹性云服务器,查看详细信息。 设置安全组。 弹性云服务器使用系统默认的安全组“Sys-default”,要想通过网站访问方式登录弹性云服务器,需要新增一条安全组规则,详细内容请参见添加安全组规则。 单击“安全组”页签,并展开系统默认的“Sys-default”安全组。 单击“更改安全组规则”,进入“Sys-default”安全组详细信息页面。 在“入方向规则”页签,单击“添加规则”。 根据表1完成设置。 单击“确定”。 表1 安全组规则 方向 协议/应用 端口 源地址 入方向 HTTP(80) 80 0.0.0.0/0 绑定弹性公网IP。 要想通过网站访问方式登录弹性云服务器,需要为弹性云服务器绑定弹性公网IP,详细内容请参见为弹性云服务器申请和绑定弹性公网IP。 单击“弹性公网IP”页签。 单击“查看弹性公网IP”,进入“弹性公网IP”页面。 (可选)若没有可用的弹性公网IP,则单击“购买弹性公网IP”进行购买。 在弹性公网IP列表中,单击待绑定弹性公网IP“操作”列的“绑定”,完成操作。 Drupal安装准备 在浏览器中输入“http://弹性云服务器公网IP/9panel”,进行Websoft运维面板。 (可选)为Drupal注册一个域名,并配置域名到弹性公网IP的解析记录。 若您想要通过域名进行网站应用程序的安装,需要执行本步骤。 如果您想要选择华为云作为您的域名注册商,可以参考域名注册完成网站域名的注册,并通过华为云云解析服务的快速添加网站域名解析完成解析记录的配置。 修改数据库初始密码。 数据库默认用户为root,默认密码为123456。为保证数据库安全,执行本步骤修改数据库初始密码。 单击“第二步:修改数据库密码”的“马上修改”,进入“phpMyAdmin”页面。 在“常规设置”区域单击“修改密码”。 完成新密码的设置后,单击“执行”完成数据库初始密码的修改。 安装Drupal 回到Websoft运维面板中,单击导航栏的“应用安装”。 单击“第三步:完成安装向导”的“马上安装” 设置语言为“简体中文”,单击“Save and continue”。 图3 设置网站语言 选择“标准”安装方式,单击“保存并继续”。 图4 选择安装方式 安装网站。 此过程无需设置,等待完成“安装网站”和“安装翻译”两步。 设置网站。 设置站点信息、站点维护账号信息以及区域信息,请妥善保存账号和密码。 单击“保存和继续”,开始更新配置翻译。 体验Drupal 安装完成,自动跳转到Drupal后台,您可以在此对您的网站进行管理和维护。 图5 Drupal后台
  • 简介 本文介绍通过华为云市场镜像“Drupal内容管理系统(LAMP)”搭建Drupal网站的方法。 Drupal是使用PHP语言编写的开源内容管理框架(CMF),它由内容管理系统(CMS)和PHP开发框架(Framework)共同构成。Drupal用于构造提供多种功能和服务的动态网站,能支持从个人博客到大型社区等各种不同应用的网站项目。 更多关于Drupal的信息请参考https://www.drupal.org/。
  • 配置Sharepoint 2016 在运行的Sharepoint产品配置向导中,单击“Next”。 图1 Sharepoint产品配置向导 单击“Yes”,允许在配置过程中重启服务。 图2 重启服务提醒 因为没有已经存在的服务器场,所以选择“Create a new server farm”,创建一个新的服务器场。 图3 创建Sharepoint服务器场 配置指定数据库设置,由于Sharepoint的数据库在本机,所以填写本机的数据库及账户,单击“Next”。 图4 指定Sharepoint数据库设置 填写服务器场的密码,单击“Next”。 图5 设置Sharepoint服务器场密码 设置服务器角色,选择“Front-end”,单击“Next”。 图6 设置Sharepoint服务器角色 设置Sharepoint管理中心的端口号为“10000”. 图7 Sharepoint管理中心端口号 查看并确认Sharepoint配置。 图8 Sharepoint配置 单击“Next”,开始配置Sharepoint,共10步。 图9 配置Sharepoint进度 Sharepoint配置成功,单击“Finish”。 图10 Sharepoint配置成功 父主题: 搭建Microsoft SharePoint Server 2016
  • 编辑hosts.allow和hosts.deny “/etc/hosts.allow”和“/etc/hosts.deny”是控制远程访问的文件,通过配置该文件可以允许或者拒绝某个IP或者IP段的客户访问Linux云服务器的某项服务。 比如SSH服务,通常只对管理员开放,那就可以禁用不必要的IP,而只开放管理员可能使用到的IP段。 因为云服务器需要在不同地点登录,建议编辑“/etc/hosts.allow”允许所有IP地址登录,这样不会影响正常使用。 vim /etc/hosts.allow 在最后一行增加“sshd:ALL”。 可以通过一些方法识别云服务器的安全风险,比如检查SSH状态,查看疑似恶意登录的IP,然后在“/etc/hosts.deny”中将这些地址禁止。
  • 增加防火墙规则:开放指定端口 CentOS 7系列操作系统的默认防火墙是fireware,而不是iptables。因此,如果系统是默认防火墙,则不需要执行本节操作;如果安装过iptables,则要参考本节指导开放SSH登录的5000端口。 执行以下命令,检查是否安装了iptables。 service iptables status 如果提示如下类似信息,表示未安装iptables,跳过本节,继续添加安全组规则操作。 如果提示如下类似信息,表示安装了iptables,并且为“active”状态。继续执行步骤2。 执行以下命令增加iptables规则,开放5000端口。 iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 5000 -j ACCEPT 执行以下命令查看iptables现有规则是否已包含5000端口。 iptables -L -n
共100000条