安装 Docker
Docker官网: https://www.docker.com/; Docker中文网站: https://www.docker-cn.com/; Docker Hub官网:https://hub.docker.com/
CentOS 7 安装 Docker:
开启 Docker 服务:
1 systemctl start docker.service
查看安装结果:
设置开机启动:
1 systemctl enable docker.service
配置 docker 镜像下载加速。编辑配置⽂件:
1 vim /etc/docker/daemon.json
在其中加入加速镜像源地址即可(https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors):
1 2 3 { "registry-mirrors" : ["https://gc2odbl5.mirror.aliyuncs.com" ] }
加完加速地址后,重新加载配置⽂件,重启docker 服务即可:
1 2 systemctl daemon-reload systemctl restart docker.service
Docker Hub 镜像仓库地址:https://hub.docker.com/
Docker 安装 MySQL
下载镜像文件
创建实例并启动
1 2 3 4 5 6 7 8 9 10 11 12 13 $ sudo docker run -p 3306:3306 --name mysql \ -v /mydata/mysql/log :/var/log /mysql \ -v /mydata/mysql/data:/var/lib/mysql \ -v /mydata/mysql/conf:/etc/mysql \ -e MYSQL_ROOT_PASSWORD=root \ -d mysql:5.7 -v 将对应文件挂载到主机 -e 初始化对应 -p 容器端口映射到主机的端口 -d 后台运行
添加 MySQL 配置
1 $ vi /mydata/mysql/conf/my.cnf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 [client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] init_connect='SET collation_connection = utf8_unicode_ci' init_connect='SET NAMES utf8' character-set-server=utf8 collation-server=utf8_unicode_ci skip-character-set-client-handshake skip-name-resolve # skip-grant-tables 取消权限认证
启动后,可以使用 telnet 命令测试 mysql 能否被顺利连接:
1 telnet 47.98.120.35 3306
https://www.jianshu.com/p/b0abc38aa601
如果不能连通,可能的原因:
防火墙没有开启 3306 端口
云服务器的安全组没有开通 3306 端口
docker 内的 mysql 只允许其所在的服务器连接,不能被其他主机访问。此时需要在 mysql 服务器上设置一下允许的 ip 权限:
1 2 3 4 5 6 grant all privileges on *.* to root@'%' identified by 'zhaoyuyun' with grant option; flush privileges;
Docker 安装 Redis
下载镜像文件
创建实例并启动
1 2 3 4 5 6 7 8 9 mkdir -p /mydata/redis/conf touch /mydata/redis/conf/redis.conf docker run -p 6379:6379 --name redis \ -v /mydata/redis/data:/data \ -v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \ -d redis redis-server /etc/redis/redis.conf \ --requirepass "mypassword"
使用 redis 镜像执行 redis-cli
命令连接
1 docker exec -it redis redis-cli
开启 redis 持久化
1 2 3 4 vim /mydata/redis/conf/redis.conf appendonly yes
Docker 安装 Nginx
由于先拉取镜像然后再生成的 nginx 实例里没有包含配置文件,因此需要先直接启动一个 nginx 实例,并将其内生成的配置文件拷贝到宿主服务器中,然后再删掉这个启动的实例,重新按照标准流程生成一个 nginx 实例并挂载到宿主服务器的指定目录下。
先直接启动一个 nginx 实例,为了将其自动生成的配置文件复制出来
1 docker run -p80:80 --name nginx -d nginx:1.10
将容器内自动生成的配置文件拷贝到宿主服务器
1 docker container cp nginx:/etc/nginx /mydata/
将拷贝出的文件夹/mydata/nginx
重命名为 /mydata/conf
,并创建文件夹 /mydata/nginx
,将 /mydata/conf
文件夹移动到 /mydata/nginx
文件夹内
1 2 3 4 5 6 7 8 mv /mydata/ngnix/ /mydata/conf mkdir /mydata/nginx mv /mydata/conf /mydata/nginx/
在 /mydata/nginx
目录下新建两个文件夹分别存放网页和日志
1 2 3 4 5 mkdir -p /mydata/nginx/html mkdir -p /mydata/nginx/logs vim /mydata/nginx/html/index.html
停止并删除之前创建的 nginx 实例
1 2 docker stop nginx docker rm nginx
启动新的 nginx 实例,并进行挂载,此时就完成了配置文件的初始化
1 2 3 4 5 docker run -p 80:80 --name nginx \ -v /mydata/nginx/html:/usr/share/nginx/html \ -v /mydata/nginx/logs:/var/log /nginx \ -v /mydata/nginx/conf/:/etc/nginx \ -d nginx:1.10
设置自启动
1 docker update nginx --restart=always
关于 Nginx 的详细配置方法见文章:http://blog.yuyunzhao.cn/2021/07/26/【Nginx】Nginx/
注意事项
若在 Docker 中安装 Nginx,则在做动静分离时,指定的资源目录必须是在 Docker 容器中的目录 ,而不能是宿主机的目录 。
如果两个不同 server 的块中配置的 server_name
相同,则二者的 location 必须配置相同路径 ,否则会出现问题。如果必须配置不同的路径,则这两个 server 块中的 server_name
必须设置不同(可以一个 localhost,一个写 ip 地址)
查看 Nginx 的报错信息方法:docker logs nginx
Docker 安装 ElasticSearch
下载镜像文件
1 2 3 docker pull elasticsearch:7.4.2 docker pull kibana:7.4.2
配置
1 2 3 4 5 mkdir -p /mydata/elasticsearch/config mkdir -p /mydata/elasticsearch/data mkdir -p /mydata/elasticsearch/plugins echo "http.host: 0.0.0.0" >/mydata/elasticsearch/config/elasticsearch.yml chmod -R 777 /mydata/elasticsearch/
启动(9300 端口为 Elasticsearch 集群间组件的通信端口, 9200 端口为浏览器访问的 HTTP 请求端口)
1 2 3 4 5 6 7 docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \ -e "discovery.type=single-node" \ -e ES_JAVA_OPTS="-Xms64m -Xmx512m" \ -v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ -v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \ -v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \ -d elasticsearch:7.4.2
设置自启动
1 docker update elasticsearch --restart=always
启动 Kibana
1 2 docker run --name kibana -e ELASTICSEARCH_HOSTS=http://yuyunzhao.cn:9200 -p 5601:5601 -d kibana:7.4.2
在浏览器访问 5601 端口即可进入到界面
安装 ik 分词器
从 https://github.com/medcl/elasticsearch-analysis-ik/releases 下载 ik 分词器并拷贝解压到 /mydata/elasticsearch/plugins
目录下即可。
自定义词库
修改 /mydata/elasticsearch/plugins/ik/config
目录下的 IKAnalyzer.cfg.xml
文件,在其内写上远程字典地址:
1 2 3 4 5 6 7 8 9 10 11 12 13 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd" > <properties > <comment > IK Analyzer 扩展配置</comment > <entry key ="ext_dict" > </entry > <entry key ="ext_stopwords" > </entry > <entry key ="remote_ext_dict" > http://yuyunzhao.cn/es/fenci.txt</entry > </properties >
其中,远程字典文件 /es/fenci.txt
创建在了 nginx 的 /mydata/nginx/html
目录下,这样才可以被其他服务器访问到。
在词典中添加自定义的分词:
添加了分词后记得重新启动 elasticsearch 服务:
1 docker restart elasticsearch
这样在检索时就可以指定分词器为 ik 分词器:
1 2 3 4 5 POST _analyze { "analyzer" : "ik_max_word" , "text" : ["乔碧萝殿下" ] }
Docker 安装 RabbitMQ
RabbitMQ 的镜像有多种类型,我们选择带有 “mangement” 的版本(包含web管理页面)。
下载镜像(也可以直接运行 run,其会自动下载镜像)
1 docker pull rabbitmq:management
运行 rabbitmq:management
1 docker run -d --name rabbitmq -p 5671:5671 -p 5672:5672 -p 4369:4369 -p 25672:25672 -p 15671:15671 -p 15672:15672 rabbitmq:management
其中:
4369,25672(Erlang 发现 & 集群端口)
5672,5671(AMQP 端口)
15672(web 管理后台端口)
61613,61614(STOMP 协议端口)
1883,8883(MQTT 协议端口)
设置自动启动
1 docker update rabbitmq --restart=always
访问服务器的 15672 端口即可访问后台管理页面: