不要走朋友,下面有很多安装教程(注意查阅目录)
基础命令
#查看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
有帮助,感谢!