Linux服务器搭建项目环境(云服务器和自己的本地Linux服务器都适用)

目录

 一、安装docker

1.1.卸载(可选)

1.2.安装docker

1.3启动docker

1.4.配置镜像加速

二、在Docker中安装MySQL 8

2.1:拉取MySQL 8的镜像文件

2.2:使用Docker创建MySQL容器,创建MySQL数据存储目录并挂载到容器中

三、安装nacos

3.1:拉取Nacos 镜像文件

3.2:使用Docker创建Nacos容器,在宿主机上创建Nacos数据存储目录并挂载到容器中

3.3在mysql中创建nacos所需的库和表

3.4再次启动nacos

3.5修改配置文件

3.6进入容器看配置文件是否修改成功

3.7访问

四、安装nginx

4.1 拉取nginx镜像

五、安装redis

六、总结

七、注意



 一、安装docker

1.1.卸载(可选)

如果之前安装过旧版本的Docker,可以使用下面命令卸载:

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine \
                  docker-ce

1.2.安装docker

首先需要大家虚拟机联网,安装yum工具

yum install -y yum-utils \
           device-mapper-persistent-data \
           lvm2 --skip-broken

然后更新本地镜像源:

# 设置docker镜像源
yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

yum makecache fast

然后输入命令:

yum install -y docker-ce

docker-ce为社区免费版本。稍等片刻,docker即可安装成功。

1.3启动docker

systemctl starsyt docker

Docker应用需要用到各种端口,逐一去修改防火墙设置。非常麻烦,因此建议大家直接关闭防火墙!

启动docker前,一定要关闭防火墙后!!

关闭防火墙

systemctl stop firewalld

1.4.配置镜像加速

docker官方镜像仓库网速较差,我们需要设置国内镜像服务:

https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

参考阿里云的镜像加速文档:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://80xu3kw8.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

二、在Docker中安装MySQL 8

2.1:拉取MySQL 8的镜像文件

docker pull mysql:8

2.2:使用Docker创建MySQL容器,创建MySQL数据存储目录并挂载到容器中

创建/tmp/data/mysql目录

mkdir -p /tmp/data/mysql

mysql数据挂载(手动创建目录)

docker run -p 3306:3306 --name ms -v /tmp/data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8

说明:

参数`-p 3306:3306`表示将Docker容器的3306端口映射到宿主机的3306端口。参数`--name mysql`表示给容器起个名字叫mysql,方便管理。

参数`-v /tmp/data/mysql:/var/lib/mysql`表示将宿主机的/tmp/data/mysql目录挂载到容器的/var/lib/mysql目录上,这样可以实现数据持久化。

参数`-e MYSQL_ROOT_PASSWORD=root`表示设置MySQL的root用户的密码为123456。

步骤3:进入MySQL容器执行相关操作

成功连接数据库

Linux服务器搭建项目环境(云服务器和自己的本地Linux服务器都适用)_第1张图片

docker exec -it mysql bash

说明:进入容器后可以在容器内使用MySQL客户端来操作MySQL数据库。

mysql -u root -p回车

------

输入你的密码(我的密码是:root)

------

然后可以对数据库进行进行相关操作

三、安装nacos

3.1:拉取Nacos 镜像文件

docker pull nacos/nacos-server

3.2:使用Docker创建Nacos容器,在宿主机上创建Nacos数据存储目录并挂载到容器中

mkdir -p  /tmp/data/nacos/logs/                     #新建logs目录
mkdir -p /tmp/data/nacos/conf/						#新建conf目录

添加映射文件

先启动容器

docker run -p 8848:8848 --name nacos -d nacos/nacos-server

将文件复制到挂载目录方便修改

docker cp nacos:/home/nacos/logs/ /tmp/data/nacos/
docker cp nacos:/home/nacos/conf/ /tmp/data/nacos/

关闭容器

docker rm -f nacos

3.3在mysql中创建nacos所需的库和表

CREATE TABLE `config_info` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(255) DEFAULT NULL,
  `content` longtext NOT NULL COMMENT 'content',
  `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  `src_user` text COMMENT 'source user',
  `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
  `app_name` varchar(128) DEFAULT NULL,
  `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
  `c_desc` varchar(256) DEFAULT NULL,
  `c_use` varchar(64) DEFAULT NULL,
  `effect` varchar(64) DEFAULT NULL,
  `type` varchar(64) DEFAULT NULL,
  `c_schema` text,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_configinfo_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info';

/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_info_aggr   */
/******************************************/
CREATE TABLE `config_info_aggr` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(255) NOT NULL COMMENT 'group_id',
  `datum_id` varchar(255) NOT NULL COMMENT 'datum_id',
  `content` longtext NOT NULL COMMENT '内容',
  `gmt_modified` datetime NOT NULL COMMENT '修改时间',
  `app_name` varchar(128) DEFAULT NULL,
  `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_configinfoaggr_datagrouptenantdatum` (`data_id`,`group_id`,`tenant_id`,`datum_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='增加租户字段';


/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_info_beta   */
/******************************************/
CREATE TABLE `config_info_beta` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(128) NOT NULL COMMENT 'group_id',
  `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
  `content` longtext NOT NULL COMMENT 'content',
  `beta_ips` varchar(1024) DEFAULT NULL COMMENT 'betaIps',
  `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  `src_user` text COMMENT 'source user',
  `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
  `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_configinfobeta_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_beta';

/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_info_tag   */
/******************************************/
CREATE TABLE `config_info_tag` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(128) NOT NULL COMMENT 'group_id',
  `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
  `tag_id` varchar(128) NOT NULL COMMENT 'tag_id',
  `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
  `content` longtext NOT NULL COMMENT 'content',
  `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  `src_user` text COMMENT 'source user',
  `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_configinfotag_datagrouptenanttag` (`data_id`,`group_id`,`tenant_id`,`tag_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_tag';

/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_tags_relation   */
/******************************************/
CREATE TABLE `config_tags_relation` (
  `id` bigint(20) NOT NULL COMMENT 'id',
  `tag_name` varchar(128) NOT NULL COMMENT 'tag_name',
  `tag_type` varchar(64) DEFAULT NULL COMMENT 'tag_type',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(128) NOT NULL COMMENT 'group_id',
  `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
  `nid` bigint(20) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`nid`),
  UNIQUE KEY `uk_configtagrelation_configidtag` (`id`,`tag_name`,`tag_type`),
  KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_tag_relation';

/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = group_capacity   */
/******************************************/
CREATE TABLE `group_capacity` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `group_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群',
  `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
  `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
  `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
  `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数,,0表示使用默认值',
  `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
  `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_group_id` (`group_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='集群、各Group容量信息表';

/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = his_config_info   */
/******************************************/
CREATE TABLE `his_config_info` (
  `id` bigint(64) unsigned NOT NULL,
  `nid` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `data_id` varchar(255) NOT NULL,
  `group_id` varchar(128) NOT NULL,
  `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
  `content` longtext NOT NULL,
  `md5` varchar(32) DEFAULT NULL,
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `src_user` text,
  `src_ip` varchar(50) DEFAULT NULL,
  `op_type` char(10) DEFAULT NULL,
  `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
  PRIMARY KEY (`nid`),
  KEY `idx_gmt_create` (`gmt_create`),
  KEY `idx_gmt_modified` (`gmt_modified`),
  KEY `idx_did` (`data_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='多租户改造';


/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = tenant_capacity   */
/******************************************/
CREATE TABLE `tenant_capacity` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `tenant_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Tenant ID',
  `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
  `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
  `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
  `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数',
  `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
  `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='租户容量信息表';


CREATE TABLE `tenant_info` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `kp` varchar(128) NOT NULL COMMENT 'kp',
  `tenant_id` varchar(128) default '' COMMENT 'tenant_id',
  `tenant_name` varchar(128) default '' COMMENT 'tenant_name',
  `tenant_desc` varchar(256) DEFAULT NULL COMMENT 'tenant_desc',
  `create_source` varchar(32) DEFAULT NULL COMMENT 'create_source',
  `gmt_create` bigint(20) NOT NULL COMMENT '创建时间',
  `gmt_modified` bigint(20) NOT NULL COMMENT '修改时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_tenant_info_kptenantid` (`kp`,`tenant_id`),
  KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='tenant_info';

CREATE TABLE `users` (
	`username` varchar(50) NOT NULL PRIMARY KEY,
	`password` varchar(500) NOT NULL,
	`enabled` boolean NOT NULL
);

CREATE TABLE `roles` (
	`username` varchar(50) NOT NULL,
	`role` varchar(50) NOT NULL,
	UNIQUE INDEX `idx_user_role` (`username` ASC, `role` ASC) USING BTREE
);

CREATE TABLE `permissions` (
    `role` varchar(50) NOT NULL,
    `resource` varchar(255) NOT NULL,
    `action` varchar(8) NOT NULL,
    UNIQUE INDEX `uk_role_permission` (`role`,`resource`,`action`) USING BTREE
);

INSERT INTO users (username, password, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE);

INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');

3.4再次启动nacos

docker run -d --name nacos -p 8848:8848 --privileged=true -e JVM_XMS=256m -e JVM_XMX=256m -e MODE=standalone -v /tmp/data/nacos/logs/:/home/nacos/logs -v /tmp/data/nacos/conf/:/home/nacos/conf/ --restart=always nacos/nacos-server
## 开放端口8848 3306(连接数据库)
firewall-cmd --zone=public --add-port=8848/tcp --permanent
firewall-cmd --zone=public --add-port=3306/tcp --permanent


## 重启防火墙
firewall-cmd --reload

## 查看所有开启的端口
firewall-cmd --zone=public --list-ports

参数讲解:
docker run -d : 启动容器 -d是后台启动并返回容器id的意思
–name nacos :为容器指定一个名称
-p 8848:8848 : 指定端口映射,注意这里的p不能大写,大写是随机端口映射
–privileged=true : 扩大容器内的权限,将容器内的权限变为root权限,不加的话就是普通用户权限,可能会出现cannot open directory
-e JVM_XMS=256m : 为jvm启动时分配的内存
-e JVM_XMX=256m : 为jvm运行过程中分配的最大内存
-e MODE=standalone : 使用 standalone模式(单机模式),MODE值有cluster(集群)模式/standalone模式两种,MODE必须大写
-v /tmp/data/nacos/logs/:/home/nacos/logs : 将容器的/home/nacos/logs目录挂载到 /tmp/data/nacos/logs
-v /tmp/data/nacos/conf/:/home/nacos/conf/: 将容器的/home/nacos/conf目录挂载到 /tmp/data/nacos/conf
–restart=always :重启docker时,自动启动相关容器

3.5修改配置文件

## 在宿主机中修改application.properties文件
vim /tmp/data/nacos/conf/application.properties
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://localhost:3306/nacos-config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=30000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=root

Linux服务器搭建项目环境(云服务器和自己的本地Linux服务器都适用)_第2张图片

3.6进入容器看配置文件是否修改成功

## 进入到nacos容器里
docker exec -it nacos /bin/bash

## 查看application.properties文件
cat /home/nacos/conf/application.properties

3.7访问

http://ip:8848/nacos/index.html

Linux服务器搭建项目环境(云服务器和自己的本地Linux服务器都适用)_第3张图片

访问成功

nacos集群部署博主就不演示了,感兴趣的小伙伴可以去看看其他博主的博客。

四、安装nginx

4.1 拉取nginx镜像

//1、拉取nginx镜像
docker pull nginx

//2、在宿主机上新建目录 与docker nginx镜像做文件映射
mkdir -p /tmp/data/nginx/{conf,html,log}

//3、启动nginx容器
docker run -d --name nginx nginx


//4、copy容器配置文件到宿主机上

docker cp nginx:/etc/nginx/conf.d /tmp/data/nginx/conf

docker cp nginx:/etc/nginx/nginx.conf /tmp/data/nginx/conf/nginx.conf

docker cp nginx:/usr/share/nginx/html/index.html /tmp/data/nginx/html/index.html


//5、停止nginx容器并删除该临时容器


docker rm -f nginx

//6、启动nginx容器
docker run -p 80:80 \
--name nginx \
-v /tmp/data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /tmp/data/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /tmp/data/nginx/log:/var/log/nginx \
-v /tmp/data/nginx/html:/usr/share/nginx/html \
-d nginx


访问虚拟机地址加80端口,成功访问到nginx页面

Linux服务器搭建项目环境(云服务器和自己的本地Linux服务器都适用)_第4张图片

五、安装redis

步骤1:拉取Redis 6.2.7的镜像文件

------

docker pull redis:6.2.7

------

步骤2:使用Docker创建Redis容器;在宿主机上创建Redis数据存储目录并挂载到容器中

------

mkdir /tmp/data/redis

------

docker run -p 6379:6379 --name redis -v /tmp/data/redis:/data -d redis:6.2.7 redis-server --appendonly yes



参数解析:

参数`-p 6379:6379`表示将Docker容器的6379端口映射到宿主机的6379端口。

参数`--name redis`表示给容器起个名字叫redis,方便管理。

参数`-v /data/redis:/data`表示将宿主机的/data/redis目录挂载到容器的/data目录上,这样可以实现数据持久化。

参数`redis-server --appendonly yes`表示开启Redis的数据持久化功能。

步骤3:设置Redis开机自启

------

docker update --restart=always redis

------

成功部署

六、总结:

       这里博主演示了docker部署mysql、nacos、redis、nginx和docker的下载安装。四种都是以非集群的方式部署的。这都是项目的环境的基本搭建,后续需要什么技术框架,就去部署搭建即可。其他程序在服务器上的安装与这四种类似,大家可以尝试着自己去部署一下。

七、注意:

云服务器的环境搭建和自己本地服务器搭建的是一样的

Linux服务器搭建项目环境(云服务器和自己的本地Linux服务器都适用)_第5张图片

将自己服务器的ip地址去FinalShell创建连接,自己的服务器防火墙要用到的端口记得打开。

记得每天都要开心,忘掉烦恼,让我们一起变得更强。

你可能感兴趣的:(服务器,linux,运维)