Bootstrap

CentOS7 操作手册

不要走朋友,下面有很多安装教程(注意查阅目录)

基础命令

#查看cnetos7版本
cat /etc/centos-release
#更改密码
passwd
#(root指的是用户名,也可以不指定,默认更改当前用户)
passwd root
#删除文件命令
rm -f example.txt
#删除文件夹命令
rm -rf example
#解压命令
tar zxvf example.gz
#使profile文件生效
source /etc/profile
#查看端口使用情况
netstat -an | grep 3306
#查看分区和磁盘
lsblk
#查看分区
cfdisk /dev/sda
#查看当前磁盘挂载
df -h

免密及脚本

#1、添加hosts节点
vi /etc/hosts
#追加如下
#  IP          节点名称
192.168.10.121 node1
192.168.10.122 node2
#创建ssh密钥 分别在三个节点都执行 
ssh-keygen
#回车四次
#复制私钥到其他节点
ssh-copy-id -i node1(或者ip)
ssh-copy-id -i node2(或者ip)
#验证,例如复制文件
scp /root/1.txt node1:/root/

tmux

#1、基础配置、安装、使用
#安装
yum install tmux
#更新
yum update
#版本
tmux -V
#创建新会话
tmux new -s [会话名]
#删除会话
tmux kill-session -t  [会话名]
#会话更改名称
tmux rename -t  [旧会话名] [新会话名]
#查看会话
tmux ls
#进入会话
tmux a -t [会话名]
#退出会话
ctrl+b d
#新建窗口
ctrl+b c
#切换窗口
#切换到上一个window
ctrl+b p
#切换到下一个window
ctrl+b n
#切换到0号window,依次类推,可换成任意窗口序号
ctrl+b 0
#列出当前session所有window,通过上、下键切换窗口
ctrl+b w
#相邻的window切换
ctrl+b l
#水平分屏
ctrl+b "
#垂直分屏
ctrl+b %
#切换窗格
#依次切换当前窗口下的各个pane
ctrl+b o
#根据按箭方向选择切换到某个pane
ctrl+b Up|Down|Left|Right
#对当前窗口下的所有pane重新排列布局,每按一次,换一种样式
ctrl+b Space (空格键) 
#最大化当前pane。再按一次后恢复
ctrl+b z
#关闭窗格
ctrl+b x

crontab

#查看crontab文件
#root用户可以用-u参数查看指定用户的计划任务,如果没有-u参数,表示查看自己的计划任务。普通用户只查看自己的计划任务,不允许使用-u参数。
crontab -l [-u 用户名]
#编辑crontab文件 -u 同上
crontab -e [-u 用户名]
#删除crontab文件 -u 同上
crontab -r [-u 用户名]
#示例
#没6分钟执行 example.sh(脚本:必须写全路径)   example.log(结果输出位置)
*/6 * * * * /home/example.sh \> /home/example.log
#根据上面简单demo我们自行参考cron定时任务表达式。
https://cron.qqe2.com/

上面例子细观察,发现其表达式是在分钟开始,所以crontab是5位。如果我们想每秒进行任务处理。
编写一份sh文件,内容如下。

#!/bin/bash
#间隔的秒数,不能大于60
step=3
for (( i = 0; i < 60; i=(i+step) )); do
	#执行的命令
    $(curl http://www.baidu.com)
    sleep $step
done
exit 0
#保存上面的sh文件,这里我们假设本地保存至 /home/example.sh
#编写计划任务
crontab -e [-u 用户名]
#在最下方添加(crontab分钟单位,sh是秒单位。所以达到了我们的期望。)
* * * * * /home/example.sh
#我们保存并退出(重启生效)
#相关命令
service crond start
service crond stop
service crond restart
service crond reload
service crond status



JDK1.8.0_281

1、下载jdk
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
在这里插入图片描述

#2、上传jdk至服务器并进行相关配置
#解压
tar zxvf jdk.tar.gz
#编辑环境变量
vi /etc/profile
#编辑内容如下并保存
export JAVA_HOME=/home/server/jdk1.8.0_281
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
#使环境变量生效
source /etc/profile
#查看版本
java -version



mysql5.7.31

mysql5.7.31安装

1、基础准备、下载、解压、安装

#卸载CentOS7系统自带mariadb
rpm -qa|grep mariadb
rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
#删除etc目录下的my.cnf(如果存在要删除)
rm /etc/my.cnf
#下载mysql
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz
#解压
tar -zxvf mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz
#更改文件夹名字
mv mysql-5.7.31-linux-glibc2.12-x86_64 mysql-5.7.31
#检查该链接库文件有没有安装使用
rpm -qa|grep libaio
#未安装则运行
yum install libaio-devel.x86_64
#进入mysql/bin/目录,编译安装并初始化mysql,务必记住数据库管理员临时密码
./mysqld --initialize --user=root --datadir=/home/server/mysql-5.7.31/data --basedir=/home/server/mysql-5.7.31
#配置文件
vi /etc/my.cnf

#配置内容如下
[mysqld]
user=root
#数据位置
datadir = /home/server/mysql-5.7.31/data
#安装位置
basedir = /home/server/mysql-5.7.31
#端口
port = 3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
#支持数据分区存储
symbolic-links = 0
#最大连接数
max_connections = 666
#最大错误连接数
max_connect_errors = 666
#数据库默认字符串
character-set-server = utf8mb4
#数据库字符集对应一些排序等规则
collation-server = utf8mb4_general_ci
#client连接mysql时的字符集,防止乱码
init_connect=‘SET NAMES utf8mb4’
#独享表空间
innodb_file_per_table=1
#表名大小写不明感,敏感为
#lower_case_table_names=1
#binlog日志文件保存的过期时间,过期后自动删除
expire_logs_days = 5
#日志
log_error = /home/server/mysql-5.7.31/log/error.log
slow_query_log = 1
slow_query_log_file = /home/server/mysql-5.7.31/log/slow.log

#添加文件夹授权
chmod 777 /home/server/mysql-5.7.31/
chmod 777 /home/server/mysql-5.7.31/data/
chmod 777 /home/server/mysql-5.7.31/log/
chmod 777 /home/server/mysql-5.7.31/log/error.log
#添加软连接
ln -s /home/server/mysql-5.7.31/support-files/mysql.server /etc/init.d/mysql
ln -s /home/server/mysql-5.7.31/bin/mysql /usr/bin/mysql
#重启mysql服务
service mysql restart
#启动时 /home/server/mysql-5.7.31/data/**.pid 可能缺少pid文件,看错误对应新建。
#登录mysql密码就是初始化时生成的临时密码
mysql -u root -p
#修改密码
set password for root@localhost = password('root');
#开放远程连接
use mysql;
update user set user.Host='%' where user.User='root';
flush privileges;
#设置开机自启
#赋予可执行权限
chmod +x /etc/init.d/mysql
#添加服务
chkconfig --add mysql
#显示服务列表
chkconfig --list
#开机启动
chkconfig mysql on
#启动命令
/etc/init.d/mysql restart



mysql备份

1、编写备份脚本 backup.sh 存放至/backup/mysql/sh/

#!/bin/bash
DATE=`date +%Y%m%d%H%M`                #开始时间
DATABASE=springboot-admin              #数据库名
DB_USERNAME=root                       #账号
DB_PASSWORD="mysql"                    #密码
BACKUP_PATH=/backup/mysql/data/        #备份位置

#备份及压缩
/usr/bin/mysqldump -u$DB_USERNAME -p$DB_PASSWORD -h 127.0.0.1 -R --opt $DATABASE | gzip > ${BACKUP_PATH}\/${DATABASE}_${DATE}.sql.gz

#保存5天的备份信息
find ${BACKUP_PATH} -mtime +5 -name "${DATABASE}_*.sql.gz" -exec rm -f {} \;

2、编写完脚本后以防万一,更改脚本字符集。

vi /backup/mysql/sh/backup.sh
:set ff=unix

3、给脚本授权、备份位置授权

chmod +x /backup/mysql/sh/backup.sh
chmod a+w /backup/mysql/data/

4、编写定时任务

crontab -e
#在文件中编写如下内容
#凌晨3点备份
00 3 * * * /backup/mysql/sh/backup.sh
#需要重启crond才能生效
service crond stop
service crond start
#查看状态
service crond status
#查看执行记录日志
less /var/log/cron

*注意事项

#出现如下警告。可以去my.cnf 里面设置[mysqldump] 并配置号账号密码(也可以忽略)
mysqldump: [Warning] Using a password on the command line interface can be insecure



oracle11g

oracle11g安装(无图形界面)

#查看磁盘空间:选择较大的路径用于建立用户和数据库的安装
df -lh
#创建安装Oracle程序用户组、DBA用户组,创建用户并授权
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
#修改用户密码
passwd oracle
#查看新建的用户
id oracle
#创建Oracle的主目录、配置目录
mkdir -p /home/oracle/Oracle11G
mkdir -p /home/oracle/Inventory11G
#先把下载好的Oracle文件传输到oracle目录下,切换到oracle目录下解压缩,自动生成database目录
cd /home/oracle
unzip 对应的压缩文件名称(2)
#新建的三个目录授权
chown -R oracle:oinstall /home/oracle/Oracle11G
chown -R oracle:oinstall /home/oracle/Inventory11G
chown -R oracle:oinstall /home/oracle/database
#输入以下命令:如果有提示未安装的软件包,用命令# yum -y install compat-libstdc++-33-3.2.3(软件包名称)安装对应的软件包即可,完成安装后的效果见下图
rpm -q binutils compat-libstdc++ elfutils-libelf elfutils-libelf-devel elfutils-libelf-devel-static gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers kernel-headers ksh libaio libaio-devel libgcc libgomp libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel
#查看firewalld防火墙状态
systemctl status firewalld.service
#关闭firewalld防火墙
systemctl stop firewalld.service
#禁止开机使用firewalld防火墙
systemctl disable firewalld.service
#修改文件
vi /etc/selinux/config

修改如下配置
SELINUX=disabled

#修改CentOS系统标识 (Oracle默认不支持CentOS)
vi /etc/redhat-release
#将文件所有内容替换为:redhat-7
mv redhat-release redhat-7
#修改此文件
vi /etc/security/limits.conf

在文件最后一行前,追加以下内容
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536

#修改此文件
vi /etc/sysctl.conf

将下列内容加入该文件,要使 /etc/sysctl.conf 更改立即生效,保存后执行:# sysctl -p
fs.file-max = 6815744
fs.aio-max-nr = 1048576
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576

#修改用户环境变量(需要通过vi编辑模式修改,文件是隐藏的)
vi /home/oracle/.bashrc

添加以下内容(对应安装目录),保存后执行:# source /home/oracle/.bashrc

export PATH
export ORACLE_BASE=/home/oracle/Oracle11G
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID=orcl
export ORACLE_UNQNAME=orcl
export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export LANG=C
export NLS_LANG="SIMPLIFIED CHINESE_CHINA".ZHS16GBK
#重启
reboot
#切换到oracle用户,装数据库
su oracle
#编辑数据库安装文件
vi /home/oracle/database/response/db_install.rsp
#将下面配置参数根据安装目录修改

安装类型
oracle.install.option=INSTALL_DB_SWONLY
主机名称
ORACLE_HOSTNAME=oracle.server
安装组
UNIX_GROUP_NAME=oinstall
INVENTORY目录
INVENTORY_LOCATION=/home/oracle/Inventory11G
选择语言
SELECTED_LANGUAGES=en,zh_CN
oracle_home
ORACLE_HOME=/home/oracle/Oracle11G/product/11.2.0/db_1
oracle_base
ORACLE_BASE=/home/oracle/Oracle11G
oracle版本
oracle.install.db.InstallEdition=EE
dba用户组
oracle.install.db.DBA_GROUP=dba
oper用户组
oracle.install.db.OPER_GROUP=oinstall
数据库类型
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
globalDBName
oracle.install.db.config.starterdb.globalDBName=orcl
SID
oracle.install.db.config.starterdb.SID=orcl
默认数据库编码
oracle.install.db.config.starterdb.characterSet=AL32UTF8
自动管理内存的最小内存(M)
oracle.install.db.config.starterdb.memoryLimit=800
设定所有数据库用户使用同一个密码
oracle.install.db.config.starterdb.password.ALL=oracle
设置安全更新
DECLINE_SECURITY_UPDATES=true

注意:安装出现swap(交换空间)不足,如下示例。
解决方案如下在这里插入图片描述

#检查 Swap 空间在设置 Swap 文件之前,有必要先检查一下系统里有没有既存的 Swap 文件。运行以下命令
swapon -s
#如果返回的信息概要是空的,则表示 Swap 文件不存在。
#检查文件系统在设置 Swap 文件之前,同样有必要检查一下文件系统,看看是否有足够的硬盘空间来设置 Swap 
df -hal
#创建并允许 Swap 文件下面使用 dd 命令来创建 Swap 文件。检查返回的信息,还剩余足够的硬盘空间即可。
dd if=/dev/zero of=/swapfile bs=1024 count=512k
#参数解读:if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file >bs=bytes:同时设置读入/输出的块大小为bytes个字节count=blocks:仅拷贝blocks个块,块大小等于bs指定的字节数。
#格式化并** Swap 文件上面已经创建好 Swap 文件,还需要格式化后才能使用。
mkswap /swapfile
#Swap ,运行命令
swapon /swapfile
#以上步骤做完,再次运行命令,你会发现返回的信息概要
swapon -s
#如果要机器重启的时候自动挂载 Swap ,那么还需要修改 fstab 配置。
vi /etc/fstab
#添加下面内容
/swapfile          swap            swap    defaults        0 0
#最后,赋予 Swap 文件适当的权限(自选)
chown root:root /swapfile 
chmod 0600 /swapfile
#编辑完成输入
/home/oracle/database/runInstaller -silent -responseFile /home/oracle/database/response/db_install.rsp -ignorePrereq
#正式开始安装Oracle…
#如有报错自行百度处理,一般情况不会出现。
#切换root用户
su root
#执行如下
/home/oracle/Inventory11G/orainstRoot.sh
/home/oracle/Oracle11G/product/11.2.0/db_1/root.sh
#切换oracle用户-配置监听
su oracle
vi /home/oracle/database/response/netca.rsp
#修改配置
#安装的类型
INSTALL_TYPE=""custom""
#监听器数量
LISTENER_NUMBER=1
#监听器的名称列表
LISTENER_NAMES={"LISTENER"}
#监听器使用的通讯协议列表
LISTENER_PROTOCOLS={"TCP;1521"}
#监听器启动的名称
LISTENER_START=""LISTENER""
#保存后执行
/home/oracle/Oracle11G/product/11.2.0/db_1/bin/netca /silent /responseFile /home/oracle/database/response/netca.rsp
#开启和关闭监听不用执行,上面安装好后,监听会自动开启
#开启监听 
#/home/oracle/Oracle11G/product/11.2.0/db_1/bin/lsnrctl start
#关闭监听 
#/home/oracle/Oracle11G/product/11.2.0/db_1/bin/lsnrctl stop
#添加数据库实例
vi /home/oracle/database/response/dbca.rsp
#修改配置
#不要变
RESPONSEFILE_VERSION="11.2.0"
#操作为创建实例
OPERATION_TYPE="createDatabase"
#数据库实例名
GDBNAME="orcl"
#实例名字
SID="orcl"
#建库用的模板文件`
TEMPLATENAME="General_Purpose.dbc"
#SYS管理员密码
SYSPASSWORD="oracle"
#SYSTEM管理员密码
SYSTEMPASSWORD="oracle"
SYSMANPASSWORD="oracle"
DBSNMPPASSWORD="oracle"
#数据文件存放目录`
DATAFILEDESTINATION=/home/oracle/Oracle11G/oradata
#恢复数据存放目录
RECOVERYAREADESTINATION=/home/oracle/Oracle11G/flash_recovery_area
#字符集
CHARACTERSET="AL32UTF8"
#字符集
NATIONALCHARACTERSET="AL16UTF16"
#1638MB,物理内存2G*80%
TOTALMEMORY="1638"
#保存后输入
/home/oracle/Oracle11G/product/11.2.0/db_1/bin/dbca -silent -responseFile /home/oracle/database/response/dbca.rsp
#查看实例是否运行
ps -ef | grep ora_ | grep -v grep
#修改启动和关闭实例的程序
vi /home/oracle/Oracle11G/product/11.2.0/db_1/bin/dbstart
vi /home/oracle/Oracle11G/product/11.2.0/db_1/bin/dbshut


ORACLE_HOME_LISTNER=$1
修改为
ORACLE_HOME_LISTNER=/home/oracle/Oracle11G/product/11.2.0/db_1

#接着执行
vi /etc/oratab


orcl:/home/oracle/Oracle11G/product/11.2.0:N
修改为
orcl:/home/oracle/Oracle11G/product/11.2.0:Y

#设置开启启动
chmod +x /etc/rc.d/rc.local
vi /etc/rc.d/rc.local
#修改内容如下
su oracle -lc "/home/oracle/Oracle11G/product/11.2.0/db_1/bin/lsnrctl start"
su oracle -lc "/home/oracle/Oracle11G/11.2.0/db_1/bin/dbstart"

oracle客户端链接

#修改安装目录下的 listener.ora
vi /安装目录(目录不一,自行查找)/listener.ora
#参考配置
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.104)(PORT = 1521))
    )
  )

SID_LIST_LISTENER =
(SID_LIST =
    (SID_DESC =
    #  (GLOBAL_DBNAME = ORCL)
      (ORACLE_HOME = /home/oracle/app/oracle/product/11.2.0/dbhome_1)
      (SID_NAME = orcl)
    )
)
ADR_BASE_LISTENER = /home/oracle/app



redis6.2.1

1、基础准备、下载、解压、安装

#下载
wget http://download.redis.io/releases/redis-6.2.1.tar.gz
#解压
tar -zxvf /home/server/redis-6.2.1.tar.gz
#安装依赖包
#安装gcc(期间可能由于你的centos7版本导致还是不能编辑,自行升级且切换gcc使用)
yum install gcc
#redis目录中进行编译
make install

#redis.conf 配置内容介绍如下
#访问IP
bind 0.0.0.0
#端口
port 6379
#守护进程
daemonize yes
#进程文件地址(redis.pid 自行新建)
pidfile /home/server/redis-6.2.1/run/redis-6379.pid
#当客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能
timeout 0
tcp-keepalive 60
#设置数据库的数量
databases 6
#数据库文件名
dbfilename dump.rdb
#数据库文件地址
dir /home/server/redis-6.2.1/data/
#连接密码
requirepass pssword

#切换到redis/src/下启动
cd /home/server/redis-6.2.1/src/
./redis-server /home/server/redis-6.2.1/redis.conf
#添加软连接
ln -s /home/server/redis-6.2.1/src/redis-server /etc/init.d/redis-server
ln -s /home/server/redis-6.2.1/src/redis-cli /usr/bin/redis-cli
#设置开机自启
#编辑配置文件
vi /etc/init.d/redis
#!/bin/bash
# chkconfig:   2345 90 10
# description:  Redis is a persistent key-value database
PATH=/usr/local/bin:/sbin:/usr/bin:/bin
REDISPORT=6379
EXEC=/home/server/redis-6.2.1/src/redis-server
REDIS_CLI=/home/server/redis-6.2.1/src/redis-cli

PIDFILE=/home/server/redis-6.2.1/run/redis-6379.pid
CONF="/home/server/redis-6.2.1/redis.conf"
#密码一定要设置正确
AUTH='scepter'

case "$1" in
        start)
                if [ -f $PIDFILE ]
                then
                        echo "$PIDFILE exists, process is already running or crashed."
                else
                        echo "Starting Redis server..."
                        $EXEC $CONF
                fi
                if [ "$?"="0" ]
                then
                        echo "Redis is running..."
                fi
                ;;
        stop)
                if [ ! -f $PIDFILE ]
                then
                        echo "$PIDFILE exists, process is not running."
                else
                        PID=$(cat $PIDFILE)
                        echo "Stopping..."
                       $REDIS_CLI -p $REDISPORT -a $AUTH SHUTDOWN
                        sleep 2
                       while [ -x $PIDFILE ]
                       do
                                echo "Waiting for Redis to shutdown..."
                               sleep 1
                        done
                        echo "Redis stopped"
                fi
                ;;
        restart|force-reload)
                ${0} stop
                ${0} start
                ;;
        *)
               echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2
                exit 1
esac
#赋予可执行权限
chmod +x /etc/init.d/redis
#添加服务
chkconfig --add redis
#显示服务列表
chkconfig --list
#开机启动
chkconfig redis on
#启动服务(如果其他方式启动过,删除对应的pid文件)
/etc/init.d/redis start



svn

1、基础配置、下载、安装

#安装
yum -y install subversion
#项目仓库
mkdir -p /home/server/svn/project
#版本库
svnadmin create /home/server/svn/project
#切换至版本库配置

配置详解
在这里插入图片描述
#conf目录下
authz:负责账号权限的管理,控制账号是否读写权限
passwd:负责账号和密码的用户名单管理
svnserve.conf:svn服务器配置文件
编辑 authz 文件(注意:[/]也是必须的)
[/] 表示根目录,即 /var/svnrepos
luo = rw 表示用户luo对根目录具有读写权限。
在这里插入图片描述
编辑 passwd 文件
用户名为:luo,认证密码为:luo123456
在这里插入图片描述
编辑 svnserve.conf 文件(注意:配置的前面不能有空格,一定要顶格写)
anon-access = none:表示禁止匿名用户访问。
auth-access = write:表示授权用户拥有读写权限。
password-db = passswd:指定用户名口令文件,即 passwd 文件。
authz-db = authz:指定权限配置文件,即 authz 文件。
realm = /home/server/svn/project:指定认证域,即 /var/svnrepos 目录。
在这里插入图片描述

输入账号密码后,提示 svn: Authorization failed解决办法
把authz 文件 [/] 改为 [] 试试

#设置开机自启
#编辑配置文件
vi /etc/init.d/svn
#!/bin/bash
# chkconfig: 2345 85 15
# description: svn server
SVN_HOME=/home/server/svn/project
SVN_SERVER=/usr/bin/svnserve
SVN_PORT=1234
if [ ! -x $SVN_SERVER ]; then
    echo "svnserver startup: cannot start"
    exit
fi

case "$1" in
    start)
        echo "Starting svnserve…"
        $SVN_SERVER -d -r $SVN_HOME --listen-port $SVN_PORT
        echo "Finished!"
        ;;
    stop)
        echo "Stoping svnserve…"
        killall svnserve
        echo "Finished!"
        ;;
    restart)
        $0 stop
        $0 start
        ;;
    *)
        echo "Usage: svn { start | stop | restart } "
        exit 1
esac
#赋予可执行权限
chmod +x /etc/init.d/svn
#添加服务
chkconfig --add svn
#显示服务列表
chkconfig --list
#开机启动
chkconfig svn on
#启动服务
/etc/init.d/svn start
#客户端访问SVN
svn://ip:port/project



nginx 1.18.0

nginx 1.18.0安装

1、基础配置、下载、安装

#安装依赖环境
#安装gcc环境
yum install -y gcc
#安装PCRE库,用于解析正则表达式
yum install -y pcre pcre-devel
#安装zlib压缩和解压缩依赖
yum install -y zlib zlib-devel
#安装openssl,SSL安全加密的套接字协议层,用于HTTP安全传输,也就是https
yum install -y openssl openssl-devel
#下载nignx包
wget http://nginx.org/download/nginx-1.18.0.tar.gz
#解压上传上来的Nginx压缩包
tar -zxvf nginx-1.18.0.tar.gz
#切换到nginx目录安装
#编译配置项 运行./configure进行默认配置的设置,当然你也可以使用自定义方式进行配置
./configure

在这里插入图片描述

#编译
make
#安装
make install
#开机自启
vi /etc/init.d/nginx
#!/bin/bash
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig:   2345 85 15
# description:  NGINX is an HTTP(S) server, HTTP(S) reverse \
#               proxy and IMAP/POP3 proxy server
# processname: nginx
# config:      /etc/nginx/nginx.conf
# config:      /etc/sysconfig/nginx
# pidfile:     /var/run/nginx.pid


nginx=/usr/local/nginx/sbin/nginx
prog=$(basename $nginx)
NGINX_CONF_FILE=/usr/local/nginx/conf/nginx.conf


start() {
    $nginx -c $NGINX_CONF_FILE
}

stop() {
    $nginx -s stop
}

restart() {
    test
    stop
    sleep 1
    start
}

reload() {
    test
    $nginx -s stop
}

test() {
	$nginx -t -c $NGINX_CONF_FILE
}

status() {
    echo `ps -A | grep nginx`
}

V() {
    $nginx -V
}


case "$1" in
    start)
		$1
        ;;
    stop)
		$1
        ;;
    restart|test)
		$1
        ;;
    reload)
		$1
        ;;
    status)
		$1
        ;;
    V)
		$1
    	;;
    *)
        echo $"Usage: $0 {start|stop|status|restart|reload|test|V}"
        exit 2
esac
#启动nginx
/usr/local/nginx/sbin/./nginx
#赋值一份pid
cp /usr/local/nginx/logs/nginx.pid /run
#更改nginx.conf
pid /run/nginx.pid
#赋予可执行权限
chmod +x /etc/init.d/nginx
#添加服务
chkconfig --add nginx
#显示服务列表
chkconfig --list
#开机启动
chkconfig nginx on
#启动服务
/etc/init.d/nginx start

nginx 注意事项

虚拟目录 alias、root

1、root与alias主要区别在于nginx如何解释location后面的uri,这会使两者分别以不同的方式将请求映射到服务器文件上。
2、root的处理结果是:root路径+location路径。
3、alias的处理结果是:alias路径替换location路径。
4、还有一个重要的点是alias后面必须要用"/"结束。

nginx 基础配置

#配置用户或者组,默认为nobody nobody
user  administrator administrators;
#允许生成的进程数,默认为1
worker_processes  2;
#指定nginx进程运行文件存放地址
pid  /nginx/nginx.pid;
#制定日志路径,级别。这个设置可以放入全局块,http块,server块,级别以此为:debug|info|notice|warn|error|crit|alert|emerg
error_log  log/error.log debug;

events {
	#设置网路连接序列化,防止惊群现象发生,默认为on
    accept_mutex  on;
    #设置一个进程是否同时接受多个网络连接,默认为off
    multi_accept  on;
    #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
    use epoll;
    #最大连接数,默认为512
    worker_connections  1024;
}

http {
	#文件扩展名与文件类型映射表
    include  mime.types;
    #默认文件类型,默认为text/plain
    default_type  application/octet-stream;
    #取消服务日志
    access_log  off;
    #自定义格式
    log_format  myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for';
    #combined为日志格式的默认值
    access_log  log/access.log myFormat;
    #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。
    sendfile on;
    #每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限。
    sendfile_max_chunk 100k;
    #连接超时时间,默认为75s,可以在http,server,location块。
    keepalive_timeout 65;
    #允许最大上传
    client_max_body_size 5M;

    upstream mysvr {   
      server 127.0.0.1:8081;
      #热备
      server 192.168.1.110:8081  backup;
    }
    
    #错误页
    error_page 404 https://www.error.com;
    
    server {
    	#监听端口
        listen  80;
        #监听地址
        server_name  127.0.0.1;
    	#单连接请求上限次数。
        keepalive_requests  120;
        
        #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。
        location ~*^.+$ {
        	#将代理服务器收到的用户的信息传到真实服务器上
       		proxy_set_header Host $host;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;     		
			#根目录
	        #root path;
	        #设置默认页
	        #index vv.txt;
	        #请求转向mysvr 定义的服务器列表
	        proxy_pass  http://mysvr;
	        #拒绝的ip
	        deny 127.0.0.1;
	        #允许的ip
	        allow 172.18.5.54;
        } 
    }

	#HTTP可用于访问RTMP统计数据
	server {
        listen      8080;
        #此URL提供XML格式的RTMP统计信息
        location /stat {
            rtmp_stat all;
            #使用此样式表可以将XML作为网页查看,在浏览器中
            rtmp_stat_stylesheet stat.xsl;
        }

        location /stat.xsl {
            #查看RTMP统计数据的XML样式表。将stat.xsl复制到任何需要的地方然后把完整的目录路径放在这里
            root /path/to/stat.xsl/;
        }

        location /hls {
            #提供HLS碎片
            types {
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }
            root /tmp;
            add_header Cache-Control no-cache;
        }

        location /dash {
            #提供DASH碎片
            root /tmp;
            add_header Cache-Control no-cache;
        }
    }
}

#模块通过自动流推送到 nginx 工作人员来支持多工作人员直播。此选项由 rtmp_auto_push 指令切换。
rtmp {

    server {
        listen 1935;
        chunk_size 4000;

        #电视模式:一个出版商,多个订户
        application mytv {
            #启用实时流媒体
            live on;
            #记录流的前1K
            record all;
            record_path /tmp/av;
            record_max_size 1K;
            #将当前时间戳附加到每个flv
            record_unique on;
            #仅从本地主机发布(不配置就是所有)
            allow publish 127.0.0.1;
            deny publish all;
        }

        #转码(需要ffmpeg)
        application big {
            live on;
            #在每个pusblished流上运行此命令(ffmpeg)
            #使用替换:$app/${app},$name/${name}作为应用程序和流名称。
           	#此ffmpeg调用接收来自此应用程序的流,将分辨率降低到32x32。
           	#该流是发布到的同名的“小型”应用程序
           	#ffmpeg可以对流做任何事情,比如视频/音频转码、调整大小、更改容器/编解码器参数等
			#可以指定多个exec行。
            exec ffmpeg -re -i rtmp://localhost:1935/$app/$name -vcodec flv -acodec copy -s 32x32 -f flv rtmp://localhost:1935/small/${name};      
        }

		#分辨率降低的视频来自ffmpeg(上面的配置)
        application small {
            live on;
        }

        application webcam {
            live on;
            #来自本地网络摄像头的流
            exec_static ffmpeg -f video4linux2 -i /dev/video0 -c:v libx264 -an -f flv rtmp://localhost:1935/webcam/mystream;      
        }

        application mypush {
            live on;
			#这里发布的每一条流自动推送到这两台机器
            push rtmp1.example.com;
            push rtmp2.example.com:1934;
        }

        application mypull {
            live on;
            #从远程计算机中提取所有流在本地玩
            pull rtmp://rtmp3.example.com pageUrl=www.example.com/index.html;
        }

        application mystaticpull {
            live on;
            #在nginx启动时启动静态拉动
            pull rtmp://rtmp4.example.com pageUrl=www.example.com/index.html name=mystream static;
        }

        #视频点播
        application vod {
            play /var/flvs;
        }

        application vod2 {
            play /var/mp4s;
        }

        #很多出版商,很多订户,没有支票,没有录音
        application videochat {
            live on;
            #以下通知接收所有会话变量以及HTTP POST中的特定调用参数请求,发出HTTP请求并使用HTTP代码决定是否允许发布,是否从这个连接
            on_publish http://localhost:8080/publish;
            #播放一样
            on_play http://localhost:8080/play;
            #发布/播放结束(断开连接时重复)
            on_done http://localhost:8080/done;
            #上述所有通知均收到标准connect()参数以及播放/发布。如果发送了任何参数使用GET style语法进行播放和发布.这些也包括在内。
            #示例URL:rtmp://localhost/myapp/mystream?a=b&c=d
            #每2分钟录制10个视频关键帧(无音频)
            record keyframes;
            record_path /tmp/vc;
            record_max_frames 10;
            record_interval 2m;
            #异步通知已记录的flv
            on_record_done http://localhost:8080/record_done;
        }


        #HLS
        #要使HLS正常工作,请在tmpfs中创建一个目录(/tmp/HLS here)寻找碎片。目录内容通过HTTP提供(请参阅)http{}节(在配置中)传入流必须为H264/AAC格式。对于iPhone,使用基线H264配置文件(参见ffmpeg示例)。此示例从准备用于HLS的电影创建RTMP流:
        #ffmpeg-loglevelverbose-re-i电影。avi-vcodec libx264
		#-vprofile基线-acodec libmp3lame-ar 44100-ac 1
		#-f flvrtmp://localhost:1935/hls/movie
		#如果您需要对实时流进行转码,请使用“exec”功能。
        application hls {
            live on;
            hls on;
            hls_path /tmp/hls;
        }

        #MPEG-DASH类似于HLS
        application dash {
            live on;
            dash on;
            dash_path /tmp/dash;
        }
    }
}

nginx https

#关闭nginx进程
/etc/init.d/nginx stop
#切换到nginx解压目录
cd /home/server/nginx-1.18.0/
#执行如下命令(可自行更改对应改装目录)
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
#接着执行
make
#nginx解压目录下的objs目录中的nginx程序,拷贝到nginx的安装目录/usr/local/nginx/sbin目录下.替换时注意回复 y .
cp /home/server/nginx-1.18.0/objs/nginx /usr/local/nginx/sbin/nginx
#检查模块是否安装
/etc/init.d/nginx V

nginx rtmp

参考地址:https://github.com/arut/nginx-rtmp-module
下载 nginx-rtmp-module 模块

#关闭nginx进程
/etc/init.d/nginx stop
#切换到nginx解压目录
cd /home/server/nginx-1.18.0/
#执行如下命令(可自行更改对应改装目录)
./configure --add-module=/home/server/nginx-1.18.0/nginx-rtmp-module
#多个版本的 nginx (1.3.14 - 1.5.0) 也需要添加 http_ssl_module
./configure --add-module=/home/server/nginx-1.18.0/nginx-rtmp-module --with-http_ssl_module
#接着执行
make
make install
#(如果你安装了https则执行此命令)nginx解压目录下的objs目录中的nginx程序,拷贝到nginx的安装目录/usr/local/nginx/sbin目录下.替换时注意回复 y .
cp /home/server/nginx-1.18.0/objs/nginx /usr/local/nginx/sbin/nginx
#检查模块是否安装
/etc/init.d/nginx V

nginx 负载均衡

#负载示例,在http{}配置与server{}同级
upstream example{
    ip_hash;
    server 192.168.0.1:8080;
    server 192.168.0.2:8080 weight=100 down;
    server 192.168.0.3:8080 weight=100;
    server 192.168.0.4:8080 weight=100 backup;
    server 192.168.0.5:8080 weight=100 max_fails=3 fail_timeout=30s;
}
#配置讲解
#down:表示当前的server暂时不参与负载
#weight:默认为1.weight越大,负载的权重就越大。
#backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
#上例中 192.168.0.5 设置最大失败次数为 3,也就是最多进行 3 次尝试,且超时时间为 30秒。max_fails 的默认值为 1,fail_timeout 的默认值是 10s。
#注意,当upstream中只有一个 server 时,max_fails 和 fail_timeout 参数可能不会起作用。weight\backup 不能和 ip_hash 关键字一起使用。
#使用
server {
	/example {
		proxy_pass http://example(对应upstream的名字)/
	}
}



node、pm2

node安装

#确认服务器有nodejs编译及依赖相关软件,如果没有可通过运行以下命令安装
yum -y install gcc gcc-c++ openssl-devel
#进入要存放下载资源的目录(本演示目录)
wget http://nodejs.org/dist/v14.16.1/node-v14.16.1-linux-x64.tar.gz
#解压
tar -zxvf node-v14.16.1-linux-x64.tar.gz
#解压完成后重命名文件夹,将文件夹重命名为node
mv node-v14.16.1-linux-x64 node-v14.16.1
#进入 node 目录下的bin目录,执行 ls命令(会看到node和npm) node -v 检查版本
cd node-v14.16.1/bin && ls 
#设置全局变量
vi /etc/profile
#加入以下内容
export NODE_HOME=/home/server/node-v14.16.1
export PATH=$PATH:$NODE_HOME/bin
export NODE_PATH=$NODE_HOME/lib/node_modules
#保存修改,然后使用如下命令使配置生效
source /etc/profile
#在任意位置执行node -v命令
node -v
#为npm添加淘宝镜像
npm config set registry https://registry.npm.taobao.org
npm config get registry
#使用淘宝npm镜像的cnpm
npm install -g cnpm --registry=https://registry.npm.taobao.org
#安装yarn(自己选择)
npm install -g yarn 或者 cnpm install -g yarn

将服务项目,放到服务器内。进入项目目录。
进行相应的环境编译与windows无误。
例如 cnpm install 、yarn install 、npm install

pm2安装

#PM2是node进程管理工具,可以利用它来简化很多node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等
npm install -g pm2
#运行服务(run start 指运行命令,也可以脚本启动,自行百度。)
pm2 start yarn --name "名字标识" -- run start
#设置pm2开机自启动
pm2 startup
#移除pm2开机自启动
pm2 unstartup
#保存当前进程开机自启动	
pm2 save
#<进程启动命令> [--name <进程名>]	启动应用程序	
pm2 start
#显示所有进程状态 
pm2 list
#监控进程	
pm2 monit
#[进程id或名字]	显示进程日志	
pm2 logs 
#停止[所有]进程
pm2 stop [all]	
#重启[所有]进程
pm2 restart [all]	
#删除指定[所有]进程
pm2 delete [<进程名或者id>,all]
#查看应用程序信息
pm2 info [进程id或名字]	



文件上传下载

#使用lrzsz 安装如下
yum -y install lrzsz
#仅操作文件 非 文件夹
#下载
sz
#上传
rz



frp内网穿透

服务端安装

下载对应安装包:https://github.com/fatedier/frp/releases
本人资源里面也有
在这里插入图片描述

#主备工作
#1台外网服务器、1台windows电脑(一般内网电脑)、外网IP(域名也可以)
#此安装过程分为 服务端和客户端
#打开安装包 里面有 frps.ini(服务端配置文件)、frpc.ini(客户端配置文件)
#安装服务端
#上传文件至 centos7 内(例:/home/server/frp_0.40.0_linux_amd64.tar.gz)
#解压
cd /home/server
tar -zxvf frp_0.40.0_linux_amd64.tar.gz
cd frp_0.40.0_linux_amd64/
#编辑服务端配置文件
vi frps.ini
#配置文件内容如下
[common]
# frp监听的端口,默认是7000,可以改成其他的
bind_port = 7000
# 授权码,请改成更复杂的
token = 123456

# frp管理后台端口,请按自己需求更改
dashboard_port = 7500
# frp管理后台用户名和密码,请改成自己的
dashboard_user = userName
dashboard_pwd = password
enable_prometheus = true

# frp日志配置
log_file = /home/server/frp_0.40.0_linux_amd64/log/frps.log
log_level = info
log_max_days = 3

后台启动服务
cd /home/server/frp_0.40.0_linux_amd64/
nohup ./frps -c ./frps.ini > /dev/null &

访问 外网IP + 7500 出现如下后台管理页面 输入上面配置的账号密码
在这里插入图片描述

至此我们服务端搭建完成

客户端安装

#windows 客户端启动
#解压安装包 frp_0.40.0_windows_amd64

解压内容如下
在这里插入图片描述

#修改客户端配置文件 frpc.ini
#配置内容如下
[common]
#服务端IP(域名)
server_addr = *.*.*.*
#服务认证端口
server_port = 7000
#服务端token
token = 123456

[web]
type = tcp
local_ip = 127.0.0.1
#本地服务端口
local_port = 8082
#外网映射端口
remote_port = 8090

启动服务(用命令启动)
切换到对应的盘符启动命令
frpc.exe -c frpc.ini
在这里插入图片描述
测试:外网IP + 映射端口(8090)+ 对应路径 ---------> 直达 127.0.0.1:8082 + 对应路径




漏洞处理

CVE-2020-12321

RHSA-2021:0339: linux-firmware 安全更新

#解决方案
yum update iwl100-firmware
yum update iwl1000-firmware
yum update iwl105-firmware
yum update iwl135-firmware
yum update iwl2000-firmware
yum update iwl2030-firmware
yum update iwl3160-firmware
yum update iwl3945-firmware
yum update iwl4965-firmware
yum update iwl5000-firmware
yum update iwl5150-firmware
yum update iwl6000-firmware
yum update iwl6000g2a-firmware
yum update iwl6000g2b-firmware
yum update iwl6050-firmware
yum update iwl7260-firmware
yum update linux-firmware
#重启验证
reboot

CVE-2020-25648

RHSA-2021:1384: nss 安全和BUG修复更新

#解决方案
yum update nss
#重启验证
reboot

CVE-2021-20305

RHSA-2021:1145: nettle 安全更新

#解决方案
yum update nettle
#重启验证
reboot

CVE-2021-27803

RHSA-2021:0808: wpa_supplicant 安全更新

#解决方案
yum update wpa_supplicant
#重启验证
reboot

CVE-2020-8625

RHSA-2021:0671: bind 安全更新

#解决方案
yum update bind-export-libs
yum update bind-libs-lite
#重启验证
reboot

CVE-2021-27219

RHSA-2021:2147: glib2 安全更新

#解决方案
yum update glib2
#重启验证
reboot

CVE-2019-25013\CVE-2020-10029\CVE-2020-29573

RHSA-2021:0348: glibc 安全和BUG修复更新

#解决方案
yum update glibc
#重启验证
reboot

CVE-2021-25215

RHSA-2021:1469: bind 安全更新

#解决方案
yum update bind-export-libs
yum update bind-libs-lite
#重启验证
reboot

CVE-2020-10543\CVE-2020-10878\CVE-2020-12723

RHSA-2021:0343: perl 安全更新

#解决方案
yum update perl-Pod-Escapes
yum update perl-macros
yum update perl
#重启验证
reboot

CVE-2020-25692

RHSA-2021:1389: openldap 安全更新

#解决方案
yum update openldap
#重启验证
reboot

CVE-2021-25217

RHSA-2021:2357: dhcp 安全更新

#解决方案
yum update dhclient
#重启验证
reboot

CVE-2020-0543、CVE-2020-0548、CVE-2020-0549、CVE-2020-24489

在这里插入图片描述

RHSA-2021:3028: microcode_ctl security,bug fix和修复更新

#解决方案
yum update microcode_ctl
#重启验证
reboot

CVE-2020-24489、CVE-2020-24511、CVE-2020-24512、CVE-2020-24513

RHSA-2021:2305: microcode_ctl security,bug fix和修复更新

#解决方案
yum update microcode_ctl
#重启验证
reboot

OpenSSH CVE-2018-15919

一般情况更新7.8以上版本就可以了
官方地址:http://www.openssh.com/portable.html
选择http下面的china
进入阿里下载地址 https://mirrors.aliyun.com/pub/OpenBSD/OpenSSH/portable/
选择较高版本

#解决方案
#解压文件
tar -zxvf openssh-8.8p1.tar.gz
cd openssh-8.8p1
./configure
make
make install
#检查版本
ssh -V

有帮助,感谢!
在这里插入图片描述

;