-
Docker安装(社区版)
卸载旧版本
Docker的旧版本被称为docker
或docker-engine
。 如果安装了这些,请卸载它们以及关联的依赖关系。
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
安装Docker CE(CE代表社区版)
您可以根据需要以不同的方式安装Docker CE:
-
大多数用户设置了Docker的存储库并从中安装,以方便安装和升级任务。 这是推荐的方法。
-
某些用户下载RPM软件包并手动安装并手动管理升级。 这在诸如在没有访问互联网的空隙系统上安装Docker的情况下是有用的。
-
在测试和开发环境中,一些用户选择使用自动化便利脚本来安装Docker。
使用存储库进行安装#
在新的主机上首次安装Docker CE之前,需要设置Docker存储库。 此后,您可以从存储库安装和更新Docker。
安装存储库#
- 安装必须的包。
yum-utils
提供了yum-config-manager
实用程序,并且device-mapper-persistent-data
和lvm2
需要devicemapper
存储驱动程序。
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
2.使用以下命令设置稳定存储库。 您始终需要稳定的存储库,即使您也想从边缘或测试存储库安装构建。
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
3.可选:启用test和edge。 这些存储库包含在上面的docker.repo文件中,但默认情况下禁用。 您可以将它们与稳定版本库一起启用。
sudo yum-config-manager --enable docker-ce-edge
sudo yum-config-manager --enable docker-ce-test
您可以通过运行带有--disable
标志的yum-config-manager
命令来禁用edge或test库。 要重新启用它,请使用--enable
标志。 以下命令禁用edge存储库。
sudo yum-config-manager --disable docker-ce-edge
从Docker 17.06开始,稳定的版本也被推到了edge和test存储库
安装 DOCKER CE#
1.安装最新版本的Docker CE,或转到下一步安装特定版本。
sudo yum install docker-ce
警告:如果启用了多个Docker存储库,则在
yum install
或yum update
命令中不安装或更新版本将始终安装尽可能高的版本,这可能不适合您的稳定性需求。
如果这是您第一次从最近添加的存储库安装软件包,系统将提示您接受GPG密钥,并显示密钥的指纹。 验证指纹是否正确,如果是,请接受密钥。 指纹应该匹配
060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35
Docker已安装但未启动。 Docker组已创建,但没有用户添加到组中。
2.在生产系统上,您应该安装特定版本的Docker CE,而不是始终使用最新版本。 列出可用的版本。 此示例使用排序-r
命令对结果进行排序,版本号由最高到最低,并被截断。
yum list docker-ce --showduplicates | sort -r
docker-ce.x86_64 17.09.ce-1.el7.centos docker-ce-stable
列表的内容取决于启用哪些存储库,并且将特定于您的CentOS版本(在本示例中由版本的.el7后缀表示)。 选择要安装的特定版本。 第二列是版本字符串。 您可以使用整个版本字符串,但您至少需要包含第一个连字符。 第三列是存储库名称,它指示软件包的存储库以及其稳定性级别。 要安装特定版本,请将版本字符串附加到包名称,并用连字符( - )分隔。
版本字符串是包名称加上直到第一个连字符的版本。 在上面的示例中,完全限定的包名称是
docker-ce-17.09.ce
。
sudo yum install <FULLY-QUALIFIED-PACKAGE-NAME>
3.启动Docker
sudo systemctl start docker
4.通过运行hello-world镜像来验证Docker是否正确安装。
sudo docker run hello-world
此命令下载hello-world镜像并在容器中运行它。 当容器运行时,它打印一条信息消息并退出。
Docker CE已安装并运行。 您需要使用sudo
来运行Docker命令。 继续执行Linux安装后,允许非特权用户运行Docker命令和其他可选配置步骤。
升级DOCKER CE#
要升级Docker CE,请按照安装说明进行操作,选择要安装的新版本。
从包装中安装#
如果您不能使用Docker的存储库来安装Docker,则可以下载您的版本的.rpm
文件并手动安装。 每次要升级Docker时,都需要下载一个新文件。
1访问https://download.docker.com/linux/centos/7/x86_64/stable/Packages/
并下载要安装的Docker版本的.rpm文件。
要安装edge包,请将上述URL中的stable更改为edge。
2.安装Docker CE,将下面的路径更改为您下载Docker程序包的路径。
sudo yum install /path/to/package.rpm
Docker已安装但未启动。 Docker组已创建,但没有用户添加到组中。
3.启动Docker
sudo systemctl start docker
4.通过运行hello-world镜像来验证Docker是否正确安装。
sudo docker run hello-world
此命令下载hello-world镜像像并在容器中运行它。 当容器运行时,它打印一条信息消息并退出。
Docker CE已安装并运行。 您需要使用sudo来运行Docker命令。 继续执行Linux的安装后步骤,以允许非特权用户运行Docker命令和其他可选配置步骤。
升级Docker#
要升级Docker CE,请下载较新的软件包文件并重复安装过程,使用yum -y升级而不是yum -y install,并指向新文件。
使用便利脚本进行安装#
Docker在get.docker.com
和test.docker.com
上提供了方便的脚本,用于将Docker CE的稳定和测试版本,快速、非交互式安装到开发环境中。 脚本的源代码位于docker-install存储库中。 不建议在生产环境中使用这些脚本,您应该在使用这些脚本之前了解潜在的风险:
- 脚本需要root或sudo权限才能运行。 因此,在运行脚本之前,应仔细检查和审核脚本。
- 这些脚本尝试检测您的Linux发行版和版本,并为您配置您的软件包管理系统。 此外,脚本不允许您自定义任何安装参数。 这可能导致不受支持的配置,无论是从Docker的角度还是从您自己的组织的准则和标准。
- 脚本安装包管理器的所有依赖关系和建议,而不要求确认。 这可能会安装大量的软件包,具体取决于您的主机的当前配置。
- 如果Docker已经使用其他机制安装在主机上,则不要使用便利脚本。
此示例使用get.docker.com
上的脚本在Linux上安装最新的Docker CE版本。 要安装最新的测试版本,请改用test.docker.com
。 在下面的每个命令中,将每次出现的get
与test
进行替换。
警告:在本地运行之前,始终检查从互联网下载的脚本。
curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh
<output truncated>
If you would like to use Docker as a non-root user, you should now consider
adding your user to the "docker" group with something like:
sudo usermod -aG docker your-user
Remember that you will have to log out and back in for this to take effect!
WARNING: Adding a user to the "docker" group will grant the ability to run
containers which can be used to obtain root privileges on the
docker host.
Refer to https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface
for more information.
Docker CE已安装。 它在基于DEB的发行版上自动启动。 在基于RPM的发行版中,您需要使用适当的systemctl
或service
命令手动启动它。 消息显示,非root用户默认情况下无法运行Docker命令。
使用方便脚本后升级#
如果您使用便捷脚本安装Docker,则应直接使用您的程序包管理器升级Docker。 重新运行方便脚本没有任何好处,如果尝试重新添加已经添加到主机的存储库,可能会导致问题。
卸载 Docker CE
1.卸载Docker包
sudo yum remove docker-ce
2.主机上的mages, containers, volumes或自定义配置文件不会自动删除。 删除所有mages, containers, volumes:
sudo rm -rf /var/lib/docker
您必须手动删除任何定义配置文件。
-
zookeeper安装
# 1、创建 /usr/local/services/zookeeper 文件夹:
mkdir -p /usr/local/services/zookeeper
# 2、进入到 /usr/local/services/zookeeper 目录中:
cd /usr/local/services/zookeeper
# 3、下载 zookeeper-3.4.10.tar.gz:
wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz
# 4、解压缩 zookeeper-3.4.10.tar.gz:
tar -zxvf zookeeper-3.4.10.tar.gz
# 5、进入到 /usr/local/services/zookeeper/zookeeper-3.4.9/conf 目录中:
cd zookeeper-3.4.10/conf/
6、复制 zoo_sample.cfg 文件的并命名为为 zoo.cfg:
cp zoo_sample.cfg zoo.cfg
7、用 vim 打开 zoo.cfg 文件并修改其内容为如下:
# The number of milliseconds of each tick
# zookeeper 定义的基准时间间隔,单位:毫秒
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
# dataDir=/tmp/zookeeper
# 数据文件夹
dataDir=/usr/local/services/zookeeper/zookeeper-3.4.10/data
# 日志文件夹
dataLogDir=/usr/local/services/zookeeper/zookeeper-3.4.10/logs
# the port at which the clients will connect
# 客户端访问 zookeeper 的端口号
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
# 8、保存并关闭 zoo.cfg 文件:
# 9、进入到 /usr/local/services/zookeeper/zookeeper-3.4.10/bin 目录中:
cd ../bin/
# 10、用 vim 打开 /etc/ 目录下的配置文件 profile:
vim /etc/profile
# 并在其尾部追加如下内容:(环境变量)
export ZOOKEEPER_HOME=/usr/local/services/zookeeper/zookeeper-3.4.10/
export PATH=$ZOOKEEPER_HOME/bin:$PATH
export PATH
# 11、使 /etc/ 目录下的 profile 文件即可生效:
source /etc/profile
# 12、启动 zookeeper 服务:
zkServer.sh start
打印如下信息则表明启动成功:
ZooKeeper JMX enabled by default
Using config: /usr/local/services/zookeeper/zookeeper-3.4.10/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
# 13、查询 zookeeper 状态:
zkServer.sh status
# 14、关闭 zookeeper 服务:
zkServer.sh stop
打印如下信息则表明成功关闭:
ZooKeeper JMX enabled by default
Using config: /usr/local/services/zookeeper/zookeeper-3.4.10/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED
# 15、重启 zookeeper 服务:
zkServer.sh restart
如打印如下信息则表明重启成功:
ZooKeeper JMX enabled by default
Using config: /usr/local/services/zookeeper/zookeeper-3.4.10/bin/../conf/zoo.cfg
ZooKeeper JMX enabled by default
Using config: /usr/local/services/zookeeper/zookeeper-3.4.10/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED
ZooKeeper JMX enabled by default
Using config: /usr/local/services/zookeeper/zookeeper-3.4.10/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
防火墙
一、开启、关闭、禁用
(1)设置开机启用防火墙:systemctl enable firewalld.service
(2)设置开机禁用防火墙:systemctl disable firewalld.service
(3)启动防火墙:systemctl start firewalld
(4)关闭防火墙:systemctl stop firewalld
(5)检查防火墙状态:systemctl status firewalld
二、使用firewall-cmd配置端口
(1)查看防火墙状态:firewall-cmd --state
(2)重新加载配置:firewall-cmd --reload
(3)查看开放的端口:firewall-cmd --list-ports
(4)开启防火墙端口:firewall-cmd --zone=public --add-port=9200/tcp --permanent
命令含义:
–zone #作用域
–add-port=9200/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效
注意:添加端口后,必须用命令firewall-cmd --reload重新加载一遍才会生效
(5)关闭防火墙端口:firewall-cmd --zone=public --remove-port=9200/tcp --permanent
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
MySQL
MySQL-5.7.31安装
#卸载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
Docker安装MySQL
一、拉取镜像
# 拉取镜像
docker pull mysql
# 或者
docker pull mysql:latest
# 以上两个命令是一致的,默认拉取的就是 latest 版本的
# 我们还可以用下面的命令来查看可用版本:
docker search mysql
二、查看镜像
# 使用以下命令来查看是否已安装了 mysql镜像
docker images
三、运行镜像
docker run -p 3306:3306 --name mysql --restart=always --privileged=true \
-v /usr/local/mysql/log:/var/log/mysql \
-v /usr/local/mysql/data:/var/lib/mysql \
-v /usr/local/mysql/conf:/etc/mysql \
-v /etc/localtime:/etc/localtime:ro \
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest
命令解决:
-p 3306:3306:指定宿主机端口与容器端口映射关系
--name mysql:创建的容器名称
--restart=always:总是跟随docker启动
--privileged=true:获取宿主机root权限
-v /usr/local/mysql/log:/var/log/mysql:映射日志目录,宿主机:容器
-v /usr/local/mysql/data:/var/lib/mysql:映射数据目录,宿主机:容器
-v /usr/local/mysql/conf:/etc/mysql:映射配置目录,宿主机:容器
-v /etc/localtime:/etc/localtime:ro:让容器的时钟与宿主机时钟同步,避免时区的问题,ro是read only的意思,就是只读。
-e MYSQL_ROOT_PASSWORD=123456:指定mysql环境变量,root用户的密码为123456-d mysql:latest:后台运行mysql容器,版本是latest。
或者使用下面的命令:
docker run --name mysql --restart=always --privileged=true \
-v /usr/local/mysql/data:/var/lib/mysql \
-v /usr/local/mysql/conf.d:/etc/mysql/conf.d \
-v /etc/localtime:/etc/localtime:ro \
-e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql:latest
四、查看正在运行的容器
# 查看正在运行的容器
docker ps
# 查看所有的docker容器
docker ps -a
*这个时候如果显示的是up状态,那就是启动成功了。如果是restarting,说明是有问题的。我们可以查看日志:
docker logs -f mysql
可能会发现:
Failed to access directory for --secure-file-priv. Please make sure that dir
此时如果我们执行第五步也会报错:
Error response from daemon: Container xxx is restarting, wait until the cont。。。
此时我们需要执行第六步。
五、查看容器内部
docker exec -it mysql /bin/bash
六、修改mysql配置
退出容器内部,创建mysql配置文件:my.cnf
cd /usr/local/mysql
ll
cd conf
vi my.cnf
在 my.cnf 文件中 写入如下内容:
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
# 设置东八区时区
default-time_zone = '+8:00'
# 设置密码验证规则,default_authentication_plugin参数已被废弃
# 改为authentication_policy
#default_authentication_plugin=mysql_native_password
authentication_policy=mysql_native_password
# 限制导入和导出的数据目录
# 为空,不限制导入到处的数据目录;
# 指定目录,必须从该目录导入到处,且MySQL不会自动创建该目录;
# 为NULL,禁止导入与导出功能
#secure_file_priv=/var/lib/mysql
secure_file_priv=
init_connect='SET collation_connection = utf8mb4_0900_ai_ci'
init_connect='SET NAMES utf8mb4'
character-set-server=utf8mb4
collation-server=utf8mb4_0900_ai_ci
skip-character-set-client-handshake
skip-name-resolve
默认的鉴权方式,我们修改为mysql_native_password,不然的话连接会报错。因为在mysql8以后的默认加密方式改变了,由 mysql_native_password 改为了caching_sha2_password。这种加密凡是在客户端无法访问,客户端支持的是mysql_native_password 。我们先进行第七步。
七、重启mysql服务,使其配置生效
docker restart mysql
八、设置docker启动时,启动mysql
docker update mysql --restart=always
九、重启mysql
docker restart mysql
十、授权远程访问
不进行授权直接登陆的话会报错的,如图:
错误内容:
Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
Connection refused: connect
Connection refused: connect
10.1 进入容器内部
docker exec -it mysql /bin/bash
10.2 登陆mysql
mysql -u root -p
此时我们使用mysql客户端连接服务器是失败的,因为默认的root不具有远程连接的权限。
上面的密码不要输入,直接回车进入。
10.3 选择数据库
10.4 查看用户连接情况
select host, user, plugin, authentication_string, password_expired from user;
我们看到root用户只有localhost的连接权限。
10.5 修改密码认证方式
ALTER USER root@'%' IDENTIFIED WITH mysql_native_password BY '123456';
ALTER USER root@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
-- 刷新权限
FLUSH PRIVILEGES;
10.6 修改密码认证方式
1. 输入exit退出mysql,再输入exit退出容器。
2.我们就可以通过客户端工具连接mysql了。
MySQL 数据库字符集设置
修改字符集有两种方法:
(1)编辑 vim /etc/my.cnf 配置文件,在相应段中加入相应的参数字符集,修改完毕后,重启 MySQL 服务务即可
[root@localhost ~]# vim /etc/my.cnf
[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[root@localhost ~]# systemctl restart mariadb.service
[root@localhost ~]# mysql
MariaDB [(none)]> show variables like '%char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
(2)MySQL 命令行中运行如下指令
MariaDB [(none)]> SET character_set_client = utf8;
MariaDB [(none)]> SET character_set_results = utf8;
MariaDB [(none)]> SET character_set_connection = utf8;
MariaDB [(none)]> show variables like '%char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
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
oracle_11g
oracle_11g安装(无图形界面)
#查看磁盘空间:选择较大的路径用于建立用户和数据库的安装
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
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
#设置数据库的数量
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-安装
#安装依赖环境
#安装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-注意事项
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 + 对应路径