华为云实战杂记

news2024/11/25 20:46:11

在这里插入图片描述

配置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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux系统安装Redis详细操作步骤(二进制发布包安装方式)

安装方式介绍 在Linux系统中,安装软件的方式主要有四种,这四种安装方式的特点如下: 安装方式特点二进制发布包安装软件已经针对具体平台编译打包发布,只要解压,修改配置即可rpm安装软件已经按照redhat的包管理规范进…

雷池社区版有多个防护站点监听在同一个端口上,匹配顺序是怎么样的

如果域名处填写的分别为 IP 与域名,那么当使用进行 IP 请求时,则将会命中第一个配置的站点 以上图为例,如果用户使用 IP 访问,命中 example.com。 如果域名处填写的分别为域名与泛域名,除非准确命中域名,否…

NGINX 保护 Web 应用安全之基于 IP 地址的访问

根据客户端的 IP 地址控制访问 使用 HTTP 或 stream 访问模块控制对受保护资源的访问: location /admin/ { deny 10.0.0.1; allow 10.0.0.0/20; allow 2001:0db8::/32; deny all; } } 给定的 location 代码块允许来自 10.0.0.0/20 中的任何 IPv4 地址访问&#xf…

UE4_Niagara基础实例—9、使用条带渲染器来制作闪电

效果图: 一、通过模板Static Beam来熟悉条带渲染器 从Static Beam发射器新建niagara系统,更名为NS_StaticBeam。 打开粒子系统,界面如下: Beam Emitter Setup模块可以设置条带的开始点、结束点和切线。 我们就可以通过这个Beam E…

自动化测试:等待方式

在自动化测试中,等待是一个重要的技术,用于处理页面加载、元素定位、元素状态改变等延迟问题。 等待能够确保在条件满足后再进行后续操作,提高自动化测试的稳定性以及可靠性。 等待方式:显示等待、隐式等待、线程睡眠 1. 显式等…

【python】OpenCV—WaterShed Algorithm(1)

文章目录 1、功能描述2、代码实现3、完整代码4、效果展示5、涉及到的库函数5.1、cv2.pyrMeanShiftFiltering5.2、cv2.morphologyEx5.3、cv2.distanceTransform5.4、cv2.normalize5.5、cv2.watershed 6、参考 1、功能描述 基于分水岭算法对图片进行分割 分水岭分割算法&#x…

什么是域名?什么是泛域名?

域名 定义 域名是互联网上用于识别和定位网站或网络服务的名称。它是由一串用点分隔的字符组成,例如 “baidu.com”。就像是现实生活中建筑物的地址,方便用户在互联网的海量信息中找到特定的网站。 结构 域名从右到左依次为顶级域名(TLD&…

go语言中的Scan()和Scanln()输入函数

Scan()输入函数 package mainimport "fmt"func main() {var a intvar b stringfor {fmt.Println("请输入一个整数和一个字符串(用空格分隔):")fmt.Scan(&a, &b) // 直接读取输入到变量中fmt.Println("整数…

图书管理系统的简单实现

文章目录 图书系统逻辑分析各种操作功能的实现完整代码 个人主页 JavaSE专栏 图书系统逻辑分析 该程序设置有三个包,user 包,book 包,operation包。 book包中包含对于书的一些信息和操作;operation包中包含有对 书 的所有操作功能;user包中包…

‘perl‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。

‘perl’ 不是内部或外部命令,也不是可运行的程序 或批处理文件。 明明已经根据教程安装了perl环境,但是在cmd中依赖报该错误,本章教程提供解决办法。 一、激活perl环境 state shell ActiveState-Perl-5.36.0此时输入perl -v 是可以直接输出perl版本号的。 二、找到perl的执…

想进体制内?到底有哪些路可走?原来有这么多方法

在如今的就业大环境下,体制内工作越来越受到大家的青睐。那么,体制内为何如此受欢迎呢? 一、体制内为何备受青睐 体制内工作首先给人一种强烈的稳定感和安全感。一旦进入体制,你不用时刻担心失业的风险,能够拥有一份长…

安康旅游网站:SpringBoot设计与实现详解

目 录 目 录 I 摘 要 III Abstract IV 第一章 绪论 1 1.1 研究现状 1 1.2 设计原则 1 1.3 研究内容 2 第二章 相关技术简介 1 2.1 JSP技术 1 2.2 Java技术 2 2.3 MYSQL数据库 2 2.4 B/S结构 3 2.5 Spring Boot框架 4 第三章 系统分析 5 3.1可行性分析 5 3.1.1技术可行性 5 3.1.…

阿里云项目启动OOM问题解决

问题描述 随着项目业务的增长,系统启动时内存紧张,每次第一次启动的时候就会出现oom第二次或者第n的时候,就启动成功了。 带着这个疑问,我就在阿里云上提交了工单,咨询为什么第一次提交失败但是后面却能提交成功尼&a…

开挖 Domain - 前奏

WPF App 主机配置 Microsot.Extension.Hosting 一键启动(配置文件、依赖注入,日志) // App.xaml.cs 中定义 IHost private readonly IHost _host Host.CreateDefaultBuilder().ConfigureAppConfiguration(c > {_ c.SetBasePath(Envi…

基于NERF技术重建学习笔记

NeRF(Neural Radiance Fields)是一种用于3D场景重建的神经网络模型,能够从2D图像生成逼真的3D渲染效果。它将场景表征为一个连续的5D函数,利用了体积渲染和神经网络的结合,通过学习光线穿过空间时的颜色和密度来重建场…

邮件营销的目的详解:促进销售与业绩增长!

邮件营销的目的效果评估?发不同类型营销邮件的目的? 邮件营销作为一种高效且成本低廉的营销手段,被广泛应用于各行各业。邮件营销的目的不仅仅是简单的信息传递,更是为了促进销售与业绩增长。MailBing将深入探讨邮件营销的目的&a…

01 springboot-整合日志(logback-config.xml)

logback-config.xml 是一个用于配置 Logback 日志框架的 XML 文件,通常位于项目的 classpath 下的根目录或者 src/main/resources 目录下。 Logback 提供了丰富的配置选项,可以满足各种不同的日志需求。需要根据具体情况进行配置。 项目创建&#xff0…

SWOT分析法:企业决策的全方位视角

SWOT分析是商业领域中广泛采用的一种战略规划工具,它通过评估企业的优势(Strengths)、劣势(Weaknesses)、机会(Opportunities)和威胁(Threats)四个关键维度,帮…

[数据集][目标检测]电力场景输电线路巡检检测数据集VOC+YOLO格式8667张50类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):8667 标注数量(xml文件个数):8667 标注数量(txt文件个数):8667 标注…

如何迁移 GitLab 服务器:完整指南

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119@qq.com] 📱个人微信:15279484656 🌐个人导航网站:www.forff.top 💡座右铭:总有人要赢。为什么不能是我呢? 专栏导…