本文已参与「新人创作礼」活动,一起开启掘金创作之路。
服务器基本环境安装教程(docker篇)
一、安装docker
1. 常用命令
#1.卸载旧版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
#2.需要的安装包
yum install -y yum-utils
#3.设置镜像的仓库
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
#默认是从国外的,不推荐
#推荐使用国内的
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#更新yum软件包索引
yum makecache fast
#4.安装docker相关的 docker-ce 社区版 而ee是企业版
yum install docker-ce docker-ce-cli containerd.io
#6. 使用docker version查看是否按照成功
docker version
#7. 测试
docker run hello-world
# 先切换到root用户, 再执行以下命令
su root
# 启动docker
systemctl start docker
# 重启dokcer
systemctl restart docker
# 开机自动启动docker
systemctl enable docker
2. 安装步骤
#第一步
yum install -y yum-utils
#第二步 设置国内仓库地址
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#第三步 更新yum软件包索引
yum makecache fast
#第四步 安装docker
yum -y install docker
#第五步 查看docker版本号
docker version
#第六步 设置开机自动启动docker
systemctl enable docker
#第七步 记得更新一下yum
yum update
3. 安装成功后如下
4. 修改Docker配置,让其可以通过IDEA链接
# 打开文件
vim /usr/lib/systemd/system/docker.service
# 修改ExecStart添加配置
-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock \
# 重载配置
systemctl daemon-reload
# 重启docker服务
systemctl restart docker
下面第一张图不对,请看第二张图
二、安装Nginx环境
1. 安装nginx镜像
#第一步拉取镜像 确保docker 服务已启动
docker pull nginx
2. 查看镜像是否拉取成功
3. 启动容器并创建共享(容器内映射主机)
#命令
docker run --network mynet -p 80:80 -p 443:443 -v/home/nginx/ssl:/etc/nginx/home/nginx/ssl:rw -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro -v /home/nginx/logs:/var/log/nginx:rw -v /home/nginx/conf/conf.d:/etc/nginx/conf.d:ro -v /home/nginx/html:/usr/share/nginx/html:rw -d --name nginx nginx
#解释
-v: 主机目录:容器内目录
-p: 主机端口:容器内端口
-d: 后台运行
--name: 容器运行后的名字
--network: 自定义网络
docker run -p 80:80 -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro -v /home/nginx/logs:/var/log/nginx:rw -v /home/nginx/conf/conf.d:/etc/nginx/conf.d:ro -v /home/nginx/html:/usr/share/nginx/html:rw -d --name nginx nginx
4. 启动并测试是否成功
附:中间会遇到文件创建成文件夹的问题,需要手动创建文件夹并写入文件。文件如下:
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
#access_log /var/logs/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
三、安装mysql数据库
1. 拉取mysql镜像
# 拉取镜像
docker pull mysql:8.0
2. 创建数据目录和配置文件
#在宿主机创建放置mysql的配置文件的目录和数据目录
mkdir -p /home/mysql/conf /home/mysql/data
#进行授权
chmod -R 755 /home/mysql/
3. 创建配置文件
vim /home/mysql/conf/my.cnf
#内容如下:
[client]
#socket = /usr/mysql/mysqld.sock
default-character-set = utf8mb4
[mysqld]
#pid-file = /var/run/mysqld/mysqld.pid
#socket = /var/run/mysqld/mysqld.sock
#datadir = /var/lib/mysql
#socket = /usr/mysql/mysqld.sock
#pid-file = /usr/mysql/mysqld.pid
datadir = /usr/mysql/data
character_set_server = utf8mb4
collation_server = utf8mb4_bin
secure-file-priv= NULL
lower_case_table_names=1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Custom config should go here
!includedir /etc/mysql/conf.d/
4. 启动容器
docker run --net mynet -d -p 9000:3306 -vrollbackmysqldata:/var/mysql -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/usr/mysql/data -v /etc/localtime:/etc/localtime:ro -e MYSQL_ROOT_PASSWORD=lmk123456 --name mysql mysql:8.0
docker run -d -p 9000:3306 -vrollbackmysqldata:/var/mysql -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/usr/mysql/data -v /etc/localtime:/etc/localtime:ro -e MYSQL_ROOT_PASSWORD=lmk123456 --name mysql mysql:8.0
5. 修改mysql密码以及可访问主机
# 进入容器
docker exec -it mysql /bin/bash
# 链接mysql 密码就是启动时的密码 【MYSQL_ROOT_PASSWORD=lmk123456】
mysql -uroot -p
# 使用mysql库
use mysql
# 修改访问主机以及密码等,并设置为所有主机可访问
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'lmk123456';
# 刷新
flush privileges;
6. 运行成功截图
四、安装Redis
1. 拉取Redis镜像
# 拉取镜像
docker pull redis
2. 启动redis
# 创建文件夹
mkdir -p /home/redis/data //-p 表示递归创建 如果没有就创建
mkdir -p /home/redis/conf
vim /home/redis/conf/redis.conf //创建redis.conf 配置文件 文件内容如下
#bind 127.0.0.1 #允许远程连接
protected-mode no
appendonly yes #持久化
requirepass #密码
docker run --network mynet --ip 172.18.0.4 -d -p 6379:6379 --name redis redis
# 启动命令
docker run -d -p 9001:6379 -v /home/redis/data:/data -v /home/redis/conf/redis.conf:/etc/redis/redis.conf --name redis redis
# 容器内测试
执行docker exec -it my_redis redis-cli 命令,进入终端
3. 成功截图
IDEA 使用Docker打包教程
一、配置Docker连接
二、项目配置
三、注意!!!
拓展篇Nginx 做负载均衡
一、在nginx.conf中添加http内容
#定义一个负载均衡器名字叫serviceApi
upstream serviceApi {
#后端的服务器
server 42.192.195.59:9002;
server 42.192.195.59:9003;
server 42.192.195.59:9004;
}
二、在添加自己的server文件信息
# 其中 proxy_pass http://serviceApi
# serviceApi 对应的就是http中维护的 serviceApi
server {
#监听80端口
listen 80;
#域名服务,如果需要使用域名访问,则需要修改hosts文件
server_name 42.192.195.59;
location / {
#调用负载均衡器
proxy_pass http://serviceApi;
}
}
三、测试Nginx负载均衡是否生效
1. 编写后台测试接口
/**
* 测试 Nginx 负载均衡设置
*/
// localAddr 就是服务器的本地ip
@GetMapping("/nginx")
private AjaxResult Nginx(HttpServletRequest request) {
String localAddr = request.getLocalAddr();
String localName = request.getLocalName();
int port = request.getServerPort();
String str = "addr: " + localAddr + " ---- " + "localName: " + localName + " ----- " + "serverPort: " + this.serverPort + " port: "+port;
return AjaxResult.success(str);
}
// 启动运用
docker run -d -p 9002:8088 -v /etc/localtime:/etc/localtime:ro -v /home/uploadPath:/home/uploadPath:rw --name moddiary moddiary:1.0
2. 启动三个运用
3. 运行结果
拓展:Nginx做SSL证书绑定
一、下载免费的Nginx SSL证书
二、将Nginx下的证书放到服务器上
三、编写ssl.conf文件
server {
listen 443 ssl http2;
server_name www.e-eq.net;
ssl_certificate home/nginx/ssl/1_www.e-eq.net_bundle.crt;
ssl_certificate_key home/nginx/ssl/2_www.e-eq.net.key;
ssl_session_cache shared:SSL:50m;
ssl_session_timeout 4h;
ssl_protocols TLSv1.3 TLSv1.2 TLSv1.1;
ssl_prefer_server_ciphers on;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
ssl_stapling on;
ssl_stapling_verify on;
ssl_buffer_size 4k;
location /api/ {
proxy_pass http://serviceApi;
}
}