1、部署服务器
- 59.226.29.77(占用空间1T,带宽为百兆共享,32G内存,16核CPU):
- 运行负载均衡服务
- fastdfs,开放端口
22122
,23000
- nginx访问fastdfs文件
- 59.226.29.78(占用空间1T,带宽为百兆共享,32G内存,16核CPU):
- docker运行后端微服务
- nginx运行后台管理系统
- 59.226.29.79(占用空间1T,带宽为百兆共享,32G内存,16核CPU):
- docker运行后端微服务
- nginx运行后台管理系统
- 59.226.29.80(占用空间1T,带宽为百兆共享,16G内存,8核CPU):
- 运行主数据库:用户名
root
,端口3306
,密码123@cnic
- nginx运行前端商城
-
59.226.29.81(占用空间1T,带宽为百兆共享,16G内存,8核CPU):
- 运行备份数据库:用户名
root
,端口3306
,密码123@cnic
- nginx运行前端商城
- 运行备份数据库:用户名
-
59.226.29.82(占用空间1T,带宽为百兆共享,32G内存,8核CPU):
- apollo配置中心,包括:apollo-configservice、apollo-adminservice、apollo-portal ,端口
8080
,8070
,用户名apollo
,密码admin
- zookeeper,运行在docker中,端口
2181
- kafka,运行在docker中 ,端口
9092
- elasticSearch,运行在docker中, 端口
9200
,9300
- redis,运行在docker中 ,端口
6379
,密码123@cnic
6、安装FastDFS
- apollo配置中心,包括:apollo-configservice、apollo-adminservice、apollo-portal ,端口
2、环境安装
1、安装JDK
在6台机器上安装JDK
-
上传JDK压缩包
-
解压
tar xzvf jdk-8u211-linux-x64.tar.gz
-
配置环境变量
vim /etc/profile
末尾添加如下内容export JAVA_HOME=/data/jdk1.8.0_211 export PATH=$JAVA_HOME/bin:$PATH
-
加载配置文件
source /etc/profile
2、安装docker
在2、3、6机器上安装docker
-
安装方法:docker安装官方文档
-
#卸载旧版本 $ sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
-
#安装所需的软件包 $ sudo yum install -y yum-utils \ device-mapper-persistent-data \ lvm2
-
#使用以下命令来设置稳定的存储库 $ sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
-
#安装Docker sudo yum install docker-ce docker-ce-cli containerd.io
-
#启动Docker sudo systemctl start docker
-
#开启2375端口 vim /usr/lib/systemd/system/docker.service
-
#修改为下面的配置 ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
-
#重新加载docker配置 systemctl daemon-reload #重启docker systemctl restart docker
3、安装nginx
在第1、2、3、4、5、6机器安装nginx
第一台 nginx隐藏server信息和版本信息
1.隐藏版本信息
在nginx.conf里面添加
server_tokens off;
2.隐藏server信息
需要重新编译ngnix
进入解压出来的nginx 源码目录
vi src/http/ngx_http_header_filter_module.c
将
static u_char ngx_http_server_string[] = "Server: nginx" CRLF;
static u_char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF;
static u_char ngx_http_server_build_string[] = "Server: " NGINX_VER_BUILD CRLF;
改为
static u_char ngx_http_server_string[] = "Server: X-Web" CRLF;
static u_char ngx_http_server_full_string[] = "Server: X-Web" CRLF;
static u_char ngx_http_server_build_string[] = "Server: X-Web" CRLF;
重新编译nginx
再看header里面Server信息变成了自定义的名字 X-Web
-
上传压缩包
-
解压
tar xzvf nginx-1.15.12.tar.gz
-
安装必须使用make、cmake和gcc编译器
yum install -y make cmake gcc gcc-c++ yum -y install openssl openssl-devel yum -y install pcre-devel
-
安装
-
#配置configure --prefix 代表安装的路径,–with-http_ssl_module 安装ssl,–with-http_stub_status_module查看nginx的客户端状态
cd nginx-1.15.12 ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module make make install
#进入安装目录
cd /usr/loacal/nginx
#启动nginx
./usr/local/nginx/sbin/nginx
4、安装主从数据库
在4机器上安装主数据库,在5机器上安装备份数据库
-
两台机器分别安装mysql 59.226.29.80 、59.226.29.81
根据需要下载相应版本,查看官网地址
https://dev.mysql.com/downloads/mysql/5.7.html#downloads
wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz
tar -xzvf mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.25-linux-glibc2.12-x86_64 /usr/local/mysql
#useradd -r参数表示mysql用户是系统用户,不可用于登录系统 cd /usr/local groupadd mysql
useradd -r -g mysql mysql
-
安装数据库
#创建data目录 cd /usr/local/mysql mkdir data
-
将/usr/local/mysql的所有者及所属组改为mysql
chown -R mysql.mysql /usr/local/mysql
-
在/usr/local/mysql/support-files目录下创建my_default.cnf
[mysqld] sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES basedir = /usr/local/mysql datadir = /usr/local/mysql/data port = 3306 socket = /tmp/mysql.sock character-set-server=utf8 log-error = /usr/local/mysql/data/mysqld.log pid-file = /usr/local/mysql/data/mysqld.pid
-
拷贝,如果提示是否覆盖,y
cp /usr/local/mysql/support-files/my_default.cnf /etc/my.cnf
-
初始化 mysqld
cd /usr/local/mysql/ ./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
-
初始化报错
error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
- 安装后在初始化就OK了
yum install -y libaio
-
初始化完成之后,查看日志
vi /usr/local/mysql/data/mysqld.log
-
临时密码 a8?DQir=T+k+
2019-04-08T06:14:29.790033Z 1 [Note] A temporary password is generated for root@localhost: a8?DQir=T+k+
-
把启动脚本放到开机初始化目录
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
-
启动mysql服务
service mysql start
-
登录mysql,密码为初始密码
cd /usr/local/mysql ./bin/mysql -u root -p
-
修改密码
mysql> set password=password('123@cnic'); mysql> grant all privileges on *.* to root@'%' identified by '123@cnic'; mysql> flush privileges;
-
添加远程访问权限
mysql> use mysql; mysql> update user set host='%' where user = 'root'; mysql> flush privileges;
-
重启mysql生效
service mysql stop service mysql start
service mysql restart
-
防火墙开放3306端口
mysql主从同步
-
编辑主服务器mysql 配置文件
vim /etc/my.conf
server-id=1 #服务器id (主从必须不一样) log-bin=mysql-bin #打开日志(主机需要打开),这个mysql-bin也可以自定义,这里也可以加上路径作为主机的配置 binlog-do-db=zgkjy-v2 #要给从机同步的库 #binlog-do-db= binlog-ignore-db=mysql #不给从机同步的库(多个写多行) binlog-ignore-db=information_schema binlog-ignore-db=performance_schema binlog-ignore-db=sys expire_logs_days=7 #自动清理 7 天前的log文件,可根据需要修改
-
设置成功 重启Mysql 服务
service mysqld restart
-
创建备份账号与测试log_bin是否成功开启
#登录主数据库 show variables like '%log_bin%';
#设置备份账户信息 grant replication slave on *.* to 'backup'@'%' identified by '123456';
#查看快照 show master status\G
#关闭主数据库的读取锁定 unlock tables;
-
设置从服务器 Mysql 配置
vim /etc/my.conf
[mysqld] basedir=/usr/local/mysql #mysql路径 datadir=/data/mysqldata #mysql数据目录 socket=/tmp/mysql.sock user=mysql server_id=2 #MySQLid 后面2个从服务器需设置不同 port=3306 #加上以下参数可以避免更新不及时,SLAVE 重启后导致的主从复制出错。 read_only = 1 master_info_repository=TABLE relay_log_info_repository=TABLE #relay_log_recovery=1 #从机禁止写 #super_read_only=1 #从机禁止写
-
重启 从数据库
service mysqld restart
-
登录slave数据库,并做如下设置
mysql> stop slave; mysql> change master to -> master_host='192.168.1.201', #master的ip -> master_user='backup', #备份用户名 -> master_password='123456', #密码 -> master_log_file='mysql-bin.000003', #上面截图,且要与master的参数一致 -> master_log_pos=431; #上面截图,且要与master的参数一致
5、安装apollo配置中心
在第6台机器上安装apollo配置中心
-
apollo官网下载:apollo-configservice、apollo-adminservice、apollo-portal三个文件
-
上传到
/data/apollo
并解压 -
创建ApolloConfigDB, 导入sql/apolloconfigdb.sql ,也可导入已有的配置sql
-
创建ApolloPortalDB, 导入sql/apolloportaldb.sql,也可导入已有的配置sql
-
修改apollo-configservice数据库连接
cd /data/apollo/apollo-configservice/config vim application-github.properties #修改数据库连接并保存 spring.datasource.url = jdbc:mysql://59.226.29.80:3306/ApolloConfigDB?characterEncoding=utf8 spring.datasource.username = root spring.datasource.password = 123@cnic
-
修改apollo-adminservice数据库连接
cd /data/apollo/apollo-adminservice/config vim application-github.properties #修改数据库连接并保存 spring.datasource.url = jdbc:mysql://59.226.29.80:3306/ApolloConfigDB?characterEncoding=utf8 spring.datasource.username = root spring.datasource.password = 123@cnic
-
修改apollo-portal数据库连接
cd /data/apollo/apollo-portal/config vim application-github.properties #修改数据库连接并保存 spring.datasource.url = jdbc:mysql://59.226.29.80:3306/ApolloConfigDB?characterEncoding=utf8 spring.datasource.username = root spring.datasource.password = 123@cnic
-
修改apollo-portal的环境配置
cd /data/apollo/apollo-portal/config vim apollo-env.properties #修改环境并保存 dev.meta=http://59.226.29.82:8080
-
启动
sh /data/apollo/apollo-portal/apollo-configservice/scripts/startup.sh sh /data/apollo/apollo-portal/apollo-adminservice/scripts/startup.sh sh /data/apollo/apollo-portal/scripts/startup.sh
-
防火墙开放8080和8070端口
-
浏览器访问59.226.29.82:8070,用户名
apollo
,密码admin
6、安装FastDFS
-
FastDFS是C语言开发的应用。安装必须使用make、cmake和gcc编译器。
yum install -y make cmake gcc gcc-c++
-
安装FastDFS核心库
上传文件后解压缩
unzip libfastcommon-master.zip -d /data/fastdfs
libfastmon没有提供make命令安装文件。使用的是shell脚本执行编译和安装。shell脚本为make.sh
#编译 ./make.sh #安装 ./make.sh install
有固定的默认安装位置。在/usr/lib64和/usr/include/fastcommon两个目录中。
创建软连接:
#因为 FastDFS 主程序设置的 lib 目录是/usr/local/lib,所以需要创建软链接 ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so
-
FastDFS主程序安装
上传并解压缩
tar -zxf FastDFS_v5.08.tar.gz -C /data/fastdfs
编译安装
./make.sh ./make.sh install
安装后,FastDFS主程序所在位置:
/usr/bin - 可执行文件所在位置。 /etc/fdfs - 配置文件所在位置。 /usr/lib64 - 主程序代码所在位置 /usr/include/fastdfs - 包含的一些插件组所在位置
-
Tracker 服务配置启动
复制一份模板配置文件
cd /etc/fdfs cp tracker.conf.sample tracker.conf
打开 tracker.conf,修改 base_path 路径,base_path FastDFSTracker启动后使用的根目录,用来存放Tracker data和logs。
base_path=/home/yuqing/fastdfs -> base_path=/data/fastdfs/data/fastdfs-tracker
配置中的路径需要先创建好才能启动服务
mkdir -p /data/fastdfs/data/fastdfs-tracker
启动
/etc/init.d/fdfs_trackerd start
启动成功后,配置文件中base_path指向的目录中出现FastDFS服务相关数据目录(data目录、logs目录)
其它命令:
#查看状态 ps -ef | grep fdfs #停止服务 /etc/init.d/fdfs_trackerd stop #重启服务 /etc/init.d/fdfs_trackerd restart
-
Storage配置与启动
修改配置
mkdir -p /data/fastdfs/data/fastdfs-storage/base mkdir -p /data/fastdfs/data/fastdfs-storage/store cd /etc/fdfs cp storage.conf.sample storage.conf #修改文件 base_path=/home/yuqing/fastdfs -> /data/fastdfs/data/fastdfs-storage/base store_path0=/home/yuqing/fastdfs -> /data/fastdfs/data/fastdfs-storage/store tracker_server=192.168.150.11:22122 -> tracker_server=59.226.29.82:22122
启动服务
/etc/init.d/fdfs_storaged start
-
fastdfs-nginx-module模块安装
上传并解压
tar -zxf fastdfs-nginx-module_v1.16.tar.gz -C /data/fastdfs
修改配置
vim /data/fastdfs/fastdfs-nginx-module/src/config CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
编译安装Nginx
./configure --with-http_ssl_module --add-module=/data/fastdfs/fastdfs-nginx-module/src/ make && make install
拷贝配置文件
cp /data/fastdfs/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
修改配置文件 mod_fastdfs.conf
tracker_server=59.226.29.82:22122 url_have_group_name = true store_path0=/data/fastdfs/data/fastdfs-storage/store
复制FastDFS安装包中的两个配置文件(http.conf和mime.types)到/etc/fdfs目录中
cp /data/fastdfs/FastDFS/conf/http.conf /etc/fdfs/ cp /data/fastdfs/FastDFS/conf/mime.types /etc/fdfs/
创建网络访问存储服务的软连接
ln -s /data/fastdfs/data/fastdfs-storage/store /data/fastdfs/data/fastdfs-storage/store/data/M00
修改nginx配置文件
location ~ /group([0-9])/M00 {
ngx_fastdfs_module;
}
- 防火墙开放端口:22122
7、安装zookeeper、kafka
-
下载镜像
docker pull wurstmeister/zookeeper docker pull wurstmeister/kafka:2.11-0.11.0.3
-
启动镜像
#启动zookeeper docker run -d --name zookeeper --publish 2181:2181 --volume /etc/localtime:/etc/localtime wurstmeister/zookeeper #启动kafka docker run -d --name kafka --publish 9092:9092 \ --link zookeeper \ --env KAFKA_ZOOKEEPER_CONNECT=59.226.29.82:2181 \ --env KAFKA_ADVERTISED_HOST_NAME=59.226.29.82 \ --env KAFKA_ADVERTISED_PORT=9092 \ --volume /etc/localtime:/etc/localtime \ wurstmeister/kafka:2.11-0.11.0.3
-
防火墙开放端口:2181,9092
8、安装elasticSearch
docker run --name elasticsearch -d -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e "discovery.type=single-node" -p 9200:9200 -p 9300:9300 elasticsearch:6.5.4
防火墙开放端口:9200,9300
9、发布微服务
- 两台机器59.226.29.78 、59.226.29.79部署常用配置命令
FROM java:8
EXPOSE 8761
VOLUME /tmp
ADD /target/renren-register.jar /app.jar
RUN bash -c 'touch /app.jar'
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
ENTRYPOINT ["java","-Xmx500m","-jar","/app.jar"]
- 两台机器分别配置自己ip、除register其他服务都要配置
--add-host eureka:59.226.29.39
--add-host eureka:59.226.29.78
--add-host eureka:59.226.29.79
- 所有服务都需要配置一下
-v /opt/settings:/opt/settings
- pay付款服务需要多加配置
-v /opt/cfca:/opt/cfca
- gateway网关多加配置
-p 8080:8080
10、开放端口
firewall-cmd --zone=public --list-ports
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --reload
11、安装redis
docker run -d --name redis -p 6379:6379 -v redis:/data --requirepass "123@cnic" redis --appendonly yes