配置云服务器环境
- 端口映射记录
aliyun_ESC暴露端口 -> guli_environment容器内监听端口 : 说明 20000 -> 8848 : nacos 20001 -> 3306 : mysql 20002 -> 6379 : redis 20003 -> 22 : ssh 20004 -> 9200 :ElasticSearch 20005 -> 80 : nginx
配置云服务器环境
1、docker 创建ubuntu容器
- 创建容器, 其中
--privileged
能赋予容器更多权限,好让容器内的docker使用主机的守护进程docker run --privileged -p 20000:8848 -p 20001:3306 -p 20002:6379 -p 20003:22 --name guli_environment -itd ubuntu:20.04
- 进入容器,注意
/bin/bash
必须在docker exec -it guli_environment /bin/bash
- 由于容器是轻量级了,需要安装一些依赖
apt-get update apt-get install sudo apt-get install openssh-server apt-get install vim apt-get install tmux
- 安装docker: 推荐博客
- 启动服务: 推荐博客
显示如下结果就成功了:sudo service docker restart sudo service docker status
2、给ubuntu容器添加新用户
- 添加用户
asc
adduser asc
- 给用户分配
sudo
权限usermod -aG sudo asc
3、由于后面基本都是在这个ubuntu容器上部署服务,所以配置一下ssh免密登录
- 将你的设备信息公钥写在
~/.ssh/authorized_keys
中 - 注意一定要确保主机ubuntu容器启动,且该容器内ssh启动,还要确保端口映射正确
service ssh status service ssh restart
- 注意给
asc
用户也配置以下免密登录,方法是相同的。 - 同时在当前用户
asc
下,将用户添加到 docker 用户组中 (注意执行下面命令后要退出重进才能生效)sudo usermod -aG docker $USER
4、正式开始部署服务
mysql
docker pull mysql:5.7
docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
- 添加配置文件
vim /mydata/mysql/conf/my.cnf
- 配置信息如下:
[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
redis
docker pull redis
添加redis配置文件
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
设置Redis持久化
vim /mydata/redis/conf/redis.conf
在文件中添加
appendonly yes
nacos
docker pull nacos/nacos-server
docker run --env MODE=standalone --name nacos -d -p 8848:8848 nacos/nacos-server
设置开机自启动
docker update mysql --restart=always
docker update redis --restart=always
docker update nacos --restart=always
5、添加新服务给容器开新的端口映射
-
通过修改端口映射的配置文件来实现 (这个方法其实挺容易实现的)
-
查看容器的端口映射情况,在容器外执行:(注意容器要启动才有结果)
docker port guli_environment
-
查看要修改容器的容器Id
docker inspect guli_environment | grep Id
-
停止容器
docker stop guli_environment
-
进入
/var/lib/docker/containers
目录下找到与Id相同的目录,修改hostconfig.json
和config.v2.json
文件 (注意要切换到root用户)。
-
停掉docker服务
systemctl stop docker
如果有警告可以试试下面的:
systemctl stop docker.service systemctl stop docker.socket
-
修改hostconfig.json,添加端口映射: (可以使用json格式化工具)
"9200/tcp": [{ "HostIp": "", "HostPort": "20004" }]
-
修改config.v2.json文件,在
ExposedPorts
后面添加"9200/tcp": {}
-
启动docker
systemctl start docker
-
启动子容器
guli_environment
docker start guli_environment
-
添加
9200
端口映射成功docker port guli_environment
-
注意重启子服务后,要进入重启ssh和docker服务
docker exec -it guli_environment /bin/bash
service ssh start service docker start
-
-
以下通过封装镜像的方式失败了,因为ESC空间不够
- 在旧容器中将各docker服务停止
docker stop mysql docker stop nacos docker stop redis
- 在ESC中将环境所在容器停止
docker stop guli_environment
- 将
guli_environment
封装成镜像docker commit guli_environment guli_environment_image
- 在anliyun控制台放行新端口,并重启ESC
- 在旧容器中将各docker服务停止
6、安装ElasticSearch
- 参考博客
- 首先拉取ElasticSearch 和可视化工具 kibana
docker pull elasticsearch:7.4.2 docker pull kibana:7.4.2
- 创建实例前,先创建用来同步配置和数据的文件夹
mkdir -p /mydata/elasticsearch/config mkdir -p /mydata/elasticsearch/data
- 配置配置文件,如果没有权限切换为root用户
echo "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml chmod -R 777 /mydata/elasticsearch/
- 创建实例
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \ -e "discovery.type=single-node" \ -e ES_JAVA_OPTS="-Xms64m -Xmx256m" \ -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
- 创建Kibana实例
- 由于服务器只有2g内存,所以就不配置这个了。
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://自己IP地址:9200 -p 5601:5601 -d kibana:7.4.2
7、安装Nginx
- 参考博客
- 先随便拉一个nginx
docker run -p 80:80 --name nginx -d nginx:1.10
- 创建目录
/mydata/nginx
- 将容器内配置文件拷贝到nginx目录下
docker container cp nginx:/etc/nginx
- 修改nginx目录名为conf,并放在新建的一个nginx目录下
mv nginx conf mkdir nginx mv conf nginx/
- 删除原来的nginx容器
- 创建新的nginx容器
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 -itd nginx:1.10