一、服务器分区
挂载数据盘
1. 查看数据盘信息
登录CentOS云服务器后,可以使用“fdisk -l”命令查看数据盘相关信息。
使用“df –h”命令,无法看到未分区和格式化的数据盘。
2.数据盘分区
执行以下命令,对数据盘进行分区。
fdisk /dev/xvdb
按照界面的提示,依次输入“n”(新建分区)、“p”(新建扩展分区)、“1”(使用第1个主分区),两次回车(使用默认配置),输入“wq”(保存分区表),开始分区。
这里是以创建1个分区为例,用户也可以根据自己的需求创建多个分区。
3. 查看新分区
使用“fdisk -l”命令,即可查看到,新的分区xvdb1已经创建完成。
4. 格式化新分区
在进行分区格式化时,用户可以自行决定文件系统的格式,如ext2、ext3等。
这里以“ext3”为例:
使用下面的命令对新分区进行格式化。
mkfs.ext3 /dev/xvdb1
5. 挂载新分区
使用命令“mkdir /mydata”创建mydata目录,再通过“mount /dev/xvdb1 /mydata”命令手动挂载新分区后,用“df -h”命令查看,出现以下信息说明挂载成功,即可以查看到数据盘了。
6. 添加分区信息
如果希望云服务器在重启或开机时能自动挂载数据盘,必须将分区信息添加到/etc/fstab中。如果没有添加,则云服务器重启或开机后,都不能自动挂载数据盘。
用vim进去加,添加分区信息后,使用“cat /etc/fstab”命令查看,出现以下信息表示添加分区信息成功。
记录安装docker vdb1:
fdisk /dev/vdb
661 fdisk -l
662 mkfs.ext3 /dev/vdb1
663 mkdir /pd_data1
664 mount /dev/vdb1 /pd_data1
二、安装docker
1.安装rzsz命令
yum -y install lrzsz
2.安装docker依赖环境
yum install -y yum-utils device-mapper-persistent-data lvm2
3.配置国内docker-ce的yum源(这里采用的是阿里云)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4.看一下有没有配置成功
cd /etc/yum.repos.d
ls
[root@VM-8-12-centos yum.repos.d]# ll
total 24
-rw-r--r-- 1 root root 614 Jun 7 17:20 CentOS-Base.repo
-rw-r--r-- 1 root root 230 Jun 7 17:20 CentOS-Epel.repo
-rw-r--r-- 1 root root 616 Nov 23 2020 CentOS-x86_64-kernel.repo
-rw-r--r-- 1 root root 2081 Aug 28 17:43 docker-ce.repo
-rw-r--r-- 1 root root 1358 Sep 5 2021 epel.repo
-rw-r--r-- 1 root root 1457 Sep 5 2021 epel-testing.repo
5.安装docker
yum -y install docker-ce doker-ce-cli containerd.io
6.安装完成
docker version
7.使用软连接的方式移动docker到其他地方
mv /var/lib/docker /opt/docker
8.加载镜像加速站点:
systemctl daemon-reload
9.启动docker并且设置开机启动
systemctl enable docker && systemctl start docker
10.将docker安装目录移动到/opt/docker
11.创建软连接
ln -s /opt/docker /var/lib/docker
12.最后启动docker
systemctl restart docker
13查看/var/lib/docker目录大小,大小为260kb
#进入目录
cd /var/lib/docker
#查看当前目录大小,260kb
du -sh
三、安装redis(推荐docker)
a.源码安装
1、在Redis版本库:https://download.redis.io/releases/ 可根据自己的需求选择下载对应的版本,然后直接下载
这次用的是redis 6.0.0
2.传到了/opt,解压在/opt/redis-6.0.0
3.yum -y install gcc安装gcc编译器,这玩意是c语言写的,但是默认是4.8版本,要升级到9版本才能编译通过
4.安装下面依赖
sudo yum install centos-release-scl
---注意,如果想安装7.*版本的,就改成devtoolset-7-gcc*,以此类推
5.sudo yum install devtoolset-9-gcc*
激活对应的devtoolset,所以你可以一次安装多个版本的devtoolset,需要的时候用下面这条命令切换到对应的版本
scl enable devtoolset-9 bash
6.查看一下gcc版本
gcc -v
7.进入redis-6.0.0,然后输入:make
然后进入到redis目录,进入redis-6.0.0,然后输入:make,控制台会输出一编译的信息
8.make install
编译成功后,输入:make install ,自此redis就安装成功了。
安装完成后,会输出INSTALL install蓝色的显示。
9.vim redis.conf
# ip设置为0.0.0.0
bind 0.0.0.0
//设置密码
# requirepass foobared
requirepass xxx
//允许后台静默运行
#daemonize no
daemonize yes
//开启远程访问
protected-mode no
10.创建redis命令软连接
//进入etc目录
cd /etc
//创建redis目录
mkdir redis
//拷贝redis.conf文件并命名为6379.conf存储到刚才创建的redis目录下
cp /opt/redis-6.0.0/redis.conf /etc/redis/6379.conf
11.//新建redis-server.service文件
# 添加systemctl服务
vim /etc/systemd/system/redis-server.service
//redis-server文件添加一下内容
[Unit]
Description=Redis 6379
After=syslog.target network.target
[Service]
Type=forking
PrivateTmp=yes
Restart=always
ExecStart=/opt/redis/src/redis-server /etc/redis/6379.conf
ExecStop=/opt/redis/src/redis-cli -h 127.0.0.1 -p 6379 -a jcon shutdown
User=root
Group=root
LimitCORE=infinity
LimitNOFILE=100000
LimitNPROC=100000
[Install]
WantedBy=multi-user.target
12.//重新加载redis服务配置文件
systemctl daemon-reload
//启动redis-server
systemctl start redis-server.service
//加入开机启动
systemctl enable redis-server
//查看服务是否启动成功
systemctl status redis-server
ps -aux|grep redis
13.基础命令
systemctl status redis-server
systemctl stop redis-server
systemctl start redis-server
netstat -na | grep 6379
ps -ef|grep redis
b.docker安装
1.下载好redis镜像
docker pull redis
mkdir -p /opt/redis/data
2.创建测试容器,把redis的内容复制出来
docker run -d redis:latest
docker cp /etc/redis/redis.conf /opt/redis
3.vim redis.conf
# ip设置为0.0.0.0
bind 0.0.0.0
//设置密码
# requirepass foobared
requirepass xxx
//允许后台静默运行
#daemonize no
daemonize yes
//开启远程访问
protected-mode no
4.运行docker
docker run --restart=always -p 6379:6379 --name redis --privileged=true \
-v /opt/redis/conf/redis.conf:/etc/redis/redis.conf \
-v /opt/redis/data:/data -d redis:latest
四、mysql安装(推荐源码)
mysql
1.首先官网下载安装包:https://downloads.mysql.com/archives/community/
选择8.0.33,Linux - Generic,Linux - Generic (glibc 2.12) (x86, 64-bit)
2.cd /opt
tar -xvf mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz
3.mv mysql-8.0.33-linux-glibc2.12-x86_64 /opt移动到放mysql的地方
4.创建mysql用户组和用户并修改权限
groupadd mysql
useradd -r -g mysql mysql
5.创建目录并赋予权限
mkdir -p /opt/mysql/data #创建mysql存放data的数据目录
chown mysql:mysql -R /opt/mysql/data/mysql #赋予权限
6.vim /etc/my.cnf
(修改这个文件必须把mysql先关掉systemctl stop mysql,关掉后看下进程是否关掉,确定全部关掉后才可以编辑这个文件并保存,否则出出现很多问题:如mysql.pid丢失)
[mysqld]
server-id = 1
bind-address=0.0.0.0
port=3307
user=mysql
basedir=/opt/mysql/mysql_install/
datadir=/opt/mysql/data/
socket=/opt/mysql/data/mysql.sock
log-error=/opt/mysql/data/mysql.err
pid-file=/opt/mysql/data/mysql.pid
symbolic-links=0
explicit_defaults_for_timestamp=true
#数据库默认字符集,主流字符集支持一些特殊表情符号(特殊表情符占用4个字节)
character-set-server = utf8mb4
#数据库字符集对应一些排序等规则,注意要和character-set-server对应
collation-server = utf8mb4_general_ci
#设置client连接mysql时的字符集,防止乱码
init_connect='SET NAMES utf8mb4'
#是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names = 1
#最大连接数
max_connections = 400
#最大错误连接数
max_connect_errors = 1000
#MySQL连接闲置超过一定时间后(单位:秒)将会被强行关闭
#MySQL默认的wait_timeout 值为8个小时, interactive_timeout参数需要同时配置才能生效
interactive_timeout = 1800
wait_timeout = 1800
#慢查询sql日志设置
slow_query_log = 1
slow_query_log_file = slow.log
#检查未使用到索引的sql
log_queries_not_using_indexes = 1
#针对log_queries_not_using_indexes开启后,记录慢sql的频次、每分钟记录的条数
log_throttle_queries_not_using_indexes = 5
#慢查询执行的秒数,必须达到此值可被记录
long_query_time = 8
#检索的行数必须达到此值才可被记为慢查询
min_examined_row_limit = 100
[client]
default-character-set=utf8
socket=/opt/mysql/data/mysql.sock
[mysql]
default-character-set=utf8
socket=/opt/mysql/data/mysql.sock
7.初始化数据库进入bin目录下
cd /opt/mysql/mysql/bin/
初始化
./mysqld --defaults-file=/etc/my.cnf --basedir=/opt/mysql/mysql_install/ --datadir=/opt/mysql/data/ --user=mysql --initialize
查看密码
cat /opt/mysql/data/mysql.err
o;wfIdaK?5&Y
8.先将mysql.server放置到/etc/init.d/mysql中
cp /opt/mysql/mysql_install/support-files/mysql.server /etc/init.d/mysql
9.启动
service mysql start
ps -ef|grep mysql
10.修改默认密码
./mysql -u root -p #bin目录下
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges;
查询用户
select host,user from mysql.user;
11.配置远程连接
use mysql;
update user set host='%' where user='root';
flush privileges;
12. 查看安装路径和安装环境是否正常!
whereis mysql;
whereis mysqldump;
如果少了,或者没有需要手动配置一下
vi /etc/profile
在最后添加一行
export PATH=$PATH:/opt/mysql/mysql_install/bin
source /etc/profile
13.mysql自动启动
方式一
将服务文件拷贝到init.d下,并重命名为mysql
cp /opt/mysql/mysql_install/support-files/mysql.server /etc/init.d/mysql
赋予可执行权限
chmod +x /etc/init.d/mysql
添加服务
chkconfig --add mysql
显示服务列表
chkconfig --list
如果看到mysql的服务,并且3,4,5都是on的话则成功,如果是off,则键入
chkconfig --level 345 mysql on
重启
reboot
方式二
添加systemctl服务
vim /etc/systemd/system/mysql.service
[Unit]
Description=MySQL Server
After=network.target
[Service]
ExecStart=/opt/mysql/mysql_install/bin/mysqld_safe --defaults-file=/etc/my.cnf --datadir=/opt/mysql/data/ --socket=/opt/mysql/data/mysql.sock
User=mysql
Group=mysql
Restart=always
[Install]
WantedBy=multi-user.target
设置文件权限
chmod 644 /etc/systemd/system/mysql.service
chown root:root /etc/systemd/system/mysql.service
重新加载systemd配置
systemctl daemon-reload
启动
systemctl start mysql
验证MySQL服务状态
systemctl status mysql
还要确保设置了环境变量
vim /etc/profile
在文件最后添加:
export PATH=$PATH:/opt/mysql/mysql_install/bin
生效配置
source /etc/profile
14.验证
netstat -na | grep 3307
如果看到有监听说明服务启动了
或者用ps -ef|grep mysql 或者 systemctl status mysql
15.基本命令
systemctl status mysql
systemctl stop mysql
systemctl start mysql
netstat -na | grep 3307
ps -ef |grep mysql
五、nginx安装(推荐docker)
1.docker pull nginx
2.启动docker下的nginx,使用挂载路径
测试:docker run --name nginx -p 28888:80 -v /opt/nginx/nginx.conf:/etc/nginx/nginx.conf -v /opt/nginx/logs:/var/log/nginx -d --restart=always nginx:latest
3.配置https
带证书的https
user root;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
server {
#SSL 默认访问端口号为 443
listen 443 ssl;
#请填写绑定证书的域名
server_name zs.zs.zs.zs;
#请填写证书文件的相对路径或绝对路径
ssl_certificate zs.zs.zs.zs_bundle.crt;
#请填写私钥文件的相对路径或绝对路径
ssl_certificate_key zs.zs.zs.zs.cn.key;;
ssl_session_timeout 5m;
#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
#请按照以下协议配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://xxxxxxxxx;
root html;
index index.html index.htm;
}
location ~ .* {
proxy_redirect off;
proxy_pass http://xxxxxxx;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forw $proxy_add_x_forwarded_for;
proxy_set_header Upgrade-Insecure-Requests 1;
proxy_set_header X-Forwarded-Proto https;
}
}
server {
listen 80;
#请填写绑定证书的域名
server_name zs.zs.zs.zs;
#把http的域名请求转成https
return 301 https://$host$request_uri;
}
}
4.nginx配置优化
以下是Nginx配置优化的一些方法和步骤:
调整worker_processes参数:worker_processes参数指定了Nginx使用的进程数,可以根据服务器的CPU核心数进行调整。通常建议将worker_processes设置为CPU核心数的2倍。
调整worker_connections参数:worker_connections参数指定了每个worker进程可以同时处理的最大连接数。可以根据服务器的硬件配置和预期的并发连接数进行调整。通常建议将worker_connections设置为1024或更高。
启用keepalive连接:keepalive连接可以减少TCP连接的建立和关闭次数,从而提高性能。可以通过在Nginx配置文件中设置keepalive_timeout参数来启用keepalive连接。
启用gzip压缩:启用gzip压缩可以减少传输数据的大小,从而提高性能。可以通过在Nginx配置文件中设置gzip参数来启用gzip压缩。
启用缓存:启用缓存可以减少对后端服务器的请求次数,从而提高性能。可以通过在Nginx配置文件中设置proxy_cache_path参数来启用缓存。
调整日志级别:将日志级别设置为warn或error可以减少日志的数量,从而提高性能。可以通过在Nginx配置文件中设置error_log参数来调整日志级别。
调整TCP参数:可以通过在Nginx配置文件中设置tcp参数来调整TCP参数,例如调整TCP连接超时时间、TCP缓冲区大小等。
使用SSL加密:使用SSL加密可以保护数据的安全性,但会增加服务器的负载。可以通过在Nginx配置文件中设置ssl参数来启用SSL加密。
nginx
# 示例Nginx配置文件
worker_processes 4;
worker_connections 1024;
http {
keepalive_timeout 30s;
gzip on;
gzip_types text/plain text/css application/json application/javascript;
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;
tcp_nodelay on;
tcp_nopush on;
sendfile on;
sendfile_max_chunk 512k;
server {
listen 80;
server_name example.com;
access_log /var/log/nginx/access.log;
location / {
proxy_pass http://backend;
proxy_cache my_cache;
proxy_cache_valid 200 60m;
proxy_cache_valid 404 1m;
proxy_cache_bypass $http_pragma;
proxy_cache_revalidate on;
proxy_cache_lock on;
proxy_cache_key "$scheme$request_method$host$request_uri";
}
}
server {
listen 443 ssl;
server_name example.com;
access_log /var/log/nginx/access.log;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
proxy_pass http://backend;
proxy_cache my_cache;
proxy_cache_valid 200 60m;
proxy_cache_valid 404 1m;
proxy_cache_bypass $http_pragma;
proxy_cache_revalidate on;
proxy_cache_lock on;
proxy_cache_key "$scheme$request_method$host$request_uri";
}
}
}
六、Linux配置ntp时间同步
1.安装ntp服务
首先查看以下系统中是否安装了ntp服务,centos7应该是默认安装了:
rpm -qa | grep ntp
如果未安装,使用以下命令安装:
yum -y install ntp
# 查看服务状态
service ntpd status
# 启动ntpd服务
systemctl start ntpd.service
# 停止ntpd服务
systemctl stop ntpd.service
# 设置开机自启动
systemctl enable ntpd.service
# 停止开机自启动
systemctl disable ntpd.service
# 查看服务当前状态
systemctl status ntpd.service
# 重新启动服务
systemctl restart ntpd.service
# 查看所有已启动的服务
systemctl list-units --type=service
2.修改配置文件
安装完成后,会在/etc/目录下生成配置文件ntp.conf
3.配置内网NTP-Server(192.168.1.1)
配置NTPD服务的服务器需要能访问外网,这里挑选了一台可以访问外网的Linux服务器配置内网的NTPD服务,作为NTP-Server,其他几台内网通过它来进行时间同步。
4.这里假设其IP为192.168.1.90,其他几台内网的服务器IP分别为192.168.1.41。
5.在配置NTPD服务之前,先手动同步一下时间。注意,使用ntpdate同步前需要关闭ntpd服务,不然会失败。
systemctl stop ntpd.service
ntpdate cn.pool.ntp.org
6.配置NTP服务为自启动,重新启动
systemctl enable ntpd.service
systemctl start ntpd.service
7.修改NTPD服务的配置文件/etc/ntp.conf
# For more information about this file, see the man pages
# ntp.conf(5), ntp_acc(5), ntp_auth(5), ntp_clock(5), ntp_misc(5), ntp_mon(5).
driftfile /var/lib/ntp/drift
#pidfile /var/run/ntpd.pid
#logfile /var/log/ntp.log
# Permit time synchronization with our time source, but do not
# permit the source to query or modify the service on this system.
#restrict default nomodify notrap nopeer noquery
# Permit all access over the loopback interface. This could
# be tightened as well, but to do so would effect some of
# the administrative functions.
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict ::1
# Hosts on local network are less restricted.
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
#local clock
#外部时间服务器不可用时,以本地时间作为时间服务
server 127.0.0.1
Fudge 127.0.0.1 stratum 10
#中国这边最活跃的时间服务器 : http://www.pool.ntp.org/zone/cn
server 210.72.145.44 perfer # 中国国家受时中心
server 202.112.10.36 # 1.cn.pool.ntp.org
server 59.124.196.83 # 0.asia.pool.ntp.org
#broadcast 192.168.1.255 autokey # broadcast server
#broadcastclient # broadcast client
#broadcast 224.0.1.1 autokey # multicast server
#multicastclient 224.0.1.1 # multicast client
#manycastserver 239.255.254.254 # manycast server
#manycastclient 239.255.254.254 autokey # manycast client
# Enable public key cryptography.
#crypto
includefile /etc/ntp/crypto/pw
# Key file containing the keys and key identifiers used when operating
# with symmetric key cryptography.
keys /etc/ntp/keys
# Specify the key identifiers which are trusted.
#trustedkey 4 8 42
# Specify the key identifier to use with the ntpdc utility.
#requestkey 8
# Specify the key identifier to use with the ntpq utility.
#controlkey 8
# Enable writing of statistics records.
#statistics clockstats cryptostats loopstats peerstats
# Disable the monitoring facility to prevent amplification attacks using ntpdc
# monlist command when default restrict does not include the noquery flag. See
# CVE-2013-5211 for more details.
# Note: Monitoring will not be disabled with the limited restriction flag.
disable monitor
8.配置文件修改完成,保存退出,重启服务。
sudo service ntpd restart
9.启动后,一般需要5-10分钟左右的时候才能与外部时间服务器开始同步时间。可以通过命令查询NTPD服务情况。
[root@server-8ba72fa7-dbb8-4455-818d-600b01c79b8d ~]# netstat -tlunp | grep ntp
udp 0 0 172.17.0.1:123 0.0.0.0:* 56528/ntpd
udp 0 0 192.168.1.90:123 0.0.0.0:* 56528/ntpd
udp 0 0 127.0.0.1:123 0.0.0.0:* 56528/ntpd
udp 0 0 0.0.0.0:123 0.0.0.0:* 56528/ntpd
udp6 0 0 fe80::f816:3eff:fec:123 :::* 56528/ntpd
udp6 0 0 ::1:123 :::* 56528/ntpd
udp6 0 0 :::123 :::* 56528/ntpd
10.启动后,可通过 ntpstat 命令查看时间同步状态。
[root@server-8ba72fa7-dbb8-4455-818d-600b01c79b8d ~]# ntpstat
unsynchronised
time server re-starting
polling server every 8 s
11.配置内网NTP-Clients
ntp同步形式
内网其他设备作为NTP的客户端配置,通过上面配置的时间同步服务器同步时间。
12.首先需要安装NTPD服务,然后配置为自启动(与NTP-Server完全一样),然后找其中一台配置/etc/ntp.conf文件,配置完成验证通过后,拷贝到其他客户端机器,直接使用即可。
# For more information about this file, see the man pages
# ntp.conf(5), ntp_acc(5), ntp_auth(5), ntp_clock(5), ntp_misc(5), ntp_mon(5).
driftfile /var/lib/ntp/drift
# Permit time synchronization with our time source, but do not
# permit the source to query or modify the service on this system.
restrict default nomodify notrap nopeer noquery
# Permit all access over the loopback interface. This could
# be tightened as well, but to do so would effect some of
# the administrative functions.
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict ::1
# Hosts on local network are less restricted.
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server 127.0.0.1
Fudge 127.0.0.1 stratum 10
#中国这边最活跃的时间服务器 : http://www.pool.ntp.org/zone/cn
#server 210.72.145.44 perfer # 中国国家受时中心
#server 202.112.10.36 # 1.cn.pool.ntp.org
#server 59.124.196.83 # 0.asia.pool.ntp.org
# 配置时间服务器为本地的时间服务器
server 192.168.1.90
#broadcast 192.168.1.255 autokey # broadcast server
#broadcastclient # broadcast client
#broadcast 224.0.1.1 autokey # multicast server
#multicastclient 224.0.1.1 # multicast client
#manycastserver 239.255.254.254 # manycast server
#manycastclient 239.255.254.254 autokey # manycast client
# Enable public key cryptography.
#crypto
includefile /etc/ntp/crypto/pw
# Key file containing the keys and key identifiers used when operating
# with symmetric key cryptography.
keys /etc/ntp/keys
# Specify the key identifiers which are trusted.
#trustedkey 4 8 42
# Specify the key identifier to use with the ntpdc utility.
#requestkey 8
# Specify the key identifier to use with the ntpq utility.
#controlkey 8
# Enable writing of statistics records.
#statistics clockstats cryptostats loopstats peerstats
# Disable the monitoring facility to prevent amplification attacks using ntpdc
# monlist command when default restrict does not include the noquery flag. See
# CVE-2013-5211 for more details.
# Note: Monitoring will not be disabled with the limited restriction flag.
disable monitor
13.保存退出,请求服务器前,先使用ntpdate手动同步下时间:
systemctl stop ntpd.service
ntpdate -u 192.168.1.90
14.这里有可能出现同步失败,一般情况下原因都是本地的NTPD服务器还没有正常启动起来,一般需要几分钟时间后才能开始同步。
手动同步成功后,启动服务:
systemctl start ntpd.service
15.ntpdate设置计划任务同步时间
停止ntpd服务,如果不停止,使用ntpdate同步会报错:the NTP socket is in use, exiting。
systemctl stop ntpd.service
16.查找命令的绝对路径(计划任务中需要)
[root@xxx ~]# which ntpdate
/usr/sbin/ntpdate
17.添加计划任务
sudo crontab -e
# sync time
0-59/10 * * * * /usr/sbin/ntpdate 192.168.1.1
说明:每10分钟从192.168.1.90这台时间服务器同步一次时间
18.查看计划任务
sudo crontab -l
七、Linux配置SCP免密码传输文件
1.创建SSH信任机制
主机A要想通过无密码的SCP方式将文件传输到主机B,主机A得先获得主机B的信任。所谓信任机制可以这样抽象的理解,主机A将自己的某一个证件放到主机B那儿,当有一个请求发到主机B的时候,主机B用这个证件来判断是不是主机A,如果是主机A,则可以直接传输文件,否则要求输入密码才能传输。而这个证件就是主机A上的公钥。
获取A的公钥:
cd /root/.ssh/
ssh-keygen -t rsa
2.这一步要输入三个参数
存储公私钥的文件夹位置,默认为/root/.ssh/,文件名默认是id_rsa和id_rsa.pub
使用该公私钥时是否需要密码,默认不需要密码
再次确认是否需要密码
推荐一路回车,选择默认即可
执行完毕后,看一下,多了两个文件id_rsa和id_rsa.pub。接下来只需要将id_rsa.pub中的内容复制到主机B中的authorized_keys文件中。
cat id_rsa.pub >authorized_keys2
3.使用scp将authorized_keys2传输到主机B的/root/.ssh/ 目录下,如果主机B存在authorized_keys文件,则追加到authorized_keys里面
cat authorized_keys2 >>authorized_keys
否则直接创建
cat authorized_keys2 >authorized_keys
八、mysql异地备份shell+异地备份文件定时清理
mysql备份
#!/bin/bash
#数据库备份路径
BACKUP=/MYSQL_BACKUP
#当前时间
DATETIME=$(date +%Y-%m-%d)
#数据库名称
DATABASE=dream_db
#数据库地址
HOST=192.168.1.1
#数据库用户名
DB_USER=root
#文件数量3
NUM_THREE=3
#文件数量10
NUM_TEN=10
echo "===数据库备份开始==="
#创建备份目录
[ ! -d "${BACKUP}/$DATETIME" ] && mkdir -p "${BACKUP}/$DATETIME"
echo "备份文件存放于${BACKUP}/$DATABASE-$DATETIME.sql"
#开始备份
echo "===开始导出sql文件==="
mysqldump --socket=/data/mysql.sock -h localhost -u${DB_USER} ${DATABASE} >${BACKUP}/$DATETIME/$DATABASE-$DATETIME.sql
if [ $? -ne 0 ]; then
echo "$DATETIME:sql导出报错,退出脚本!"
exit
else
echo "$DATETIME:导出成功,开始整包压缩。"
fi
#压缩成tar.gz包
cd $BACKUP
tar -cf - $DATETIME | pv -s $(du -sb $DATETIME | awk '{print $1}') | gzip > $DATETIME.tar.gz
if [ $? -ne 0 ]; then
echo "$DATETIME:压缩报错,退出脚本!"
exit
else
echo "$DATETIME:压缩成功,删除备份文件夹。"
fi
#删除备份目录
rm -rf ${BACKUP}/$DATETIME
if [ $? -ne 0 ]; then
echo "$DATETIME:删除报错,退出脚本!"
exit
else
echo "$DATETIME:删除备份文件夹成功,开始传输到异地服务器。"
fi
#备份到服务器
scp $DATETIME.tar.gz [email protected]:/MYSQL_BACKUP
if [ $? -ne 0 ]; then
echo "$DATETIME:传输失败,退出脚本!"
exit
else
echo "$DATETIME:传输成功,成功备份db文件。"
fi
echo "===巡检清理备份数据==="
#数据库:删除10天(不含)前备份的数据
echo "===过期文件如下==="
find $BACKUP -mtime +9 -name "*.tar.gz" -print | wc -l
find $BACKUP -mtime +9 -name "*.tar.gz" -exec rm -rf {} \;
echo "===清理完成==="
2.建立crontab定时任务
输入crontab -e,开始编辑定时任务
#输入以下代码 表示每天23:59自动执行代码
30 1 * * * /MYSQL_BACKUP/mysql_backup.sh
输入:wq 保存退出
九、dockerfile创建JDK1.8+TOMCAT8.5镜像
docker制作JDK1.8+TOMCAT8.5镜像
1.基础镜像拉取
docker pull ubuntu:16.04
2.拉取成功后执行docker images 查看镜像列表
docker images
3.创建工作目录
mkdir -p /opt/docker/biuld/tomcat8
4.进入工作目录
cd /opt/docker/biuld/tomcat8
5.将jdk和tomcat安装包放入tomcat8目录下
6.编写Dockerfile
Dockerfile内容
FROM ubuntu:16.04
MAINTAINER HEJJ
#上传
ADD apache-tomcat-8.5.56.tar.gz /opt/tomcat
ADD jdk-8u11-linux-x64.tar.gz /opt/jdk
COPY /run.sh /root/run.sh
RUN chmod 777 /root/run.sh
#环境变量
ENV JAVA_HOME=/opt/jdk/jdk1.8.0_11/jre
ENV PATH=:$JAVA_HOME/bin:$PATH
ENV CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
ENTRYPOINT ["/root/run.sh"]
7.编写run.sh启动脚本
#!/bin/bash
#sh /opt/tomcat/apache-tomcat-8.5.56/bin/catalina.sh run
sh /opt/tomcat/apache-tomcat-8.5.56/bin/startup.sh
tail -f /opt/tomcat/apache-tomcat-8.5.56/logs/catalina.out
8.生成镜像
docker build -t tomcat_web:1.0 .
9.启动做好的镜像,挂载logs\conf\webapps
10.记录镜像导出
docker save -o tomcat_web.tar tomcat_web:1.0
会导出在当前所在目录
11.记录镜像导入
docker load -i tomcat_web:1.0.tar
会从当前目录导入
十、docker内日志安装及切割
1.创建脚本
vim docker-entrypoint.sh
2.内容如下
#!/bin/bash
set -x
#/etc/init.d/cron start用于启动crontab服务,但这样启动的crontab服务中配置的定时命令是没有Dockerfile中设置的环境变量的。
#因此还需要在这之前执行env >> /etc/default/locale,这样有Dockerfile中通过ENV设置的环境变量在crontab中就可以正常读取了。
# 保存环境变量,开启crontab服务
env >> /etc/default/locale
/etc/init.d/cron start
3.建立crontab定时任务
输入crontab -e,开始编辑定时任务
#输入以下代码 表示每天23:59自动执行代码
0 1 * * * /opt/docker-entrypoint.sh
输入:wq 保存退出
十一、tomcat日志切割
1.创建cut_log.sh
#!/bin/bash
echo "----------$(date "+%Y-%m-%d %H:%M:%S")/tomcat日志清理-----------"
#获取当前日期
DATE=`date +%Y-%m-%d`
#获取一天前的日期
DATE1=`date -d '1 days ago' +%Y-%m-%d`
#获取三天前的日期
DATE3=`date -d '3 days ago' +%Y-%m-%d`
#获取七天前的日期
DATE7=`date -d '7 days ago' +%Y-%m-%d`
#设置变量存路径
log_dir=/opt/tomcat_mount/logs
monitor_file=catalina.out
#进入logs所在目录
cd $log_dir
#判断日志备份文件夹是否存在
if [ -L $log_dir/logs_backup ]
then
echo "The logs_backup exist"
else
echo "The logs_backup doesn't exist"
#创建日志备份文件夹
mkdir logs_backup
#赋权限
chmod 777 logs_backup
fi
#判断结束
#把日志复制以当天日期命名的文件
cp catalina.out catalina.out.${DATE}
#清空容器输出的日志文件
echo "" > catalina.out
#移动到日志备份文件夹
mv catalina.out.${DATE} ./logs_backup
#其他文件处理,把前一天的移动到到备份文件夹
mv catalina.${DATE1}.log logs_backup
mv host-manager.${DATE1}.log logs_backup
mv localhost.${DATE1}.log logs_backup
mv localhost_access_log.${DATE1}.txt logs_backup
mv manager.${DATE1}.log logs_backup
#移动到日志备份文件夹清理过期文件(暂时不清理)
# cd $log_dir/logs_backup
# rm -rf catalina.out.${DATE7}
# rm -rf catalina.${DATE3}.log
# rm -rf host-manager.${DATE3}.log
# rm -rf localhost.${DATE3}.log
# rm -rf localhost_access_log.${DATE3}.txt
# rm -rf manager.${DATE3}.log
echo "----------$(date "+%Y-%m-%d %H:%M:%S")/tomcat日志清理完成-----------"
2.建立crontab定时任务
输入crontab -e,开始编辑定时任务
#输入以下代码 表示每天23:59自动执行代码
0 1 * * * /opt/cut_log.sh
输入:wq 保存退出