CentOS7一些应用的安装和配置

目前包括 SSH、repo、Git、JDK、Tomcat、Nginx、MySQL、Redis

SSH

登录原理,本地主机创建一个私钥和一个公钥,私钥放在本地,公钥放在远程服务器,通过 SSH Key 登录到远程服务器,远程服务器使用公钥创建一个加密的消息,然后发送到本地主机,本地主机使用私钥解密消息后并发回给远程服务器,远程服务器验证消息后授权访问

首先在本地主机生成一对密钥

1
2
3
4
5
ssh-keygen
Generating public/private rsa key pair.
#以下为交互式输入,可一路回车
Enter file in which to save the key (/c/Users/user/.ssh/id_rsa):
...

生成的密钥保存在 ~/.ssh 目录下,id_rsa.pub 为公钥,id_rsa 为私钥

然后将本地主机的 id_rsa.pub 公钥复制粘贴到远程服务器的 ~/.ssh/authorized_keys 文件中即可

repo

阿里云源官网

首先备份默认的源

1
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

然后下载阿里云源到 /etc/yum.repos.d

1
wget http://mirrors.aliyun.com/repo/Centos-7.repo -O /etc/yum.repos.d/CentOS-Base.repo 

最后生成缓存

1
yum makecache

Git

下载 Git 的源码包,然后解压

1
tar -zxvf git-2.25.1.tar.gz 

安装相关依赖

1
yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev autoconf automake

进入解压后的目录,指定路径编译安装

1
2
3
4
5
cd git-2.25.1
make configure
./configure --prefix=/usr/local/git
make all
make install

添加环境变量

1
vim /etc/profile
1
export PATH=$PATH:/usr/local/git/bin

使配置文件生效

1
source /etc/profile

测试安装配置成功

1
git --version 

配置用户名和邮箱

1
2
git config --global user.name ""
git config --global user.email ""

JDK

下载 JDK 的 rpm 包进行安装,不过需要 Oracle 账号登录

1
rpm -ivh jdk-8u211-linux-x64.rpm

默认安装目录为 /usr/java

JDK 安装后会自动创建相应的软链接到 /usr/bin,所以不用再配置环境变量了,在 /usr/bin 下的软链接指向 /etc/alternatives 下的的文件也是软链接

1
2
3
4
5
# ll /usr/bin/java
/usr/bin/java -> /etc/alternatives/java

# ll /etc/alternatives/java
/etc/alternatives/java -> /usr/java/jdk1.8.0_211-amd64/jre/bin/java

若安装了多个版本的 JDK,则可通过 alternatives 来管理

1
alternatives --config java

至于环境变量 CLASSPATH 不用配置 (也不推荐配置),并且也不用配置 JAVA_HOME,Tomcat 会自动将 JAVA_HOME 指向 /usr (不知道是为什么)

测试安装配置成功

1
java -version

也可通过 yum 安装,首先搜索 JDK 包

1
yum search java | grep jdk

选择合适的版本安装即可,不同版本区别可参考 OpenJDK

1
yum install -y java-1.8.0-openjdk-devel

默认安装目录为 /usr/lib/jvm

1
2
3
4
5
# ll /usr/lib/jvm 
java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64
#和一堆软连接
java -> /etc/alternatives/java_sdk
#...

同样也会自动创建相应的软链接到 /usr/bin,不用配置环境变量

1
2
3
4
5
# ll /usr/bin/java
/usr/bin/java -> /etc/alternatives/java

# ll /etc/alternatives/java
/etc/alternatives/java -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64/jre/bin/java

Tomcat

下载 Core 的 tar.gz 包,然后解压

1
2
#-C 指定解压路径
tar -zxvf apache-tomcat-8.5.51.tar.gz -C /usr/local

配置 UTF-8 字符集,进入 Tomcat 解压目录下的 conf 目录,编辑 server.xml ,找到配置 8080 默认端口的位置,在 xml 节点末尾增加 URIEncoding="UTF-8"

1
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />

测试安装配置成功,执行 bin 目录下的 startup.sh

1
/usr/local/apache-tomcat-8.5.51/bin/startup.sh 
1
2
3
4
5
6
Using CATALINA_BASE:   /usr/local/apache-tomcat-8.5.51
Using CATALINA_HOME:   /usr/local/apache-tomcat-8.5.51
Using CATALINA_TMPDIR: /usr/local/apache-tomcat-8.5.51/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/apache-tomcat-8.5.51/bin/bootstrap.jar:/usr/local/apache-tomcat-8.5.51/bin/tomcat-juli.jar
Tomcat started.

关闭则执行 bin 目录下的 shutdown.sh

1
/usr/local/apache-tomcat-8.5.51/bin/shutdown.sh

查看 bin 目录下的 catalina.sh 可知,Tomcat 需要一些环境变量

其中 JRE_HOME 需要指向 JRE 的安装目录,若没有配置则默认与 JAVA_HOME 相同,而 JAVA_HOME 是指向 JDK 的安装目录,并且只是 debug 模式才需要的,普通运行只需要 JRE_HOME

至于 CATALINA_HOME 和 CATALINA_BASE 若不需要开启多个 Tomcat 则不需要配置

但是安装 JDK 后并没有配置环境变量,Tomcat 自动将 JRE_HOME 指向了 /usr (不知道是为什么)

Nginx

Nginx 有很多功能模块,通过 yum 进行安装只会包含其中一部分模块,要想自定义引入模块,以及引入第三方模块,就需要通过编译安装的方式

安装依赖

1
yum install -y gcc zlib zlib-devel pcre-devel openssl openssl-devel

下载 Nginx 的源码包,然后解压

1
tar -zxvf nginx-1.16.1.tar.gz

进入解压后的源码目录,在 contrib 目录下提供有 vim 工具,若 vim 没有配置这个工具,则打开 Nginx 配置文件就没有语法色彩高亮显示,可将其复制到 vim 的工具配置目录下开启色彩高亮

1
2
mkdir ~/.vim
cp -r contrib/vim/* ~/.vim/

查看 configure 支持的参数

1
./configure --help

其中 –with-xxx 就是指定引入某个模块 (默认不引入),–without-xxx 就是不引入 (默认引入)

这里仅指定一下安装目录

1
./configure --prefix=/usr/local/nginx 

配置完成后会显示 Nginx 的各项路径,再次查看源码目录,会发现新增了objs 目录,里面保存了配置时生成的中间文件,其中 ngx_modules.c 决定了之后编译安装将引入哪些模块

编译

1
make

编译完成后,生成的中间文件以及 Nginx 运行的 src 文件也保存在 objs 目录下

安装

1
make install

安装过程其实就是将编译后的相关文件 cp 复制到指定的安装目录下

常用命令

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#打开配置文件
vim /usr/local/nginx/conf/nginx.conf
#检测配置文件是否有错误
/usr/local/nginx/sbin/nginx -t
#启动
/usr/local/nginx/sbin/nginx
#停止,quit是从容关闭、stop是快速关闭
/usr/local/nginx/sbin/nginx -s quit、stop 
#重新加载配置文件 
/usr/local/nginx/sbin/nginx -s reload

查看 nginx 进程

1
ps -ef | grep nginx

平滑重启

1
kill -HUP Nginx master PID

当 Nginx 接收到 HUP 信号时,会先解析配置文件,再开启一个新的工作进程并从容关闭 (quit) 旧的工作进程,即通知工作进程关闭,监听套接字,继续为当前连接的用户提供服务,完成所有客户端的服务后再关闭旧的工作进程

MySQL

查看是否默认安装了 mariadb 数据库,安装 mysql 前要将其删掉

1
2
rpm -qa | grep mariadb
yum -y remove mariadb-libs

下载 mysql 的 yum 源,然后安装

1
rpm -Uvh mysql80-community-release-el7-3.noarch.rpm

仓库中有 mysql 的不同版本,默认选用最新版,要选用特定版本需要修改配置文件

1
vim /etc/yum.repos.d/mysql-community.repo

字段 enabled ,0 为禁用 1 为启用,如果同时启用多个将自动选择最新版本

查看当前启用的仓库版本

1
yum repolist enabled | grep mysql 

安装 mysql-community-server

1
yum install -y mysql-community-server

通过 systemctl 启动、关闭

1
2
systemctl start mysqld
systemctl stop mysqld

mysql5.7 版本之后 root 用户会有临时密码

查看临时密码

1
cat /var/log/mysqld.log | grep "password" 

使用临时密码登录 root

1
2
mysql -u root -p
Enter password:

然后修改临时密码

1
mysql> alter user 'root'@'localhost' identified by 'newPassword';

如果报错

1
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

修改两个全局变量

1
2
mysql> set global validate_password_policy=0; 
mysql> set global validate_password_length=1;

可以将启动 MySQL 时的配置参数写入 my.cnf 配置文件让 MySQL 加载,默认路径为 /etc/my.cnf

1
2
3
4
5
6
7
8
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

5.6 版本,在目录 /usr/share/mysql/ 下有 my-default.cnf 默认配置模板

5.7 版本之后不再包含 my-default.cnf 配置模板,有默认配置文件 /etc/my.cnf

先备份默认配置文件

1
mv /etc/my.cnf /etc/my-default.cnf

创建新的配置文件,在默认配置文件的基础上添加 utf8 字符集的配置

1
2
3
4
5
6
7
[client]
default-character-set=utf8 
[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8 
collation-server=utf8_general_ci

进入 mysql 命令行查看字符

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

若配置文件有错将启动失败,CentOS 7 会提示分别使用 systemctl status mysqld 和 journalctl -xe 查看服务启动失败的原因,这时候可以打开 MySQL 的日志查看 ERROR 信息

1
cat /var/log/mysqld.log | grep ERROR

开启允许远程访问,选择数据库 mysql ,修改数据表 user ,% 表示任何主机

1
2
3
use mysql;
select host, user from user;
update user set host='%' where host="localhost" and user="root";

然后刷新权限

1
flush privileges;

也可以通过 grant 命令进行设置

1
2
grant all privileges on *.* to 'root'@'%' identified by 'root'; 
flush privileges;

Redis

首先添加 EPEL仓库

1
yum install -y epel-release

安装 redis

1
yum install -y redis

修改配置文件

1
vim /etc/redis.conf

取消下面这行注释,将 foobared 修改为自定密码

1
# requirepass foobared

将 daemonize 设置为 yes,开启守护进程

1
daemonize no

注释掉 bind

1
bind 127.0.0.1

启动服务

1
systemctl start redis

连接 redis,不指定密码可以连接,但不能操作

1
redis-cli -h 127.0.0.1 -p 6379 #本地可以省略参数
1
2
127.0.0.1:6379> keys *
(error) NOAUTH Authentication required.

auth 一下密码即可

1
2
127.0.0.1:6379> auth password
OK

或者在连接时指定 -a 参数

1
redis-cli -a password

如果 master 设置了密码,slave 的配置文件也需要设置相同的密码

打开配置文件,取消下面这行注释,并填上 master 的密码

1
# masterauth <master-password>

也可通过源码进行编译安装,下载 Redis 的源码包,然后解压

1
tar -zxvf redis-5.0.7.tar.gz

进入解压目录然后编译

1
make

指定目录并安装

1
make PREFIX=/usr/local/redis install

启动 Redis

1
/usr/local/redis/bin/redis-server

客户端连接 Redis Server

1
/usr/local/redis/bin/redis-cli

配置环境变量

1
vim /etc/profile 
1
2
export REDIS_HOME=/usr/local/redis
export PATH=$PATH:$REDIS_HOME/bin

使配置文件生效

1
source /etc/profile

以上内容是玉山整理的笔记,如有错误还请指出