这里写目录标题
1. 前言
新买的服务器,一定要记得根据自己的需求开放端口和安全组(端口和安全组是两个东西,要都开放之后才能对外使用该端口)
比如说想要使用Navicat或者别的应用远程连接数据库,一般情况下需要开放服务器的3306端口(有的教程会让直接关闭防火墙,不太推荐)。
在服务器上开放3306端口之后,需要进入之前购买该服务器的网站中把安全组开放。
如下图所示,因为我安全组中没有允许3306端口,所以就算服务器开放了3306端口,我们也无法连接到数据库。
1.1. 端口相关命令
1.1.1. 开放端口
firewall-cmd --zone=public --add-port=5672/tcp --permanent
# 开放5672端口
firewall-cmd --zone=public --remove-port=5672/tcp --permanent
#关闭5672端口
firewall-cmd --reload
# 配置立即生效
1.1.2. 查看防火墙所有开放的端口
firewall-cmd --list-all
firewall-cmd --zone=public --list-ports
1.2. 防火墙相关命令
systemctl status firewalld
# 查看防火墙状态
systemctl start firewalld
# 开启防火墙
systemctl stop firewalld
# 关闭防火墙
2. 环境搭建
2.1. Docker下载和安装
安装参考:CentOS Docker 安装|菜鸟教程
拓展:Docker镜像网,可以在网站中查询各种镜像的使用说明
2.1.1. 卸载旧版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2.1.2. 使用 Docker 仓库进行安装
安装所需的软件包
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
使用阿里云仓库
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装最新版本的 Docker Engine-Community 和 containerd
sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
2.1.3. 启动Docker
sudo systemctl start docker
2.1.4. 查看是否成功安装Docker
docker ps --help
//查看docker ps的用法
如下图所示即为docker安装成功。
2.2. RabbitMQ下载和安装
2.2.1. 拉取镜像
docker search rabbitmq
搜索镜像
docker pull rabbitmq:3-management
成功拉取到3-management版本
2.2.2. 运行MQ容器
docker run \
-e RABBITMQ_DEFAULT_USER=itcast \
-e RABBITMQ_DEFAULT_PASS=123321 \
--name mq \
--hostname mq1 \
-p 15672:15672 \
-p 5672:5672 \
-d \
rabbitmq:3-management
命令解释:
docker run \ #新建并且运行容器
-e RABBITMQ_DEFAULT_USER=itcast \ #用户名
-e RABBITMQ_DEFAULT_PASS=123321 \ #密码
--name mq \ #容器名称
--hostname mq1 \ #主机名,集群部署的时候需要配置
-p 15672:15672 \ #rabbitMQ管理平台的端口
-p 5672:5672 \ #rabbitMQ消息通讯端口
-d \ #后台运行
rabbitmq:3-management #镜像名称
2.2.3. 查看是否运行成功
docker ps
查看当前运行的容器
浏览器访问ip:15672
如下图所示即为运行成功(注意开放端口)
2.3. 安装elasticsearch
2.3.1. 单点部署es
2.3.1.1. 创建网络
因为我们还需要部署kibana容器,因此需要让es和kibana容器互联。这里先创建一个网络:
docker network create es-net
2.3.1.2. 加载镜像
这里我们采用elasticsearch的7.12.1版本的镜像,这个镜像体积非常大,接近1G。
docker pull elasticsearch:7.12.1
同理还有kibana
的tar包也需要这样做。
2.3.1.3. 运行
运行docker命令,部署单点es:
docker run -d \
--name es \
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
-e "discovery.type=single-node" \
-v es-data:/usr/share/elasticsearch/data \
-v es-plugins:/usr/share/elasticsearch/plugins \
--privileged \
--network es-net \
-p 9200:9200 \
-p 9300:9300 \
elasticsearch:7.12.1
命令解释:
-e "cluster.name=es-docker-cluster"
:设置集群名称-e "http.host=0.0.0.0"
:监听的地址,可以外网访问-e "ES_JAVA_OPTS=-Xms512m -Xmx512m"
:内存大小-e "discovery.type=single-node"
:非集群模式-v es-data:/usr/share/elasticsearch/data
:挂载逻辑卷,绑定es的数据目录-v es-logs:/usr/share/elasticsearch/logs
:挂载逻辑卷,绑定es的日志目录-v es-plugins:/usr/share/elasticsearch/plugins
:挂载逻辑卷,绑定es的插件目录--privileged
:授予逻辑卷访问权--network es-net
:加入一个名为es-net的网络中-p 9200:9200
:端口映射配置http协议端口,供用户访问-p 9300:9300
:端口映射配置互联端口,es各个容器结点之间
在浏览器中输入:http://IP:9200 即可看到elasticsearch的响应结果:
2.3.2. 单点部署kibana
2.3.2.1. 加载镜像
docker pull kibana:7.12.1
2.3.2.2. 运行
运行docker命令,部署kibana
docker run -d \
--name kibana \
-e ELASTICSEARCH_HOSTS=http://es:9200 \
--network=es-net \
-p 5601:5601 \
kibana:7.12.1
--network es-net
:加入一个名为es-net的网络中,与elasticsearch在同一个网络中-e ELASTICSEARCH_HOSTS=http://es:9200"
:设置elasticsearch的地址,因为kibana已经与elasticsearch在一个网络,因此可以用容器名直接访问elasticsearch-p 5601:5601
:端口映射配置
kibana启动一般比较慢,需要多等待一会,可以通过命令:
docker logs -f kibana
查看运行日志.
此时,在浏览器输入地址访问:http://IP:5601,即可看到结果
2.3.3. 分词器IK
2.3.3.1.在线安装ik插件(较慢)
# 进入容器内部
docker exec -it es /bin/bash
# 在线下载并安装
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.12.1/elasticsearch-analysis-ik-7.12.1.zip
#退出
exit
#重启容器
docker restart es
2.3.3.2.离线安装ik插件(推荐)
1)查看数据卷目录
安装插件需要知道elasticsearch的plugins目录位置,而我们用了数据卷挂载,因此需要查看elasticsearch的数据卷目录,通过下面命令查看:
# 查看es容器挂载的目录
docker inspect es | grep -A 20 Mounts
#查看数据卷es-plugins
docker volume inspect es-plugins
显示结果:
[
{
"CreatedAt": "2022-05-06T10:06:34+08:00",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/es-plugins/_data",
"Name": "es-plugins",
"Options": null,
"Scope": "local"
}
]
说明plugins目录被挂载到了:/var/lib/docker/volumes/es-plugins/_data
这个目录中。
2)解压缩分词器安装包
ik下载地址:
链接:https://pan.baidu.com/s/1t6r6vG-4BZFPFcDisiPyBA
提取码:idhy
3)上传到es容器的插件数据卷中
也就是/var/lib/docker/volumes/es-plugins/_data
:
4)重启容器
# 4、重启容器
docker restart es
# 查看es日志
docker logs -f es
5)测试
IK分词器包含两种模式:
-
ik_smart
:最少切分 -
ik_max_word
:最细切分
GET /_analyze
{
"analyzer": "ik_max_word",
"text": "黑马程序员学习java太棒了"
}
2.4. nextcloud
简单来说是一个私有网盘。
2.4.1. 获取nextcloud镜像, 完成网盘搭建
docker run -d \
-p 8000:80 \
-v cn_nextcloud:/var/www/html \
-v cn_apps:/var/www/html/custom_apps \
-v cn_config:/var/www/html/config \
-v cn_data:/var/www/html/data \
-v cn_theme:/var/www/html/themes/myThemes \
--name nextcloud \
nextcloud
/**
-p 8000:80 \ 容器的80端口映射到服务器的8000端口
-v cn_nextcloud:/var/www/html \主文件夹
-v cn_apps:/var/www/html/custom_apps \已安装/已修改的应用程序
-v cn_config:/var/www/html/config \本地配置
-v cn_data:/var/www/html/data \您的nextcloud的实际数据
-v cn_theme:/var/www/html/themes/myThemes \主题/品牌
--name nextcloud \ 为容器命名为nextcloud
nextcloud
2.4.2. 通过查看是否安装成功
输入管理员账号密码,然后点击安装。
搭建云盘完成
此时我们再次访问网盘后则可以获取全平台的客户端,我们仅需要按需配置即可!
2.5. nginx
2.4.1. 获取nginx镜像, 运行容器
docker run -d \
-p 80:80 \
-p 443:443 \
-v nginx_conf:/etc/nginx \
-v nginx_logs:/var/log/nginx \
-v nginx_html:/usr/share/nginx/html \
--privileged=true \
--name nginx \
nginx
#生成nginx容器
#-v 挂载目录,格式 -v: 表示将主机目录与容器目录之间进行共享
#--privileged=true 容器内部对挂载的目录拥有读写等特权
2.4.2. 查看是否安装成功
浏览器访问ip(默认80端口),如下图所示即为安装成功。
2.4.3. 配置nginx
如果有时间,建议自行寻找nginx文档进行学习。
下面是我的nginx配置
在路径/var/lib/docker/volumes/nginx_html/_data
下,放入文件夹cat
在路径/var/lib/docker/volumes/nginx_conf/_data/conf.d
下,修改default.conf文件内容为:
server {
listen 80;
listen [::]:80;
server_name localhost;
#access_log /var/log/nginx/host.access.log main;
location / {
# root /usr/share/nginx/html; # 默认nginx访问页面
root /usr/share/nginx/html/cat; # 自定义nginx访问页面
index index.html index.htm;
}
# 自定义错误页面
error_page 404 /404.html;
location = /404.html {
root /usr/share/nginx/html/cat;
}
# location /cat/ {
# alias /usr/share/nginx/html/cat/;
# }
error_page 500 /500.html;
location = /500.html {
root /usr/share/nginx/html/cat;
}
error_page 502 /502.html;
location = /502.html {
root /usr/share/nginx/html/cat;
}
error_page 503 /503.html;
location = /503.html {
root /usr/share/nginx/html/cat;
}
error_page 504 /504.html;
location = /504.html {
root /usr/share/nginx/html/cat;
}
# redirect server error pages to the static page /50x.html
#
# error_page 500 502 503 504 /50x.html;
# location = /50x.html {
# root /usr/share/nginx/html;
# }
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
在服务器中执行docker restart nginx
重启nginx容器。
直接访问ip地址:
访问不存在的资源出现404错误时:
PS:想要cat文件夹的关注并私信我即可。
2.6 TODO
RabbitMQ:
docker run \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=huachenjinbei \
-v rabbitMQ_plugins:/plugins \
--name rabbitMQ \
--hostname mq1 \
-p 15672:15672 \
-p 5672:5672 \
-d \
rabbitmq:3.8-management
docker run \ #新建并且运行容器
-e RABBITMQ_DEFAULT_USER=itcast \ #用户名
-e RABBITMQ_DEFAULT_PASS=123321 \ #密码
-v rabbitMQ_plugins:/plugins \ # 插件目录添加挂载
--name mq \ #容器名称
--hostname mq1 \ #主机名,集群部署的时候需要配置
-p 15672:15672 \ #rabbitMQ管理平台的端口
-p 5672:5672 \ #rabbitMQ消息通讯端口
-d \ #后台运行
rabbitmq:3.8-management #镜像名称
--------------------------------------------------------
mongoDB:
docker run \
-itd \
--name mongoDB \
-v mongoDB:/data \
-p 27017:27017 \
-p 27117:27117 \
-p 27217:27217 \
-p 27317:27317 \
-p 27417:27417 \
-p 27517:27517 \
mongo:4.4 \
--auth
--------------------------------------------------------
-
rtmp-hls: (直播推流)
docker run -d -p 1935:1935 -p 8080:8080 -v /root/docker_file/rtmp-hls_1935_8080/nginx/nginx_conf:/etc/nginx -v /root/docker_file/rtmp-hls_1935_8080/nginx/nginx_logs:/var/log/nginx -v /root/docker_file/rtmp-hls_1935_8080/nginx/nginx_html:/usr/share/nginx/html alqutami/rtmp-hls
docker run --rm -it -p 1935:1935 -p 1985:1985 -p 8080:8080 -p 1990:1990 -p 8088:8088 --env CANDIDATE=$CANDIDATE -p 8000:8000/udp registry.cn-hangzhou.aliyuncs.com/ossrs/srs:5 ./objs/srs -c conf/https.docker.conf