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