CentOS云服务器部署配置

1. 安装Mysql

1.1.确保服务器系统处于最新状态

[root@localhost ~]# yum -y update

如果显示内容中含有
[root@localhost ~]# Complete!

说明更新完成

1.2.下载MySql安装包

root@localhost ~]# rpm -ivh http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm

[root@localhost ~]# rpm -ivh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm

1.3.安装MySql

[root@localhost ~]# yum install -y mysql-server
或
[root@localhost ~]# yum install mysql-community-server

如果显示以下内容说明安装成功
Complete!

1.4.修改mysql默认字符集

这里我们需要设置成utf8,打开my.cnf配置文件

vi /etc/my.cnf

添加以下内容:

//在[mysqld]的下面添加服务端字符集
character-set-server=utf8
collation-server=utf8_general_ci//需要在最下方填写客户端字符集
[client]
default-character-set=utf8

1.5.设置开机启动Mysql

[root@localhost ~]# systemctl enable mysqld.service

检查是否开机自动启动设置成功

[root@localhost ~]# systemctl list-unit-files | grep mysqld

如果显示以下内容说明已经完成自动启动安装

mysqld.service enabled

1.6.设置开启服务

[root@localhost ~]# systemctl start mysqld.service
或
[root@localhost ~]# service mysqld start

1.7.查看MySql默认密码

直接获取原密码

[root@localhost ~]# grep 'temporary password' /var/share/log/mysqld.log

查看日志获取

[root@localhost ~]#  cat /var/share/log/mysqld.log

在root@localhost: 后面的就是初始密码,或者默认密码为空

1.8.登陆MySql,输入用户名和密码

[root@localhost ~]# mysql -uroot -p

1.9.修改mysql登录密码

# 设置密码的验证强度等级,设置 validate_password_policy 的全局参数为 LOW
set global validate_password_policy=LOW;
# 当前密码长度为 8 ,按照我们常用的设置为 6 位的密码。
set global validate_password_length=6;
# 设置mysql密码,只要满足六位的长度。
alter user 'root'@'localhost' identified by '123456'; 

1.10.授予远程连接权限

mysql> grant all privileges on *.* to 'root' @'%' identified by '密码';
mysql> flush privileges;

高版本数据库不能按照grant all privileges on . to “root”@“%” identified by “xxxx”;去修改用户权限

高版本修改用户权限方法:
先创建远程用户,再授权

mysql> create user 'root'@'%' identified by  'password';
Query OK, 0 rows affected (0.03 sec)
mysql> grant all privileges on *.* to 'root'@'%' with grant option;
Query OK, 0 rows affected (0.01 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

1.11.关闭Linux系统防火墙

systemctl stop firewalld.service

1.12 only_full_group_by问题

Java 应用连接 MySQL 8 数据库遇到以下问题:

2023-11-13 15:28:58  WARN 14972 --- [xec-9] i.SqlExceptionHelper137 : SQL Error: 1055, SQLState: 42000
2023-11-13 15:28:58 ERROR 14972 --- [xec-9] i.SqlExceptionHelper142 : (conn=10930) Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'a.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
2023-11-13 15:28:58 ERROR 14972 --- [xec-9] ller.aop.ValidateAop64 : could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet

分析:
ONLY_FULL_GROUP_BY 的意思是针对 GROUP BY 聚合操作,如果 SELECT 中的列没有在 GROUP BY 中出现,那么这个 SQL 是不合法的,因为列不在 GROUP BY 从句中。

解决方案一:
使用 MySQL 客户端查询 sql_mode,发现包含 ONLY_FULL_GROUP_BY,使用 SET 命令更新,然后再次查询发现 ONLY_FULL_GROUP_BY 已不存在。

mysql> SELECT @@global.sql_mode;
+-----------------------------------------------------------------------------------------------------------------------+
| @@global.sql_mode                                                                                                     |
+-----------------------------------------------------------------------------------------------------------------------+
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION |
+-----------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SET @@global.sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT @@global.sql_mode;
+----------------------------------------------------------------------------------------------------+
| @@global.sql_mode                                                                                  |
+----------------------------------------------------------------------------------------------------+
| STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION |
+----------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> USE DB_NAME
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> SET sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
Query OK, 0 rows affected (0.00 sec)

注意:

SET @@global.sql_mode 修改了全局 sql_mode,只对新建的数据库生效,对于已经存在的数据库,需要使用 USE 命令先切换到具体数据库,然后执行 SET sql_mode 命令;
这种方案在 MySQL 服务重启后会失效,即重启后 ONLY_FULL_GROUP_BY 还会出现。

解决方案二:
修改 MySQL 配置文件,Windows 操作系统中为 my.ini 文件,Linux 操作系统中使用 RPM 安装包安装后配置文件位于 /etc/my.cnf。
在 [mysqld] 添加:

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

重启 MySQL 服务。

systemctl restart mysqld.service

2. 安装Java JDK 8

2.1.安装Java JDK 8:

sudo yum install java-1.8.0-openjdk-devel

2.2.检查Java版本:

java -version

如果成功安装,你应该可以看到类似以下的版本信息:

openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-b10)
OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)

2.3.设置JAVA_HOME环境变量:

编辑/etc/profile文件,将以下行添加到文件底部:

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export PATH=$JAVA_HOME/bin:$PATH

2.4. 使之生效:

执行以下命令,使之生效:

  source /etc/profile

3. 安装Nginx

3.1. 更新系统软件包:

sudo yum update

3.2. 安装EPEL存储库:

sudo yum install epel-release

3.3. 安装Nginx:

sudo yum install nginx

3.4. 启动Nginx服务:

sudo systemctl start nginx

3.5. 设置Nginx服务自启动:

sudo systemctl enable nginx

3.6. 验证Nginx是否运行:

sudo systemctl status nginx

如果一切正常,输出应该是“Active: active (running)”或者类似的信息。

3.7. 开启gzip压缩

以上安装方法nginx的配置文件位于
/usr/local/nginx/conf/nginx.conf

server {
        listen       80;
        server_name  localhost;
        location / {
            try_files $uri $uri/ /index.html;
            root C:/nginx-1.18.0/html/gzip/dist;
            index  index.html index.htm;
        }
        location /api/ {
            proxy_pass http://localhost:6666/;
        }
        
        # 主要是下方的gizp配置哦,直接复制粘贴就可以使用啦,亲测有效哦
        gzip on; # 开启gzip压缩
        gzip_min_length 4k; # 小于4k的文件不会被压缩,大于4k的文件才会去压缩
        gzip_buffers 16 8k; # 处理请求压缩的缓冲区数量和大小,比如8k为单位申请16倍内存空间;使用默认即可,不用修改
        gzip_http_version 1.1; # 早期版本http不支持,指定默认兼容,不用修改
        gzip_comp_level 2; # gzip 压缩级别,1-9,理论上数字越大压缩的越好,也越占用CPU时间。实际上超过2的再压缩,只能压缩一点点了,但是cpu确是有点浪费。因为2就够用了
                 # 压缩的文件类型 MIME类型,百度一下,一大把                                    # css             # xml             # 识别php     # 图片
        gzip_types text/plain application/x-javascript application/javascript text/javascript text/css application/xml application/x-httpd-php image/jpeg image/gif image/png application/vnd.ms-fontobject font/x-woff font/ttf;
                 # text                   # 早期js                 # js        # js的另一种写法                                                                                 # .eot字体                   # woff字体  # ttf字体
        gzip_vary on; # 是否在http header中添加Vary: Accept-Encoding,一般情况下建议开启       
}

重新加载配置

nginx -s reload

4. 安装Redis数据库:

sudo yum -y install redis

安装好后启动Redis服务即可:

sudo systemctl start redis

这里同样可以使用redis-cli进入Redis命令行模式操作。

为了可以使Redis能被远程连接,需要修改配置文件,路径为/etc/redis.conf

vi /etc/redis.conf

注释这一行:

#bind 127.0.0.1

推荐给Redis设置密码,自行修 requirepass 参数
修改配置文件

requirepass 密码

然后重启Redis服务:

sudo systemctl restart redis

添加 6379 到防火墙

firewall-cmd --zone=public --add-port=6379/tcp --permanent
firewall-cmd --reload

常用命令

# 启动redis服务器
systemctl start redis.service
# 停止redis服务器
systemctl stop redis.service
# 重新启动redis服务器
systemctl restart redis.service
# 获取redis服务器的运行状态
systemctl status redis.service
# 开机启动redis服务器
systemctl enable redis.service
# 开机禁用redis服务器
systemctl disable redis.service

CentOS添加Swap分区

下面命令可以创建一个4G的文件,时间会稍长,耐心等待一下

dd if=/dev/zero of=/data/swap bs=512 count=8388616

bs*count即为容量,如果需要2G的swap可以使用

dd if=/dev/zero of=/data/swap bs=1k count=2048000

of=后面是创建的文件路径,这里以/data/swap为例,如果创建在其他目录下后续的命令也要修改为自己的目录。

将文件设置为swap分区

mkswap /data/swap

启用swap分区

swapon /data/swap

添加到指令到fstab文件中这样系统引导时会自动启动

echo "/data/swap swap swap defaults    0  0" >> /etc/fstab

查看是否生效可用

free -m

如果需要关闭swap分区可以依次执行如下命令

swapoff /data/swap
swapoff -a >/dev/null
rm -rf /data/swap
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值