华为云实战杂记

配置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文件,内容如下:
s 复制代码
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.下部的注释取消,并适当修改部分内容以匹配自己服务器的配置,如下所示。
s 复制代码
# 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

s 复制代码
    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, 更新包索引

shell 复制代码
sudo yum update

2, 安装NodeSource的Node.js仓库

shell 复制代码
curl -sL https://rpm.nodesource.com/setup_18.x | sudo bash -

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

3, 安装Node.js

shell 复制代码
sudo yum install -y nodejs

4, 验证Node.js安装成功

shell 复制代码
node -v
npm -v

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

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

shell 复制代码
mkdir -p /data/node/test1

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

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目录下创建了该文件。并填充以下内容:

bash 复制代码
[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 关系

shell 复制代码
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

相关推荐
魔法自动机33 分钟前
Unity3D学习FPS游戏(3)玩家第一人称视角转动和移动
unity·1024程序员节·fps
Ylucius42 分钟前
14天速成前端 ------学习日志(已完结)------ 后端程序员学习了解前端
java·开发语言·前端·vue.js·学习·状态模式·1024程序员节
清酒伴风(面试准备中......)1 小时前
计算机网络——开放系统互连参考模型
网络·计算机网络·1024程序员节
琪露诺大湿1 小时前
JavaEE-多线程初阶(1)
java·linux·开发语言·jvm·数据库·java-ee·1024程序员节
DC妙妙屋2 小时前
10.24.2024刷华为OD C题型(四) -- 对象list按照多个属性排序
1024程序员节
bitenum3 小时前
qsort函数的学习与使用
c语言·开发语言·学习·算法·visualstudio·1024程序员节
EmotionFlying4 小时前
(11)(2.1.6) Hobbywing DroneCAN ESC(一)
copter·ardupilot·1024程序员节·电调和电机
伏飞而行4 小时前
六、元素应用CSS的习题
1024程序员节
idealzouhu4 小时前
Spring Boot 实现文件上传下载功能
java·spring boot·1024程序员节