华为云实战杂记

在这里插入图片描述

配置nginx服务器

首先我们拿到一台服务器时,并不知道系统是否存在Nginx我们可以在Linux命令行执行如下命令查看

find / -name nginx*

find / -name nginx* 查找所有名字以nginx开头的文件或者目录,我们看看系统里面都有哪些文件先,这样可以快速定位到我们想要修改的文件,当然我们也可以单刀直入式的直接搜索 find / -name nginx.conf 来快速定位。

官方文档:使用CentOS系统镜像部署Nginx服务器
1, 执行如下命令添加CentOS 7系统的Nginx yum资源库。
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

注意:
Nginx版本不断更新,可能导致此命令执行失败。
届时请在 http://nginx.org/packages/centos/7/noarch/RPMS 路径下获取最新的Nginx软件包,替换nginx-release-centos-7-0.el7.ngx.noarch.rpm字段。

2, 执行如下命令安装Nignx服务。
sudo yum install -y nginx

3, 刚安装的Nignx不会自行启动,执行如下命令启动Nignx。
sudo systemctl start nginx.service

4, 执行如下命令设置开机自启动。
sudo systemctl enable nginx.service

配置好后可以使用命令systemctl status nginx查看状态,如下图:
在这里插入图片描述

部署后通过公网ip无法访问

  • 原因:默认是80端口。公网IP,80端口没开放
  • 解决方法:网页控制台中为安全组添加入方向规则,如下图
    在这里插入图片描述

如若修改端口,或者使用ssl-443端口,都需要把相应端口添加到入方向规则

配置网站访问目录

nginx安装好后,安装目录在/etc/nginx,配置文件为/etc/nginx/nginx.conf

shell命令下使用vim /etc/nginx/nginx.conf即可对其进行编辑。查看内容的话使用cat /etc/nginx/nginx.conf
不习惯vi/vim命令的,也可以在windows下使用xftp工具(有免费版Free for Home/School),在windows侧进行编辑。

  • 为所有网站设置一个根目录
    mkdir -p /data/www在根目录下创建/data/www目录。
  • 设置nginx服务器指向这个根目录。
    编辑nginx.conf文件,内容如下:
server {
    listen       80 default_server;
    # listen       [::]:80 default_server;
    server_name  _;
    root         /data/www;

    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;

    location / {
    }

    error_page 404 /404.html;
        location = /40x.html {
    }

    error_page 500 502 503 504 /50x.html;
        location = /50x.html {
    }
}
  • 重启nginx服务
    systemctl restart nginx

这时候在浏览器中输入云服务器的公网ip地址发现报错,是因为/data/www目录下无index.html启动项。通过如下命令
cd /data/www/
echo huawei cloud say hello > index.html
在data/www/目录下创建了一个内容为huawei cloud say hello的极简index.html页面,这个时候输入公网ip即可顺利打开页面。

其它网站只需要放到data/www/目录下即可,通过:公网ip/对应目录,即可访问。

nginx配置ssl证书实现https访问

上述使用CentOS系统镜像部署Nginx服务器提到了域名解析和证书安装的内容。

申请证书

注意申请nginx版本,最终是一个pem文件、一个key文件。

  • 阿里云上通过域名可以免费申请有效期3个月的证书。
  • 华为云没找到免费证书途径,购买还是挺贵的。

PS:公司帮忙通过阿里云申请了个3个月证书,并提供了个可用域名。苦笑!

配置ssl证书

  • /etc/nginx/下创建cert文件夹,并把上述两个证书文件(pem和key)放进去。笔者这部分功能通过xftp在windows侧来操作的。
  • 配置nginx.conf文件
    把Settings for a TLS enabled server.下部的注释取消,并适当修改部分内容以匹配自己服务器的配置,如下所示。
# Settings for a TLS enabled server.
#
    server {
        listen       443 ssl http2 default_server;
        listen       [::]:443 ssl http2 default_server;
        server_name  因为我有域名,所以填的域名,注意不带协议头https,没有域名只能填ip;
        root         /data/www;

        # pem和key的路径最好用全路径
        ssl_certificate "/etc/nginx/cert/xxxx.pem";
        ssl_certificate_key "/etc/nginx/cert/xxxx.key";
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;
        ssl_ciphers PROFILE=SYSTEM;
        ssl_prefer_server_ciphers on;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

下一步,配置对外访问端口和将http请求强制转为https

    server {
        # 监听端口
        listen       8001 default_server;
        listen       [::]:80 default_server;
        # 使用自己的域名
        server_name  ton.qiyoogame.com;
        # 将http请求强制转为https
        # rewrite,重写指令:$host$:请求地址, $1:请求参数,permanent:永久访问 
        rewrite ^(.*)$ https://$host$1 permanent;
    }

配置好后,下面cd到sbin目录下使用类似windows下的命令来重启nginx。

  • ./nginx -t 可以查看配置语法是不是正确的
  • ./nginx -s reload 重启nginx,使配置生效

参考文档:CentOS环境下Nginx配置SSL证书实现https请求详解

配置node.js环境

华为云官网文档:使用Node.js应用镜像运行Node.js程序,通过提供Node.js应用镜像运行Node.js程序。按照文档流程,一顿操作下来又是收费。

若你已购买了云主机,且最低配置满足2核2G,且购置了Flexus应用服务器L实例。那么完全可以自己来安装配置node.js环境。

腾讯云:手动搭建 Node.js 环境,提到通过使用wget https://nodejs.org/dist/v16.10.0/node-v16.10.0-linux-x64.tar.xz命令来下载node.js的二进制安装包。但是笔者在华为云测试后,一直提示连接超时。

因此依旧选择和nginx安装一样,使用使用华为云提供的包管理器YUM安装。
1, 更新包索引

sudo yum update

2, 安装NodeSource的Node.js仓库

curl -sL https://rpm.nodesource.com/setup_18.x | sudo bash -

注意:上面的URL中的18.x代表Node.js的版本号,你可以根据需要替换为其他版本号,如15.x、16.x等。
3, 安装Node.js

sudo yum install -y nodejs

4, 验证Node.js安装成功

node -v
npm -v

部署一个极简node.js测试项目

新建/data/node/test1目录,其中/data/node作为以后所有node.js项目的根目录。

mkdir -p /data/node/test1

cd到test1目录,touch test1.js创建一个js文件,编辑test1.js内容为:

const http = require('http');
const hostname = '0.0.0.0';
const port = 3000;
const server = http.createServer((req, res) => {
	res.statusCode = 200;
	res.setHeader('Content-Type', 'text/plain');
	res.end('Hello World\n');
});
server.listen(port, hostname, () => {
	console.log(`Server running at http://${hostname}:${port}/`);
});

执行node test1.js启动服务器。
浏览器若能顺利访问http://弹性公网IP:3000,则说明部署成功。

参考文档

Linux系统之部署Node.js环境
华为云之Linux服务器中部署Node.js【玩转华为云】

配置mysql

查看主机信息,以确定使用32位还是64位。

[root@hcss-ecs-e2cb etc]# uname -a
Linux hcss-ecs-e2cb 4.18.0-348.7.1.el8_5.x86_64 #1 SMP Wed Dec 22 13:25:12 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

可以使用uname -a也可以在云服务器控制台查看
在这里插入图片描述

下载对应位数的安装包

https://downloads.mysql.com/archives/community/,笔者选择了口碑较好的mysql5.7版本的最新44号版本:mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz

查看是否已安装mysql

rpm -qa|grep mysql

笔者发现这个命令有问题啊,我安装好mysql了,使用这个命令也没有任何输出!

whereis mysql
笔者这边,安装mysql后,使用这个命令是有输出的。

若发现已经安装了mysql则需要先卸载。

CentOS有可能自带mariadb,与MySQL数据库冲突

检测是否安装了mariadb

rpm -qa | grep mariadb

安装mysql

  • 新建 /data/softwares 目录,用于放置从外部下载的软件。移动上述安装包到center os中data/softwares中。
  • 新建 /usr/local/mysql 目录,用于mysql的安装目录
    cd到softwares目录,执行tar -zvxf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz -C /usr/local/mysql解压文件。最终解压的文件都位于/usr/local/mysql/mysql-5.7.44-linux-glibc2.12-x86_64。这里为了后续方便,把解压的文件从mysql-5.7.44-linux-glibc2.12-x86_64目录移动到其上层文件夹mysql中。

[root@hcss-ecs-e2cb softwares]# cd /usr/local/mysql
[root@hcss-ecs-e2cb mysql]# ls
mysql-5.7.44-linux-glibc2.12-x86_64
[root@hcss-ecs-e2cb mysql]# mv mysql-5.7.44-linux-glibc2.12-x86_64/ /usr/local/mysql

检查有无安装过 mysql 用户组,如果无则创建

检查mysql 用户组是否存在,输入命令:

cat /etc/group | grep mysql
cat /etc/passwd |grep mysql

如果存在用户账号已存在,则需要进行删除,永久性删除用户账号命令参考:

userdel mysql
groupdel mysql

创建mysql 用户组和用户:

groupadd mysql
useradd -r -g mysql mysql

创建用户目录 并修改权限

mkdir -p /data/mysql #在data目录下创建用户的工作目录。
chown mysql:mysql -R /data/mysql #把工作组的权限赋予该目录

配置my.cnf文件

由于没找到该文件,于是笔者在/usr/local/mysql目录下创建了该文件。并填充以下内容:

[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
bind-address=0.0.0.0 #所有ip均可访问
port=3306 #端口号
user=mysql
basedir=/usr/local/mysql #mysql路径
datadir=/data/mysql #赋予权限路径
socket=/tmp/mysql.sock
log-error=/data/mysql/mysql.err
pid-file=/data/mysql/mysql.pid
#character config
character-set-client-handshake=FALSE
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
init_connect=‘SET NAMES utf8mb4’

需要注意这里端口号是3306,也是mysql的默认端口号,后面需要把该端口加入到安全组中,否则无法连接到数据库。

进入mysql/bin目录,初始化数据库

cd /user/local/mysql/bin

./mysqld --defaults-file=/usr/local/mysql/my.cnf --basedir=/usr/local/mysql/ --datadir=/data/mysql/ --user=mysql --initialize

查看初始密码

cat /data/mysql/mysql.err
最后面一行root@localhost:后面的就是密码,把冒号后面的密码复制保存一下

将mysql.server放置到/etc/init.d/mysql中,并启动服务器

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

service mysql start

ps -ef | grep mysql

到此mysql安装完成

进入mysql,并修改密码

mysql/bin目录下执行

./mysql -u root -p
把密码输入,即可进入mysql(若是第一次进入则输入初始密码)命令状态。

依次执行下方三个命令,修改密码, 注意:最后的冒号不能忽略

set password = password(‘你的密码’);

alter user ‘root’@‘localhost’ password expire never;

flush privileges;

查看user 、host 关系

mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select user,host from user;
+---------------+-----------+
| user          | host      |
+---------------+-----------+
| mysql.session | localhost |
| mysql.sys     | localhost |
| root          | localhost |
+---------------+-----------+
3 rows in set (0.00 sec)

使用select user,host from user; 这个指令,需要先使用 use mysql 指令。

设置外部图形化软件连接虚拟机数据库

先登录数据库

./mysql -u root -p

访问mysql库

use mysql

使root能在任何host访问

update user set host = ‘%’ where user = ‘root’;

刷新

FLUSH PRIVILEGES;

设置MySQL开启自动启动

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

赋予可执行权限

chmod +x /etc/init.d/mysqld
chkconfig --add mysqld

添加服务

chkconfig --add mysqld

显示服务列表

chkconfig --list

[root@hcss-ecs-e2cb ~]# chkconfig --list

Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native
      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.
      To see services enabled on particular target use
      'systemctl list-dependencies [target]'.

hostguard      	0:off	1:off	2:on	3:on	4:on	5:on	6:off
multi-queue-hw 	0:off	1:off	2:on	3:on	4:on	5:on	6:off
mysqld         	0:off	1:off	2:on	3:on	4:on	5:on	6:off

看到3、4、5状态为开或者为 on 则表示成功。如果是 关或者 off 则执行一下

chkconfig --level 345 mysqld on

查看当前数据库列表

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

再查看user、host关系

mysql> select user,host from user;
+---------------+-----------+
| user          | host      |
+---------------+-----------+
| root          | %         |
| mysql.session | localhost |
| mysql.sys     | localhost |
+---------------+-----------+
3 rows in set (0.00 sec)

连接测试

windows上可以使用免费的MySQL Workbench或者付费的Navicat for MySQL

参考文档

CentOS7 安装MySQL5.7.44

MySQL之——MySQL5.7以上my.cnf 配置文件详解 _

安装MySQL,这个和我这边配置流程差不了太多。

华为云x86架构下部署mysql

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/900504.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Jenkins】解决在Jenkins Agent节点容器内无法访问物理机的docker和docker compose的问题

解决在Jenkins Agent节点容器内无法访问物理机的docker和docker compose的问题 1. 确定物理机docker和docker compose已经安装2. 编写Jenkins Agent结点docker-compose.yaml配置文件3. 修改docker运行时文件权限4. 启动容器并验证 最近接触到一个发布产物是一个 docker镜像的项…

【力扣】GO解决子序列相关问题

文章目录 一、引言二、动态规划方法论深度提炼子序列问题的通用解法模式 三、通用方法论应用示例:最长递增子序列(LeetCode题目300)Go 语言代码实现 四、最长连续递增序列(LeetCode题目674)Go 语言代码实现 五、最长重…

EXCELL中如何两条线画入一张图中,标记坐标轴标题?

1,打开excel,左击选中两列, 2,菜单栏>“插入”>”二维折线图”选中一个 3,选中出现的两条线中的一条右击>最下一行,“设置数据系列格式” 4,右测“系列选项中”>点击“次坐标轴” 5…

邮件系统SSL加密传输,保护你的电子邮件免受网络威胁

在互联网的浪潮中,企业数字化转型的步伐不断加快。企业邮箱作为数字化应用的重要组成部分,已成为员工沟通、协同工作和企业管理的关键工具。但是在公共网络安全性普遍较弱的背景下,黑客容易侵入企业网络,监控流量,截获…

私域朋友圈运营

今天必须给大家分享一份超棒的朋友圈运营思维导图 有了它,你可以逐步打造属于自己的精彩朋友圈🎉。无论是想分享生活点滴💧,还是展示个人魅力✨,又或者推广自己的业务📈,这份思维导图都能给你指…

vuetify学习笔记(v-app和v-responsive)

我最近在学习vuetify3,我以前是用element plus和taiwind css。vuetify的一个好处是,它不仅是一个向element plus一样提供好用的组件库,而且还提供了向taiwind css一样的原子类,可以通过类名方便的定义组建的样式。以前element plu…

为什么使用 toFixed 方法的结果不一致呢?

偶遇一个不准确的方法 toFixed() ,其是 JS 中用于将数字格式化为指定小数位数的方法,但有时返回的结果不够准确,展示如下: 这通常是由于 JavaScript 对浮点数的处理方式导致的。 1. 浮点数精度问题 JavaScript 中的数字是以 IEE…

乡村小道图像分割系统:智能化检测

乡村小道图像分割系统源码&数据集分享 [yolov8-seg-C2f-Faster-EMA&yolov8-seg-HGNetV2等50全套改进创新点发刊_一键训练教程_Web前端展示] 1.研究背景与意义 项目参考ILSVRC ImageNet Large Scale Visual Recognition Challenge 项目来源AAAI Globa…

JavaWeb合集22-Apache POI

二十二、Apache POI Apache POI是一个处理Miscrosoft Office各种文件格式的开源项目。简单来说就是,我们可以使用POI在Java 序中对Miscrosoft Office各种文件进行读写操作。一般情况下,POI都是用于操作Excel文件。 使用场景:银行网银系统导出…

Unity Vision Pro 保姆级开发教程-PolySpatial VisionOS Samples 示例场景

视频教程地址 PolySpatial VisionOS Samples 示例场景 Unity Vision Pro 中文课堂教程地址: Unity3D Vision Pro 开发教程【保姆级】 | Unity 中文课堂 有界体积样本 Balloon Gallery 气球画廊 气球画廊是一个迷你游戏,演示了使用Indirect Pinch and …

vue3使用i18n做国际化多语言,实现常量跟随语言切换翻译

因为我有一个常量的配置文件在项目中,而且有中文内容,我想在切换语言的时候,跟着这个翻译也实时切换,就可以使用computed计算属性实现。 把name改成下面的样子: name: computed(() > t(pad.regularMode)), 就可以…

基于SpringBoot的人才公寓管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

一个包含了超过 200 个实用脚本的 Python 脚本库,如文件管理、网络操作、图像处理、文本处理等

前言 在日常的工作和生活中,我们经常会遇到一些重复性的任务,如文件管理、网络cao作、图像处理、文本处理等。这些任务虽然简单,但如果频繁手动cao作,不仅耗时耗力,还容易出错。 现有的软件虽然能处理一部分问题&…

Vue2+Univer 环境搭建

node js 版本 16.32 参考文档: Vue2Univer实现可编辑Excel_vue univer-CSDN博客 https://univer.ai/guides/sheet/getting-started/quickstart 实现步骤: 1、包里面直接写这些 "riophae/vue-treeselect": "0.4.0","univ…

基于深度学习的图像修复系统设计与实现(PyQt5、CodeFormer ffhq-dataset数据集)

💗博主介绍💗:✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示:文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…

Matlab 车牌识别技术

1.1设计内容及要求: 课题研究的主要内容是对数码相机拍摄的车牌,进行基于数字图像处理技术的车牌定位技术和车牌字符分割技术的研究与开发,涉及到图像预处理、车牌定位、倾斜校正、字符分割等方面的知识,总流程图如图1-1所示。 图1-1系统总…

为什么自动化测试落地这么难?

最近一直在想一个问题,就是自动化测试落地为什么这么难? 想要找到原因首先我们要明确实施自动化测试的目的,价值,以及要解决的问题是什么?然后我们可以再进一步分析为什么自动化测试很难落地? 实施自动化…

数据采集与数据分析:数据时代的双轮驱动

“在当今这个数据驱动的时代,信息已成为企业决策、市场洞察、科学研究等领域不可或缺的核心资源。而爬虫数据采集与数据分析,作为数据处理链条上的两大关键环节,它们之间相辅相成,共同构成了数据价值挖掘的强大引擎。” 爬虫数据采…

【js逆向专题】12.RPC技术

目录 一. websocket1. 什么是websocket2. websocket的原理3. websocket实现方式1. 客户端2.服务端3. 实际案例1. 案例目标2. 解析思路 二. RPC1. RPC 简介2.Sekiro-RPC1. 使用方法1. 执行方式2.客户端环境3.使用参数说明 2. 测试使用1. 前端代码2. SK API3.python调用代码 三.项…

AR模型时序预测——预测未来(含完整代码)

一、前言 随着数据科学的快速发展,利用自回归(AR)模型进行时序预测已成为一个热门话题。AR模型因其简洁有效,广泛应用于各类预测任务。本文将介绍一套基于Matlab的AR模型时序预测代码,重点在于如何通过历史数据预测未…