# 服务器环境配置

# 安装 docker

使用官方安装脚本自动安装

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

# Docker 安装 Mysql

直接安装时出现 no matching manifest for linux/arm64/v8 in the manifest list entries 错误

出现这个问题的原因是由于 这台服务器是阿里云的 arm 构架 其底层是 aarch64

提示非常清晰。既然是这样,除了自己做镜像外,肯定也有其他大神需要解决这件事。

可以直接使用命令拉取镜像

docker pull mysql/mysql-server:5.7.41

// 检查当前所下载的全部镜像
docker images
//Docker 创建 Mysql 容器
docker run --privileged=true --name mysql5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=XXX -d  -v /usr/local/docker/mysql/data:/var/lib/mysql -v /usr/local/docker/mysql/conf:/etc/mysql/-v/usr/local/docker/mysql/logs:/var/log/mysql ibex/debian-mysql-server-5.7

image-20230510165415523

docker 启动 mysql 报错 Can't read dir of /etc/mysql/conf.d/

原来:

docker run --privileged=true --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d  -v /usr/local/docker/mysql/data:/var/lib/mysql -v /usr/local/docker/mysql/conf:/etc/mysql -v /usr/local/docker/mysql/logs:/var/log/mysql mysql

修改:

docker run --privileged=true --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d  -v /usr/local/docker/mysql/data:/var/lib/mysql -v /usr/local/docker/mysql/conf:/etc/mysql/conf.d -v /usr/local/docker/mysql/logs:/var/log/mysql mysql
命令描述
docker run创建一个新的容器,同时运行这个容器
–name mysql启动容器的名字
-d后台运行
-p 3306:3306将容器的 3306 (后面那个) 端口映射到主机的 3306 (前面那个) 端口
–restart unless-stopped容器重启策略
-v /mydata/mysql/log:/var/log/mysql将日志文件夹挂载到主机
-v /mydata/mysql/data:/var/lib/mysql将 mysql 储存文件夹挂载到主机
-v /mydata/mysql/conf:/etc/mysql将配置文件夹挂载到主机
-e MYSQL_ROOT_PASSWORD=root设置 root 用户的密码
mysql:5.7启动哪个版本的 mysql (本地镜像的版本)

之后需要进入 mysql 命令行进行操作

//进入容器中的mysql
docker exec -it mysql bash

本地项目无法连接阿里云 mysql 解决办法 SQLException: null, message from server: "Host 'XXX' is not allowed to connect

在进入后输入

mysql -uroot -p
mysql-> show databases;
mysql-> use mysql
mysql-> select user,host from user;
mysql-> update user set host ='%' where user = 'root';
mysql-> flush privileges;

image-20230510133922080

# Docker 安装 Redis

拉取镜像

sudo docker pull redis

创建本地与 docker 映射的目录,即本地存放的位置

sudo mkdir /data/redis
sudo mkdir /data/redis/data

创建容器

docker run --restart=always --log-opt max-size=100m --log-opt max-file=2 -p 6379:6379 --name redis -v /usr/local/docker/redis/redis.conf:/etc/redis/redis.conf -v /usr/local/docker/redis/data:/data -d redis redis /etc/redis/redis.conf  --appendonly yes

-p 6379:6379 : 把容器内的 6379 端口映射到宿主机 6379 端口

-v /data/redis/redis.conf:/etc/redis/redis.conf :把宿主机配置好的 redis.conf 放到容器内的这个位置中

-v /data/redis/data:/data :把 redis 持久化的数据在宿主机内显示,做数据备份

redis-server /etc/redis/redis.conf :这个是关键配置,让 redis 不是无配置启动,而是按照这个 redis.conf 的配置启动

–appendonly yes :redis 启动后数据持久化

# docker 安装 nginx

拉取镜像

docker pull nginx

创建挂载目录

mkdir -p /home/nginx/conf
mkdir -p /home/nginx/log
mkdir -p /home/nginx/html

出现问题

mounting "/root/nginx.conf" to rootfs at "/etc/nginx/nginx.conf" caused: mount through procfd: not a directory: unknown: Are you trying to mount a directory onto a file (or vice-versa)?

将 “/root/nginx.conf” 挂载到 “/etc/nginx/nginx.conf” 的 rootfs 导致:通过 procfd 挂载:不是目录:未知:您是否试图将目录挂载到文件上 (反之亦然)

# 根因

  • 不支持直接挂载文件,只能挂载文件夹
  • 想要挂载文件,必须宿主机也要有对应的同名文件

# 解决方法

  • 可以先不挂载 nginx.conf
  • 先从容器中复制 nginx.conf 出来
  • 然后可以自行修改 nginx.conf,自定义配置项
  • 创建正式使用的 nginx 容器

当然也可以去网上随便找个 nginx.conf,最重要的是宿主机要有个 nginx.conf

docker run  --name nginx -d -p 80:80 -v /usr/local/docker/nginx/html:/usr/share/nginx/html -v /usr/local/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /usr/local/docker/nginx/conf.d:/etc/nginx/conf.d  -v /usr/local/docker/nginx/logs:/var/log/nginx nginx

# 安装 java

下载 JDK

https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

image-20230511092738729

在浏览器中输入上面官网链接之后,会出现上面的图片,如上图红框里圈出来的,这里我们选择 jdk-8u271-linux-x64.rpmjdk-8u271-linux-x64.tar.gz 这两个包分别为大家进行安装演示。

rpm 包的安装方法

chmod 755 /usr/java/jdk-8u271-linux-x64.rpm
这个文件默认权限是 644,属主、属组、其他都没有执行权限,因为需要执行安装的动作,所以应当给到执行权限
rpm -ivh /usr/java/jdk-8u271-linux-x64.rpm
拿到权限之后,通过 rpm 进行安装的操作

rpm 包的安装只需要一条命令就可以搞定。但是在安装之后,需要先给到这个文件相应的权限,没有权限后续的操作会出现报错哦。

rpm 包的安装差不多算是结束了,因为接下来的动作就跟上面的是重复的,也就是下来需要打开 profile 文件,然后进行环境变量的配置,并且 source 使其生效。再接着回来检查 Java 版本是否可以正常输出即可。

打开 profile 文件

vim /etc/profile

打开这个文件之后,按 i 进入到编辑模式,然后找到 export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTRO 这句话,之后另起一行,根据刚刚下载的的 JDK 版本添加以下内容:

export JAVA_HOME=/usr/java/jdk1.8.0_271
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH

然后按 Esc,输入 :wq,保存修改并退出。

重新读取环境变量

执行到这里,我么已经配置了 Java 的环境变量,那么现在需要做的就是让它生效,这里我们不必重启机器让其生效,通过 source 命令就可以。

source /etc/profile

之后,刚刚配置的环境变量便会生效,原理就是重新读取以下 profile 配置文件中的内容。

上面已经提到如何确认 JDK 是否成功安装,只需要通过查看版本即可看到。那么同样的,这里依旧采用同样的方法来验证 JDK 的安装情况。

java -version
java version "1.8.0_271"
Java(TM) SE Runtime Environment (build 1.8.0_271-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.271-b13, mixed mode)

解压安装的方法同理

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

Davaded 微信支付

微信支付

Davaded 支付宝

支付宝

Davaded 贝宝

贝宝