- 1. 基础工具
- 2. 常用软件
目前所有的软件安装是在Centos环境下进行
1. 基础工具
- telnet 工具安装
# 注意不用安装服务端,只需要安装客户端即可
yum install -y telnet.x86_64
- screen 工具安装
# 用于开启活动窗口
yum install -y screen
2. 常用软件
2.1. jdk
- 将JDK文件上传至
/usr/local/java
目录下并解压
cd /usr/local/java && tar -xzvf jdk-8u144-linux-x64.tar.gz
- 配置环境变量(
vim /etc/profile
),文件末尾追加以下内容
export JAVA_HOME=/usr/local/java/jdk1.8.0_144
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=.:${JAVA_HOME}/bin:$PATH
- 使配置文件生效
source /etc/profile
2.2. redis
redis安装强烈建议修改默认端口、设置密码登录,有需要的话将127.0.0.1修改为本机局域网ip
2.2.1. 安装步骤
- 安装gcc依赖(非必须)
sudo yum install -y gcc
- 上传redis压缩包
redis-5.0.5.tar.gz
到/usr/local
目录下并解压
cd /usr/local && tar -xzvf redis-5.0.5.tar.gz
- 进入redis解压目录下,执行编译
cd redis-5.0.5 && make
- 安装并指定安装目录
make install PREFIX=/usr/local/redis
- 从 redis 的源码目录中复制 redis.conf 到 redis 的安装目录
cp /usr/local/redis-5.0.5/redis.conf /usr/local/redis/bin/
- 修改
redis.conf
文件
# 配置为局域网ip以便于其他服务器可以访问
bind 局域网ip
# 修改为自定义端口
port 自定义端口
# 以守护线程的方式启动
daemonize yes
# 配置密码
requirepass 自定义密码
# 指定存放数据库文件的目录,默认是运行启动命令时所处的目录:./,强烈建议修改。没有数据盘的情况下可以配置为/var/lib/redis
dir /var/lib/redis
- 启动redis
/usr/local/redis/bin/redis-server /usr/local/redis/bin/redis.conf
2.2.2. 开机自启配置
- 添加开机启动服务
vim /lib/systemd/system/redis.service
- 添加以下内容
[Unit]
Description=redis-server
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/bin/redis.conf
PrivateTmp=true
[Install]
WantedBy=multi-user.target
- 执行以下命令
# 重新加载systemd的配置文件
systemctl daemon-reload
# 加入开机启动项
systemctl enable redis.service
# 启动redis服务
systemctl start redis
# 查看redis服务
systemctl status redis
2.3. nginx
2.3.1. 安装步骤
- 安装环境依赖
yum -y install pcre pcre-devel zlib zlib-devel openssl openssl-devel gd gd-devel zip unzip autoconf gcc gcc-c++ readline-devel
- 将ngixn压缩包
nginx-1.20.0.tar.gz
上传至/usr/local
目录下并解压
cd /usr/local && tar -xzvf nginx-1.20.0.tar.gz
- 进入nginx解压后目录进行安装前的配置
# 将nginx安装到/usr/local/nginx目录下并启用相关模块(headers-more-nginx-module-0.34需要自行下载源码包)
cd /usr/local/nginx-1.20.0 && ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_gzip_static_module --with-http_realip_module --with-http_sub_module --with-http_ssl_module --with-stream --with-stream_ssl_module --with-http_image_filter_module --add-module=/usr/local/src/headers-more-nginx-module-0.34
- 检查是否有错误,没错误可往下执行编译安装操作
make && make install
- 完成后nginx已被安装到
/usr/local/nginx
目录下,启动nginx即可
/usr/local/nginx/sbin/nginx
2.3.2. 开机自启配置
- 添加开机启动服务
sudo vim /lib/systemd/system/nginx.service
- 添加以下内容
[Unit]
Description=nginx service
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
- 执行以下命令
# 重新加载systemd的配置文件
sudo systemctl daemon-reload
# 加入开机启动项
sudo systemctl enable nginx.service
# 启动nginx
sudo systemctl start nginx.service
# 查看nginx运行状态
sudo systemctl status nginx.service
# 停止
sudo systemctl stop nginx.service
附:
- nginx对上传文件的大小有限制,默认是1M,nginx.conf配置文件下的http模块里新增以下配置并重启:
client_max_body_size 20M;
- 自定义配置文件
在conf目录下新建conf.d文件夹,在conf.d里新建自己的配置文件,最后在nginx.conf配置文件下的http模块里新增以下配置并重启:
include conf.d/*.conf;
2.4. mysql
mysql安装完毕后,记得linux下修改 lower_case_table_names
为 1,忽略大小写,windows可不用;另外修改 sql_mode
配置参数,否则不能使用 group by 等语句
2.4.1. 安装步骤
- 下载yum源:
wget 'https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm'
- 安装yum源
rpm -Uvh mysql57-community-release-el7-11.noarch.rpm
- 查看有哪些版本的mysql
yum repolist all | grep mysql
- 安装
yum install -y mysql-community-server
- 查看状态
systemctl status mysqld
- 找到密码
grep 'temporary password' /var/log/mysqld.log
- 修改密码
alter user 'root'@'localhost' identified by 'cy7m0ypu8CpLFperzI45';
- 修改配置(
vim /etc/my.cnf
)
# 根据需要可自行修改数据目录,默认是放在/var/lib/mysql
datadir=/mnt/dataDisk/mysql
character-set-server=utf8mb4
lower_case_table_names=1
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
# 启用密码策略插件和连接控制插件(适合等保用)
plugin-load-add=validate_password.so,connection_control.so
#服务器在启动时加载插件,并防止在服务器运行时删除插件
#决定是否使用该插件(及强制/永久强制使用)
validate-password=FORCE_PLUS_PERMANENT
#validate-password=FORCE
connection-control = FORCE_PLUS_PERMANENT
#connection-control-failed-login-attempts = FORCE
connection_control_min_connection_delay = 60000
connection_control_max_connection_delay = 3600000
connection_control_failed_connections_threshold = 5
- 修改
3306
访问端口(非必须)
相关命令:
systemctl start mysqld
systemctl stop mysqld
systemctl restart mysqld
systemctl status mysqld
2.5. mongodb
mongodb安装完毕强烈建议开启密码登录验证
2.5.1. 安装步骤
- 创建mongodb的repo文件
sudo vim /etc/yum.repos.d/mongodb-org-4.4.repo
- 输入以下内容(版本可以指定最新版本)
[mongodb-org-4.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc
- 安装
sudo yum install -y mongodb-org
- 修改配置文件(
vim /etc/mongod.conf
)
systemLog:
destination: file
logAppend: true
# 根据需要自行调整日志存储目录,默认是/var/log/mongodb/mongod.log
path: /mnt/dataDisk/mongodb/log/mongod.log
# 根据需要自行调整数据存储目录,默认是/var/lib/mongo
storage:
dbPath: /mnt/dataDisk/mongodb/data
net:
port: 27017
# 调整为局域网ip,默认是127.0.0.1,只能本机访问
bindIp: 192.168.0.35
相关命令:
# mongodb相关操作
systemctl status mongod
systemctl start mongod
systemctl restart mongod
# 连接mongodb
mongo 192.168.0.100
2.5.2. 开启登录验证
mongodb安装完毕后默认是无密码登录,为安全起见,强烈建议开启
- 登录并进入
admin
数据库:use admin
- 创建一个管理员用户
db.createUser(
{
user: "root",
pwd: passwordPrompt(), // 或者填写明文密码 4.2+版本支持该方法
roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
}
)
- shell中关闭实例:db.adminCommand( { shutdown: 1 } )
- 配置文件启用安全认证
security:
authorization: enabled
- 重启服务:
systemctl restart mongod
- 重新登录数据库
登录方式1:mongo 127.0.0.1:27017 --authenticationDatabase "admin" -u "root" -p
登录方式2:mongo -h 127.0.0.1 --port 27017
进入shell后:
use admin
db.auth("root", passwordPrompt()) // 或者是明文密码
- 创建普通用户:(在控制台进行db.showCollections等命令如果没有权限,需要把role的readWrite权限调整为dbOwner)
use test
db.createUser(
{
user: "myTester",
pwd: passwordPrompt(), // 或者明文密码
roles: [
{ role: "readWrite", db: "test" },
{ role: "read", db: "reporting" }
]
}
)
2.6. Postgresql
2.6.1. 安装步骤
- 安装repository rpm
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
- 安装数据库服务
sudo yum install -y postgresql12-server
- 自定义数据存放路径(可忽略)
mkdir -p /home/pgdata/
chown -R postgres:postgres /home/pgdata
systemctl edit postgresql-12.service
# 添加以下内容:
[Service]
Environment=PGDATA=/home/pgdata/
# 检查内容
cat /etc/systemd/system/postgresql-12.service.d/override.conf
# 重新加载systemd的配置文件
systemctl daemon-reload
- 初始化以及开机启动
sudo /usr/pgsql-12/bin/postgresql-12-setup initdb
sudo systemctl enable postgresql-12
sudo systemctl start postgresql-12
- 修改
postgresql.conf
配置文件
# 调整为局域网ip
listen_addresses = '192.168.0.35'
# 根据需要自行调整最大连接数
max_connections = 100
- 修改
pg_hba.conf
配置文件
# 在ipv4下新建本地局域网访问
host all all 192.168.0.35/24 md5
- 修改postgres密码
ALTER USER postgres WITH ENCRYPTED PASSWORD 'postgres';
- 创建普通用户
create user crm WITH ENCRYPTED PASSWORD '123456';
- 创建业务数据库
create database crm owner crm;
- 赋予权限
grant all on database dbtest to crm;
相关命令:
# 密码更换周期通过设置角色的有效期来强制指定:
alter role crm valid until '2021-04-02';
# 查看表索引
select * from pg_indexes where tablename='device_gps';
# 查看表结构,类似mysql的show create table device_gps
\d device_gps;
# 导出数据库
/usr/pgsql-12/bin/pg_dump -h 192.168.0.35 -p 5432 -U postgres crm > ./crm.sql
2.6.2. timescaledb插件安装
可选项
- 安装rpm
sudo yum install -y https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
- 安装
# Add our repo
sudo tee /etc/yum.repos.d/timescale_timescaledb.repo <<EOL
[timescale_timescaledb]
name=timescale_timescaledb
baseurl=https://packagecloud.io/timescale/timescaledb/el/7/\$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/timescale/timescaledb/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
EOL
sudo yum update -y
# Now install appropriate package for PG version
sudo yum install -y timescaledb-postgresql-12
- 配置postgresql.conf
# 使用postgres启动时加载timescaledb,将shared_preload_libraries的值设置为timescaledb
shared_preload_libraries = 'timescaledb,auth_delay,passwordcheck,pgaudit'
-
重启数据库服务
-
使用timescale提供的命令自动根据服务器配置更新配置文件(可忽略)
/usr/bin/timescaledb-tune --pg-config=/usr/pgsql-12/bin/pg_config --conf-path=/home/pgdata/postgresql.conf
- timescaledb使用示例
# 创建tutorial并为其创建timescaledb扩展
psql -U postgres -h localhost
CREATE database tutorial;
\c tutorial
CREATE EXTENSION IF NOT EXISTS timescaledb;
注:执行create extenstion时可能会报错:
ERROR: extension "timescaledb" has no installation script nor update path for version "xxx"。这可能是没有该版本的对应的sql,进入该脚本对应的目录下查看timescaledb的sql脚本的版本号(cd /usr/pgsql-12/share/extension),重新在psql控制台创建指定版本的timescaledb:CREATE EXTENSION timescaledb VERSION '1.7.5';
- 导入或者是创建表后,创建超表
# 将condition转为超表并且不自动创建索引,对时间进行分区
SELECT create_hypertable('conditions', 'time', create_default_indexes=>FALSE);
# 将condition转为超表,对时间进行分区并给时间块添加时间间隔,默认为7天(1.5版本以前为30天)
SELECT create_hypertable('conditions', 'time', chunk_time_interval => INTERVAL '1 day');
# 重新设置时间分区间隔,只会对新创建的分区生效
SELECT set_chunk_time_interval('conditions', INTERVAL '24 hours');
SELECT set_chunk_time_interval('conditions', 86400000000);
SELECT set_chunk_time_interval('conditions', 86400000); #unix是毫秒
额外命令:
# 查看安装的extension
select * from pg_available_extensions;
或者\dx
# 安装一个名为extension_name的新扩展
CREATE EXTENSION extension_name;
# 此命令将更改扩展名,大多用于升级扩展
ALTER EXTENSION extension name;
# 在清理操作完成后,此命令用于删除一个扩展
DROP EXTENION extension_name;
2.6.3. 密码策略插件安装
主要是应对等保。非源码安装的postgresql没有 passwordcheck
和 auth_delay
插件,需要编译源码才有。所以这里可以通过编译postgresql的源码从而生成 passwordcheck
和 auth_delay
插件所需的相关文件。
-
查看数据库版本:select version();
-
到官网下载对应源码包:https://www.postgresql.org/ftp/source/
-
解压后进入对应的
contrib/passwordcheck
文件夹,修改passwordcheck.c
文件,修改MIN_PWD_LENGTH
选项 -
重新编译
cd /opt/src/postgresql-12.5
./configure --prefix=/opt/pgsql
# 如报错,configure是可能缺失readline库,安装:yum install readline-devel
gmake world
- 如果有以前编译的源码,可按以下方式编译
cd /opt/src/postgresql-12.5/contrib/passwordcheck/
make clean
make
- 将编译后生成的
passwordcheck.so
文件复制到postgresql的lib目录下
cp passwordcheck.so /usr/pgsql-12/lib
- 修改postgresql.conf配置文件,加入passwordcheck插件
vim /home/pgdata/postgresql.conf
shared_preload_libraries = 'passwordcheck'
- 重启数据库服务
注:auth_delay
插件同理,不过需要添加配置:auth_delay.milliseconds = 5000
。
这个配置主要用于防止暴力破解. 验证失败后, 延迟一个时间窗口才能继续验证
2.6.4. 日志策略插件安装
主要是应对等保。要注意该插件版本和postgresql的版本是否兼容。
-
下载对应版本的插件包:https://github.com/pgaudit/pgaudit/archive/refs/tags/1.4.1.tar.gz
-
复制解压到上面pgsql源码包的contrib下
-
进入pgaudit文件夹编译安装:
make install
-
安装完成后将
/opt/pgsql/lib
下的pgaudit.so
复制到/usr/pgsql-12/lib
下 -
将
/opt/pgsql/share/extension
下的pgaudit开头文件复制到/usr/pgsql-12/share/extension
下 -
编辑
/home/pgdata/postgresql.conf
配置文件,调整相关配置项
log_rotation_age = 180d
log_rotation_size = 100MB
log_connections = on
log_disconnections = on
log_line.prefix = '%m %u %d:'
log_statement = 'ddl'
shared_preload_libraries = 'pgaudit'
pgaudit.log = 'write,role,ddl,misc,read,function'
pgaudit.log_catalog = off
pgaudit.log_level = log
pgaudit.log_parameter = on
pgaudit.log_relation = on
pgaudit.log_statement_once = on
-
重启数据库服务
-
连接数据库后创建extension
create extension pgaudit;
2.7. zookeeper集群安装
目录可根据实际条件自行调整
- 程序目录:
/usr/local/zookeeper
- 数据目录:
/usr/local/zookeeper/data
- 日志目录:
/usr/local/zookeeper/log
2.7.1. 安装步骤
-
将zookeeper安装包
zookeeper-3.4.13.tar.gz
上传至/usr/local
目录下并解压,修改解压后的文件夹名为zookeeper
-
在
/usr/local
目录下新建zookeeper的data和log文件夹
mkdir -p /usr/local/zookeeper/data
mkdir -p /usr/local/zookeeper/log
-
在
/usr/local/zookeeper/data
目录下新建文件myid
,文件内容为zk的唯一id,搭建zk集群时会用到server.${myid}
-
修改配置文件
cd /usr/local/zookeeper/conf
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
# 修改如下内容
dataDir=/usr/local/zookeeper/data
dataLogDir=/usr/local/zookeeper/log
- 添加集群信息
# 在zoo.cfg中添加如下内容
server.1=zk1:2888:3888
server.2=zk2:2888:3888
server.3=zk3:2888:3888
注:zk1为内网环境下服务器ip或者是主机名,其他也是同一道理。2888用于集群内部通信 3888用于集群的leader选举(leader选举结果为启动节点过半数时myid最大的节点)
- 添加环境变量(
vim /etc/profile
) 并使配置文件生效(source /etc/profile
)
export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=$ZOOKEEPER_HOME/bin:$PATH
export PATH
- 在另外两台机器执行以上步骤
相关命令:
# 启动zk
zkServer.sh start
# 查看zk状态
zkServer.sh status
2.7.2. 开机自启配置
- 添加开机启动服务
vim /lib/systemd/system/zookeeper.service
- 添加以下内容
[Unit]
#描述服务
Description=zookeeper
#描述服务类别
After=network.target
[Service]
#forking是后台运行的形式
Type=forking
Environment=ZOO_LOG_DIR=/usr/local/zookeeper
Environment=PATH=/usr/local/java/jdk1.8.0_144/bin:/usr/local/java/jdk1.8.0_144/jre/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/$
User=root
Group=root
#服务启动的具体命令
ExecStart=/usr/local/zookeeper/bin/zkServer.sh start /usr/local/zookeeper/conf/zoo.cfg
#ExecReload为服务重启的具体命令
ExecReload=/usr/local/zookeeper/bin/zkServer.sh restart /usr/local/zookeeper/conf/zoo.cfg
#服务停止的具体命令
ExecStop=/usr/local/zookeeper/bin/zkServer.sh stop /usr/local/zookeeper/conf/zoo.cfg
#true表示给服务分配独立的临时空间
PrivateTmp=true
[Install]
#设置为多用户
WantedBy=multi-user.target
- 执行以下命令
# 重新加载systemd的配置文件
sudo systemctl daemon-reload
# 加入开机启动项
sudo systemctl enable zookeeper.service
# 启动zookeeper
sudo systemctl start zookeeper.service
# 查看zookeeper运行状态
sudo systemctl status zookeeper.service
# 停止
sudo systemctl stop zookeeper.service
2.8. kafka集群安装
目录可根据实际条件自行调整
- 程序目录:
/usr/local/kafka
- 数据目录:
/usr/local/kafka/kafka-logs
2.8.1. 安装步骤
-
将kafka安装包
kafka_2.12-2.1.1.tgz
上传至/usr/local
目录下并解压,修改解压后的文件夹名为kafka -
新建数据目录
mkdir -p /usr/local/kafka/kafka-logs
- 修改配置文件
cd /usr/local/kafka/conf
vim server.properties
# 修改如下内容
# 默认是0,这里可以修改从1开始,自定义
broker.id=1
# 是否删除topic,默认为false。在为false的情况只是对topic做一个删除标记而已
delete.topic.enable=true
# 消息最大值,如果传输的消息很大,需要调整该配置
# message.max.bytes=104857600
# 配置本机局域网ip
listeners=PLAINTEXT://192.168.0.100:9092
# 调整日志数据目录
log.dirs=/usr/local/kafka/kafka-logs
# 日志保留的时长,超过这个时长后会自动删除,根据实际情况调整
# log.retention.hours=12
# 配置zk集群地址
zookeeper.connect=zk1:2181,zk2:2181,zk3:2181
# 调整连接zookeeper的超时时间,有些情况下不知道为什么连接zookeeper的时间很长,如果时间太短连不上zookeeper会导致kafka无法启动
zookeeper.connection.timeout.ms=6000
- 添加环境变量(
vim /etc/profile
) 并使配置文件生效(source /etc/profile
)
export KAFKA_HOME=/usr/local/kafka
export PATH=$PATH:$KAFKA_HOME/bin
-
在其余两台机器执行上述步骤(broker.id 不得重复)
-
启动broker
# 以守护进程的方式启动
/usr/local/kafka/bin/kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties
- 输入jps以检查kafka是否启动成功
2.8.2. 开机自启配置
- 添加开机启动服务
vim /lib/systemd/system/kafka.service
- 添加以下内容
[Unit]
Description=kafka service
After=network.target zookeeper.service
[Service]
Type=simple
Environment=PATH=/usr/local/java/jdk1.8.0_144/bin:/usr/local/java/jdk1.8.0_144/jre/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/$
User=root
Group=root
ExecStart=/usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties
ExecStop=/usr/local/kafka/bin/kafka-server-stop.sh /usr/local/kafka/config/server.properties
Restart=on-failure
[Install]
WantedBy=multi-user.target
- 执行以下命令
# 重新加载systemd的配置文件
sudo systemctl daemon-reload
# 加入开机启动项
sudo systemctl enable kafka.service
# 启动kafka
sudo systemctl start kafka.service
# 查看kafka运行状态
sudo systemctl status kafka.service
# 停止
sudo systemctl stop kafka.service
2.9. fastdfs
参考连接:https://github.com/happyfish100/fastdfs/wiki
2.10. ssdb
参考链接:https://ssdb-docs.zwc365.com/zh_cn/install.html
注意需要自行调整下配置文件:
vim /usr/local/ssdb/ssdb.conf
# 数据存放目录,根据需要自行调整
work_dir = ./var
pidfile = ./var/ssdb.pid
server:
# specify an ipv6 address to enable ipv6 support
# ip: ::1
# 修改为局域网ip
ip: 192.168.0.35
port: 8888
# bind to public ip
#ip: 0.0.0.0
# format: allow|deny: all|ip_prefix
# multiple allows or denys is supported
#deny: all
# 允许所有局域网ip或者是指定ip连接
allow: all
# auth password must be at least 32 characters
# 配置强密码
auth: very strong password
# 配置日志存储目录和滚动策略
logger:
level: debug
output: /home/centos/ssdblog/log.txt
rotate:
size: 1000000000