| New file |
| | |
| | | ## 开发环境安装教程 |
| | | |
| | | #### 安装maven |
| | | |
| | | 这里略过,请自行百度,maven的settings.xml 中的中央仓库地址建议修改为国内仓库地址,如阿里云的,这样有利于项目编译和打包速度 |
| | | |
| | | ``` |
| | | <mirrors> |
| | | <mirror> |
| | | <id>alimaven</id> |
| | | <name>aliyun maven</name> |
| | | <url>http://maven.aliyun.com/nexus/content/groups/public/</url> |
| | | <mirrorOf>central</mirrorOf> |
| | | </mirror> |
| | | |
| | | </mirrors> |
| | | ``` |
| | | |
| | | #### 安装git |
| | | |
| | | 这里略过,请自行百度 |
| | | |
| | | #### 安装 idea 开发工具 |
| | | |
| | | 社区版和收费版都可以, 百度自行下载安装 |
| | | |
| | | #### 下载代码 |
| | | |
| | | 选择项目保存文件夹如 C:\Users\Administrator\Documents\project\hc 目录下,执行 |
| | | |
| | | ``` |
| | | git clone https://github.com/java110/MicroCommunity.git |
| | | |
| | | ``` |
| | | |
| | | 或者 备份版本代码,主要是下载速度比较快 |
| | | |
| | | ``` |
| | | git clone https://gitee.com/wuxw7/MicroCommunity.git |
| | | |
| | | ``` |
| | | |
| | | #### 编译代码 |
| | | |
| | | 进入MicroCommunity目录下执行命令 |
| | | |
| | | ``` |
| | | mvn clean install |
| | | |
| | | ``` |
| | | |
| | | 和 |
| | | |
| | | ``` |
| | | mvn clean package |
| | | |
| | | ``` |
| | | |
| | | #### idea 打开代码 |
| | | |
| | | 用maven的方式打开项目,在idea的设置中修改第一步安装的maven地址和settings.xml地址,点击OK,然后在idea的右上侧点击Maven选项, |
| | | 点击Reimport All Maven Projects,重新导入maven依赖jar包 |
| | | |
| | | #### 安装mysql |
| | | |
| | | 推荐安装 5.6 版本mysql ,安装过程请自行百度,将 docs\db文件下的 MicroCommunity.sql 文件导入到mysql中,有可能这个sql不是最新的, |
| | | 你也可以加入群827669685,群文件获取最新的sql文件 |
| | | |
| | | #### 安装kafka |
| | | |
| | | 请自行百度安装 |
| | | |
| | | #### 安装 zookeeper |
| | | |
| | | 请自行百度安装 |
| | | |
| | | #### 安装Redis |
| | | |
| | | 请自行百度安装 |
| | | |
| | | #### 修改hosts |
| | | |
| | | kafka zookeeper Redis mysql 开源中间件 则将对应域名改为对应IP |
| | | |
| | | ``` |
| | | 这里写mysql的IP dev.db.java110.com |
| | | 这里写zookeeper的IP dev.zk.java110.com |
| | | 这里写kafka的IP dev.kafka.java110.com |
| | | 这里写redis的IP dev.redis.java110.com |
| | | 127.0.0.1 api.java110.com |
| | | 127.0.0.1 dev.java110.com |
| | | |
| | | ``` |
| | | |
| | | #### 启动相应服务 |
| | | |
| | | 需要启动的服务有 service-eureka、service-api、service-order、service-community、 |
| | | service-store、service-user、service-front、service-fee、service-common和service-job |
| | | |
| | | 找到服务下 src目录下 main/java/com/java110/您的服务名/XXApplicationStart.java 类打开 点击运行main方法就可以启动 |
| | | |
| | | 注意:由于service-order 启动需要刷缓存所以比起其他服务 需要传 -Dcache 参数才可以, |
| | | 具体参考地址 https://blog.csdn.net/u013713294/article/details/53020293 |
| | | |
| | | |
| | | ## 生产环境安装教程 |
| | | |
| | | 链接:https://pan.baidu.com/s/1sIPrxnwipF6ey_8k4rncWA 提取码:2e47 获取安装脚本 |
| | | |
| | | 如果下载不下来,请加群827669685在群文件中【HC系统部署文档】中获取hcAutoInstall.tar 自动部署shell脚本部署 |
| | | |
| | | tar -xvf hcAutoInstall.tar |
| | | |
| | | 修改env.sh 中的相应IP和密码 |
| | | |
| | | sh install.sh |
| | | |
| | | |
| | | ## 网友抒写安装部署(前后端分离) |
| | | |
| | | ### 一、 部署说明 |
| | | |
| | | 1、 软硬件配置 |
| | | |
| | | 硬件:云服务器最低配置4核16G |
| | | |
| | | 软件:需要安装 mysql + kafka + zookeeper + redis,docker可选 |
| | | |
| | | 开源代码说明: |
| | | |
| | | HC小区后端代码 |
| | | |
| | | https://gitee.com/wuxw7/MicroCommunity |
| | | |
| | | HC小区前段代码 |
| | | |
| | | https://gitee.com/java110/MicrCommunityWeb |
| | | |
| | | HC智慧家庭(业主版) |
| | | |
| | | https://gitee.com/java110/WechatOwnerService |
| | | |
| | | HC掌上物业(物业版) |
| | | |
| | | https://gitee.com/java110/PropertyApp |
| | | |
| | | 分支说明(branch): |
| | | |
| | | 分支管理说明,master 为前后端未分离代码,back 为前后端分离后端代码 |
| | | |
| | | |
| | | 2、 新建账号 |
| | | |
| | | 添加hc、 mysql、 redis、 zk 、kafka 用户 |
| | | |
| | | # 应用账户,安装docker,运行jar包 |
| | | sudo adduser hc |
| | | |
| | | # 数据库 |
| | | sudo adduser mysql |
| | | |
| | | sudo adduser redis |
| | | sudo adduser zk |
| | | sudo adduser kafka |
| | | |
| | | 修改密码 |
| | | |
| | | passwd hc |
| | | |
| | | 密码应符合大小写英文字母+特殊符号+数字,最短8位较好 |
| | | |
| | | Changing password for user hc. |
| | | New password: |
| | | |
| | | 如 Yao@5937。 |
| | | |
| | | 3、接下来赋予sudo权限,输入命令 |
| | | |
| | | sudo visudo |
| | | |
| | | 此命令意思是vim /etc/sudoers,但是会有sudo的校验,所以推荐上面的用法。 |
| | | |
| | | 在文件中,找到下面这段,在root下添加上面添加的5个用户 |
| | | |
| | | ## Allow root to run any commands anywhere |
| | | root ALL=(ALL) ALL |
| | | |
| | | 添加完后,如下 |
| | | |
| | | ## Allow root to run any commands anywhere |
| | | root ALL=(ALL) ALL |
| | | hc ALL=(ALL) ALL |
| | | mysql ALL=(ALL) ALL |
| | | redis ALL=(ALL) ALL |
| | | zk ALL=(ALL) ALL |
| | | kafka ALL=(ALL) ALL |
| | | |
| | | :wq 保存退出。 |
| | | |
| | | ### 二、 安装docker |
| | | |
| | | 1、切换hc用户,登录服务器 |
| | | |
| | | 2、安装docker |
| | | |
| | | sudo yum install docker -y |
| | | |
| | | 查看docker版本 |
| | | |
| | | docker version |
| | | |
| | | > 疑问: |
| | | > |
| | | > 看docker的安装文章都是用yum install docker-ce 安装的,是因为ce是免费版。 |
| | | 但是当前时间2020/03/19,这个命令已经无法安装。 |
| | | > |
| | | > 那用 yum install docker -y 命令是安装的 CE 还是 EE 版本? |
| | | |
| | | 我的版本 |
| | | |
| | | [root@hostone /]# docker version |
| | | Client: |
| | | Version: 1.13.1 |
| | | API version: 1.26 |
| | | Package version: |
| | | Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? |
| | | |
| | | 有句奇怪的话,问你docker咋没运行?别急,启动下 |
| | | |
| | | sudo systemctl start docker #启动docker |
| | | sudo systemctl enable docker #开机启动docker |
| | | sudo systemctl status docker #查看docker状态 |
| | | |
| | | 再用docker version 看下 |
| | | |
| | | [root@hostone /]# docker version |
| | | Client: |
| | | Version: 1.13.1 |
| | | API version: 1.26 |
| | | Package version: docker-1.13.1-109.gitcccb291.el7.centos.x86_64 |
| | | Go version: go1.10.3 |
| | | Git commit: cccb291/1.13.1 |
| | | Built: Tue Mar 3 17:21:24 2020 |
| | | OS/Arch: linux/amd64 |
| | | |
| | | Server: |
| | | Version: 1.13.1 |
| | | API version: 1.26 (minimum version 1.12) |
| | | Package version: docker-1.13.1-109.gitcccb291.el7.centos.x86_64 |
| | | Go version: go1.10.3 |
| | | Git commit: cccb291/1.13.1 |
| | | Built: Tue Mar 3 17:21:24 2020 |
| | | OS/Arch: linux/amd64 |
| | | Experimental: false |
| | | |
| | | ok,很简单地安装完成了。 |
| | | |
| | | |
| | | 最后,创建docker用户组,赋权给hc用户 |
| | | |
| | | sudo groupadd docker |
| | | |
| | | sudo usermod -aG docker hc |
| | | |
| | | 切换到hc账户,查看docker状态 |
| | | |
| | | sudo docker ps |
| | | |
| | | 然后需要安装一个docker-comose,来启动,停止和重启应用 |
| | | |
| | | sudo yum install docker-compose |
| | | |
| | | |
| | | docker启动、停止命令 |
| | | |
| | | # 启动 |
| | | sudo systemctl start docker |
| | | |
| | | # 守护进程重启 |
| | | sudo systemctl daemon-reload |
| | | |
| | | # 重启docker服务 |
| | | sudo systemctl restart docker |
| | | |
| | | # 重启docker服务 |
| | | sudo service docker restart |
| | | |
| | | # 关闭docker |
| | | sudo systemctl stop docker |
| | | |
| | | |
| | | ### 三、安装mysql |
| | | |
| | | 1、新开个mysql连接窗口,切换到mysql 用户。 |
| | | |
| | | 2、下载安装mysql |
| | | |
| | | |
| | | # 下载5.7 安装包 |
| | | wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm |
| | | |
| | | # 配置安装依赖 |
| | | sudo yum localinstall -y mysql57-community-release-el7-8.noarch.rpm |
| | | |
| | | # 安装数据库 |
| | | sudo yum install -y mysql-community-server |
| | | |
| | | # 数据库启动 |
| | | sudo systemctl start mysqld |
| | | |
| | | # 查看数据库状态 |
| | | systemctl status mysqld |
| | | |
| | | # 数据库启动 |
| | | sudo systemctl enable mysqld |
| | | |
| | | 3、安装启动完成,查看密码 |
| | | |
| | | # 密码在mysql日志中 |
| | | grep 'pass' /var/log/mysqld.log |
| | | |
| | | [mysql@iZ2zebthf35ejlps5v87ksZ ~]$ grep 'pass' /var/log/mysqld.log |
| | | 2020-03-14T12:28:57.051218Z 1 [Note] A temporary password is generated for root@localhost: <z?Shbek>8Gd |
| | | |
| | | <z?Shbek>8Gd 就是我的初始密码了。 |
| | | |
| | | 4、连接mysql |
| | | |
| | | # 连接mysql, 默认端口3306 |
| | | mysql -u root -p |
| | | |
| | | 输入密码<z?Shbek>8Gd,进入mysql命令行,修改root密码 |
| | | |
| | | SET PASSWORD = PASSWORD('Db@369012'); |
| | | |
| | | mysql> SET PASSWORD = PASSWORD('Db@369012'); |
| | | Query OK, 0 rows affected, 1 warning (0.00 sec) |
| | | |
| | | 5、创建hc用户,赋权 |
| | | |
| | | create user 'TT'@'%' identified by 'TT@HCvvMM33'; |
| | | create user 'hc_community'@'%' identified by 'hc_community@HCvvMM33'; |
| | | flush privileges; |
| | | CREATE DATABASE `TT` ; |
| | | grant all privileges on `TT`.* to 'TT'@'%' ; |
| | | CREATE DATABASE `hc_community` ; |
| | | grant all privileges on `hc_community`.* to 'hc_community'@'%' ; |
| | | flush privileges; |
| | | |
| | | 6、启动配置 |
| | | |
| | | 如果是5.7版本的mysql,导入时可能报错,需要修改my.cnf |
| | | |
| | | sudo vim /etc/my.cnf |
| | | |
| | | 修改内容如下,在[mysqld]下添加 |
| | | |
| | | # 导入大SQL文件 |
| | | max_allowed_packet=900M |
| | | |
| | | # 解决5.6的SQL在5.7的执行错误 ERROR 1067 (42000) Invalid default value for 'end_time' |
| | | sql_mode = ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
| | | |
| | | |
| | | 修改完后,重启mysql |
| | | |
| | | sudo systemctl restart mysqld |
| | | |
| | | systemctl status mysqld |
| | | |
| | | 7、导入最新的sql文件 |
| | | |
| | | 连接TT用户,导入前后端分离版的SQL,文件名 |
| | | |
| | | > 分离版2020.3.18.sql |
| | | |
| | | 连接hc_community,导入SQL文件 |
| | | |
| | | > hc_community20200220.sql |
| | | |
| | | |
| | | |
| | | 四、安装java |
| | | |
| | | 1、切回hc用户登陆服务器 |
| | | |
| | | su - hc |
| | | |
| | | 2、上传java至/home/hc |
| | | |
| | | # 创建java文件夹 |
| | | sudo mkdir –p /usr/local/java |
| | | |
| | | # 解压至/usr/local/java |
| | | sudo tar zxvf jdk-8u131-linux-x64.tar.gz -C /usr/local/java |
| | | |
| | | 3、配置java环境 |
| | | |
| | | 打开系统配置文件 |
| | | |
| | | sudo vim /etc/profile |
| | | |
| | | 在文件最后添加内容如下: |
| | | |
| | | export JAVA_HOME=/usr/local/java/jdk1.8.0_131 |
| | | export JRE_HOME=$JAVA_HOME/jre |
| | | export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH |
| | | export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH |
| | | |
| | | 记得刷新变量环境 |
| | | |
| | | # 刷新变量环境 |
| | | source /etc/profile |
| | | |
| | | 查看是否生效 |
| | | |
| | | [hc@iZ2zebthf35ejlps5v87ksZ java]$ echo $JAVA_HOME |
| | | /usr/local/java/jdk1.8.0_131 |
| | | |
| | | 五、安装redis |
| | | |
| | | 1、切换为redis用户,上传源码包至/home/redis |
| | | |
| | | # 查看当前路径 |
| | | [redis@iZ2zebthf35ejlps5v87ksZ ~]$ pwd |
| | | /home/redis |
| | | |
| | | # 查看当前路径下文件 |
| | | [redis@iZ2zebthf35ejlps5v87ksZ ~]$ ll |
| | | total 1684 |
| | | -rw-rw-r-- 1 redis redis 1723533 Mar 14 21:03 redis-4.0.6.tar.gz |
| | | |
| | | 2、解压 |
| | | |
| | | tar zxvf redis-4.0.6.tar.gz |
| | | |
| | | 文件解压后,有个文件夹redis-4.0.6,如下: |
| | | |
| | | [redis@iZ2zebthf35ejlps5v87ksZ ~]$ ll |
| | | total 1688 |
| | | drwxrwxr-x 6 redis redis 4096 Dec 5 2017 redis-4.0.6 |
| | | -rw-rw-r-- 1 redis redis 1723533 Mar 14 21:03 redis-4.0.6.tar.gz |
| | | |
| | | |
| | | 3、编译安装 |
| | | |
| | | cd redis-4.0.6 |
| | | |
| | | sudo make prefix=/home/redis/redis-4.0.6 install |
| | | |
| | | 如果不用sudo,安装失败,信息如下 |
| | | |
| | | Hint: It's a good idea to run 'make test' ;) |
| | | |
| | | INSTALL install |
| | | install: cannot create regular file ‘/usr/local/bin/redis-server’: Permission denied |
| | | make[1]: *** [install] Error 1 |
| | | make[1]: Leaving directory `/home/redis/redis-4.0.6/src' |
| | | make: *** [install] Error 2 |
| | | |
| | | 成功安装 |
| | | |
| | | make[1]: Entering directory `/home/redis/redis-4.0.6/src' |
| | | CC Makefile.dep |
| | | make[1]: Leaving directory `/home/redis/redis-4.0.6/src' |
| | | make[1]: Entering directory `/home/redis/redis-4.0.6/src' |
| | | |
| | | Hint: It's a good idea to run 'make test' ;) |
| | | |
| | | INSTALL install |
| | | INSTALL install |
| | | INSTALL install |
| | | INSTALL install |
| | | INSTALL install |
| | | make[1]: Leaving directory `/home/redis/redis-4.0.6/src' |
| | | |
| | | 4、redis配置修改 |
| | | |
| | | 备份reids.conf |
| | | |
| | | cp redis.conf redis.conf_hc |
| | | |
| | | # 修改redis配置 |
| | | vim redis.conf |
| | | |
| | | 修改内容如下 |
| | | |
| | | # 任何机器都可以访问,生产环境需改成特点ip访问 |
| | | bind 0.0.0.0 |
| | | |
| | | # 密码 |
| | | requirepass hc8866 |
| | | |
| | | # 守护进程 |
| | | daemonize yes |
| | | |
| | | :wq 保存退出。 |
| | | |
| | | 5、启动redis |
| | | |
| | | ./src/redis-server ./redis.conf |
| | | |
| | | 启动信息如下 |
| | | |
| | | [redis@iZ2zebthf35ejlps5v87ksZ redis-4.0.6]$ ./src/redis-server ./redis.conf |
| | | 9490:C 14 Mar 22:45:12.384 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo |
| | | 9490:C 14 Mar 22:45:12.384 # Redis version=4.0.6, bits=64, commit=00000000, modified=0, pid=9490, just started |
| | | 9490:C 14 Mar 22:45:12.384 # Configuration loaded |
| | | |
| | | 6、客户端连接redis |
| | | |
| | | ./src/redis-cli -p 6379 -a hc8866 |
| | | |
| | | 连接成功内容如下 |
| | | |
| | | [redis@izbp117mtgmllet9ryobawz redis-4.0.6]$ ./src/redis-cli -p 6379 -a hc8866 |
| | | 127.0.0.1:6379> keys * |
| | | (empty list or set) |
| | | 127.0.0.1:6379> |
| | | |
| | | 推荐使用rdm等客户端工具查看redis数据。 |
| | | |
| | | 六、安装zookeeper |
| | | |
| | | 1、切换为zk用户,上传源码包至/home/zk |
| | | |
| | | 2、解压 |
| | | |
| | | tar zxvf zookeeper-3.4.6.tar.gz |
| | | |
| | | 3、进入zk目录 |
| | | |
| | | cd zookeeper-3.4.6 |
| | | |
| | | 4、准备启动conf |
| | | |
| | | cp ./conf/zoo_sample.cfg ./conf/zoo.cfg |
| | | |
| | | 5、启动zk |
| | | |
| | | ./bin/zkServer.sh start |
| | | |
| | | 启动信息如下 |
| | | |
| | | [zk@iZ2zebthf35ejlps5v87ksZ zookeeper-3.4.6]$ ./bin/zkServer.sh start |
| | | JMX enabled by default |
| | | Using config: /home/zk/zookeeper-3.4.6/bin/../conf/zoo.cfg |
| | | Starting zookeeper ... STARTED |
| | | |
| | | 七、部署项目 |
| | | |
| | | 1、切回应用账户hc,安装git |
| | | |
| | | sudo yum install git -y |
| | | |
| | | 2、安装maven |
| | | |
| | | sudo yum install maven -y |
| | | |
| | | 3、修改maven源为阿里源 |
| | | |
| | | sudo vim /usr/share/maven/conf/settings.xml |
| | | |
| | | 在mirrors标签下添加如下内容 |
| | | |
| | | <mirror> |
| | | <id>alimaven</id> |
| | | <name>aliyun maven</name> |
| | | <url>http://maven.aliyun.com/nexus/content/groups/public/</url> |
| | | <mirrorOf>central</mirrorOf> |
| | | </mirror> |
| | | |
| | | 4、下载代码 |
| | | |
| | | mkdir hcProject |
| | | |
| | | cd hcProject |
| | | |
| | | git clone https://gitee.com/wuxw7/MicroCommunity.git |
| | | |
| | | 5、编译代码 |
| | | |
| | | cd /home/hc/hcProject/MicroCommunity |
| | | |
| | | mvn clean install |
| | | |
| | | 6、修改redis配置 |
| | | |
| | | 打开hcConf项目下所有 application-dev.yml,修改redis账号密码 |
| | | |
| | | 端口没有修改则不用更换 |
| | | |
| | | 7、替换ip |
| | | |
| | | 打开所有docker-compose.yml,如hcConf\Api\docker\docker-compose.yml |
| | | |
| | | > 这里推荐在windows下用nodePad++的文件查找替换功能,在目录下批量替换 |
| | | |
| | | > 如果喜欢在Linux修改的话,可以用sed 批量替换 |
| | | |
| | | 将如下内容中的ip替换为对应的服务器ip |
| | | |
| | | extra_hosts: |
| | | - "dev.java110.com:192.168.100.29" |
| | | - "dev.db.java110.com:192.168.100.29" |
| | | - "dev.zk.java110.com:192.168.100.29" |
| | | - "dev.kafka.java110.com:192.168.100.29" |
| | | - "dev.redis.java110.com:192.168.100.29" |
| | | - "api.java110.com:192.168.100.29" |
| | | |
| | | 8、上传bin 和 hcConf 至目录/home/hc/hcProject 下 |
| | | |
| | | |
| | | |
| | | 八、后端docker服务启动 |
| | | |
| | | 1、下载修改后的yaoHcConf文件,解压后得到bin、hcConf目录,上传至hcProject |
| | | |
| | | 2、启动reset_all.sh |
| | | |
| | | 相比群里的原文件,增加了FrontService与eureka的服务。 |
| | | |
| | | > 吴老大说没必要每次都重启eureka服务,想想对于初次接触HC项目的小白们(比如我)来说,还是比价有难度的,所以把eureka加进去了,省事。 |
| | | |
| | | cd /home/hc/hcProject/bin |
| | | |
| | | chmod +x *.sh |
| | | |
| | | sudo ./reset_all.sh |
| | | |
| | | 3、docker 常用命令 |
| | | |
| | | 启动后查看服务是否启动成功 |
| | | |
| | | # 查看所有正在运行容器 |
| | | sudo docker ps |
| | | |
| | | # containerId 是容器的ID |
| | | sudo docker stop containerId |
| | | |
| | | # 查看所有容器 |
| | | sudo docker ps -a |
| | | |
| | | # 查看所有容器ID |
| | | sudo docker ps -a -q |
| | | |
| | | # stop停止所有容器 |
| | | sudo docker stop $(sudo docker ps -a -q) |
| | | sudo docker stop $(sudo docker ps -aq) |
| | | |
| | | # remove删除所有容器 |
| | | sudo docker rm $(sudo docker ps -a -q) |
| | | |
| | | # 删除所有镜像 |
| | | sudo docker rmi $(sudo docker images -q) |
| | | |
| | | # 进入某个容器查看 |
| | | sudo docker exec -i -t [containerId] /bin/bash |
| | | # 示例 |
| | | sudo docker exec -it [76ae97d878eb] /bin/bash |
| | | |
| | | |
| | | 4、异常处理 |
| | | |
| | | * 1) network 异常 |
| | | |
| | | 异常: |
| | | |
| | | > ERROR: Network java110-net declared as external, but could not be found. Please create the network manually using `docker network create java110-net` and try again. |
| | | |
| | | 解决方法: |
| | | |
| | | docker network create java110-net |
| | | |
| | | * 2)特殊字符问题 |
| | | |
| | | docker中容器未启动成功 |
| | | |
| | | CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES |
| | | 6632de00214f docker_frontserivce "/root/start_front..." 30 minutes ago Restarting (1) 2 minutes ago frontserivce-1 |
| | | |
| | | 使用docker logs 查看日志 |
| | | |
| | | sudo docker logs -f --tail=100 76ae97d878eb |
| | | |
| | | 报错如下 |
| | | |
| | | standard_init_linux.go:178: exec user process caused "no such file or directory" |
| | | |
| | | 先停止了这个服务,然后去服务下(/home/hc/hcProject/app/FrontService)看看是什么问题,怀疑是启动脚本问题 |
| | | |
| | | sudo docker-compose -f /home/hc/hcProject/app/FrontService/docker/docker-compose.yml down; |
| | | |
| | | 发现是frontserivce的docker下的onStart.sh、start_front.sh脚本中出现了^M字符,使用dos2unix工具转换下。 |
| | | |
| | | cd /home/hc/hcProject/app/FrontService/docker |
| | | |
| | | sudo yum install dos2unix |
| | | |
| | | sudo dos2unix onStart.sh |
| | | |
| | | sudo dos2unix ./bin/start_front.sh |
| | | |
| | | 启动这个服务 |
| | | |
| | | sudo docker-compose -f /home/hc/hcProject/app/FrontService/docker/docker-compose.yml up -d --build --force-recreate; |
| | | |
| | | 如果没有down掉服务,也可使用重启命令 |
| | | |
| | | sudo docker-compose -f /home/hc/hcProject/app/FrontService/docker/docker-compose.yml restart; |
| | | |
| | | 在使用restart的脚本重启后发现又出现报错了,突然想到是源头脚本出了问题,restart的脚本又copy了一次hcConf下文件。 |
| | | |
| | | 看了下果然如此,重新去除下特殊字符^M |
| | | |
| | | vi -b /home/hc/hcProject/hcConf/FrontService/docker/onStart.sh |
| | | |
| | | sudo dos2unix /home/hc/hcProject/hcConf/FrontService/docker/*.sh |
| | | |
| | | cd /home/hc/hcProject/bin |
| | | |
| | | sudo ./restart_all.sh |
| | | |
| | | |
| | | * 3) yml 格式问题 |
| | | |
| | | 启动之后又发现问题 |
| | | |
| | | 2020-03-19 18:29:24.945 ERROR 8 --- [ main] o.s.boot.SpringApplication : Application run failed |
| | | java.lang.IllegalStateException: Failed to load property source from location 'classpath:/application-dev.yml' |
| | | …… |
| | | could not find expected ':' in 'reader', line 15, column 1: |
| | | eureka: ^ |
| | | at org.yaml.snakeyaml.scanner.ScannerImpl.stalePossibleSimpleKeys(ScannerImpl.java:466) |
| | | |
| | | 明显提示第15行的yml文件报错,查看了下,报错原文如下 |
| | | |
| | | password:hc8866 |
| | | |
| | | 是因为password第冒号后没有空一格输入密码。 |
| | | |
| | | * 4) hosts问题 |
| | | |
| | | 命运多舛,又出了问题 |
| | | |
| | | DiscoveryClient_FRONT-SERVICE/172.19.0.3:8012: registering service... |
| | | |
| | | 这次的问题是因为docker-compose.yml, 因为新版的前后端分离版本升级第关系,群文件的hcConf里没有FrontService,我从MicroCommunity拷贝了一个过去,但是没有启用extra_hosts,还是用第net_works导致。原文件片段如下: |
| | | |
| | | version: '2' |
| | | services: |
| | | frontserivce: |
| | | container_name: frontserivce-1 |
| | | build: |
| | | context: . |
| | | dockerfile: Dockerfile |
| | | restart: always |
| | | ports: |
| | | - "8020:8020" |
| | | volumes: |
| | | - ../target/FrontService.jar:/root/target/FrontService.jar |
| | | networks: |
| | | - java110-net |
| | | # mem_limit: 1024m |
| | | # extra_hosts: |
| | | # - "dev.java110.com:192.168.1.18" |
| | | # - "dev.db.java110.com:192.168.1.18" |
| | | # - "dev.zk.java110.com:192.168.1.18" |
| | | # - "dev.kafka.java110.com:192.168.1.18" |
| | | # - "dev.redis.java110.com:192.168.1.18" |
| | | # - "api.java110.com:92.168.1.18" |
| | | networks: |
| | | java110-net: |
| | | external: true |
| | | |
| | | 修改后如下 |
| | | |
| | | version: '2' |
| | | services: |
| | | frontserivce: |
| | | container_name: frontserivce-1 |
| | | build: |
| | | context: . |
| | | dockerfile: Dockerfile |
| | | restart: always |
| | | ports: |
| | | - "8020:8020" |
| | | volumes: |
| | | - ../target/FrontService.jar:/root/target/FrontService.jar |
| | | |
| | | mem_limit: 1536m |
| | | extra_hosts: |
| | | - "dev.java110.com:47.96.141.41" |
| | | - "dev.db.java110.com:47.96.141.41" |
| | | - "dev.zk.java110.com:47.96.141.41" |
| | | - "dev.kafka.java110.com:47.96.141.41" |
| | | - "dev.redis.java110.com:47.96.141.41" |
| | | - "api.java110.com:47.96.141.41" |
| | | |
| | | 47.96.141.41为docker服务器宿主机地址。 |
| | | |
| | | * 5) docker启动脚本问题 |
| | | |
| | | 发现docker的8012端口启动了,但是其实真正的服务没有启动,log也没有报错,停留在 |
| | | |
| | | 2020-03-20 14:22:55.501 INFO 1317 --- [ost-startStop-1] c.netflix.config.DynamicPropertyFactory : DynamicPropertyFactory is initialized with configuration sources: com.netflix.config.ConcurrentCompositeConfiguration@616da524 |
| | | |
| | | 进入docker内部的bash看看 |
| | | |
| | | sudo docker exec -it frontserivce-1 /bin/bash |
| | | |
| | | 进入bash后,查看进程 |
| | | |
| | | ps -aux |
| | | |
| | | 发现并没有java -jar进程,在docker容器内手动启动下试试 |
| | | |
| | | java -jar -Dspring.profiles.active=dev -Xms512m -Xmx1024m target/FrontService.jar |
| | | |
| | | 竟然启动起来了,启动后内容如下 |
| | | |
| | | root@9018e70e1220:~# ps -aux |
| | | USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND |
| | | root 1 0.0 0.0 21108 1508 ? Ss 14:28 0:00 /bin/bash /root/start_front.sh dev |
| | | root 8 0.0 0.0 7456 632 ? S 14:28 0:00 tail -100f front.log |
| | | root 38 0.0 0.0 21324 2148 ? Ss 14:36 0:00 /bin/bash |
| | | root 66 9.4 4.5 4757012 733244 ? Sl+ 14:41 1:14 java -jar -Dspring.profiles.active=dev -Xms512m -Xmx1024m target/FrontService.jar |
| | | |
| | | |
| | | 估计还是启动脚本有问题,需要回头排查下。 |
| | | |
| | | 八、前端服务部署 |
| | | |
| | | 1、down下来前端项目 |
| | | |
| | | git clone https://gitee.com/java110/MicrCommunityWeb.git |
| | | |
| | | 2、安装nodeJs环境 |
| | | |
| | | 3、打开项目,修改app.js |
| | | |
| | | app.use('/callComponent',proxy('http://后端服务ip:8012',opts)); |
| | | |
| | | 修改ip端口为FrontService的服务端口 |
| | | |
| | | 4、启动 |
| | | |
| | | 与app.js统计目录下,输入命令编译启动 |
| | | |
| | | npm install |
| | | |
| | | npm start |
| | | |
| | | 打开ip:3000端口,查看前端页面 |
| | | |
| | | 端口可以修改,在项目的 bin/www 文件中 |
| | | |
| | | var port = normalizePort(process.env.PORT || '3000'); |
| | | |
| | | |
| | | ## 简单才是美网友贡献安装 |
| | | |
| | | #### 1. 安装 Java |
| | | |
| | | ``` |
| | | # cd /opt |
| | | # wget https://mirrors.huaweicloud.com/java/jdk/8u202-b08/jdk-8u202-linux-x64.tar.gz |
| | | # tar zxfv jdk-8u202-linux-x64.tar.gz |
| | | # mkdir –p /usr/local/java |
| | | # mv /opt/jdk1.8.0_202 /usr/local/java/1.8.0_202 |
| | | # vim /etc/profile |
| | | |
| | | export JAVA_HOME=/usr/local/java/1.8.0_202 |
| | | export JRE_HOME=$JAVA_HOME/jre |
| | | export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH |
| | | export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH |
| | | |
| | | # source /etc/profile |
| | | # java -version |
| | | java version "1.8.0_202" |
| | | Java(TM) SE Runtime Environment (build 1.8.0_202-b08) |
| | | Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode) |
| | | ``` |
| | | |
| | | #### 2. 安装 Maven |
| | | |
| | | ``` |
| | | # cd /opt |
| | | # wget https://mirror.bit.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz |
| | | # tar zxfv apache-maven-3.6.3-bin.tar.gz |
| | | # mkdir –p /usr/local/maven |
| | | # mv apache-maven-3.6.3 /usr/local/maven/3.6.3 |
| | | # vim /etc/profile |
| | | |
| | | export MAVEN_HOME=/usr/local/maven/3.6.3 |
| | | export PATH=$MAVEN_HOME/bin:$PATH |
| | | |
| | | # source /etc/profile |
| | | # mvn -v |
| | | Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f) |
| | | Maven home: /usr/local/maven/3.6.3 |
| | | Java version: 1.8.0_202, vendor: Oracle Corporation, runtime: /usr/local/java/1.8.0_202/jre |
| | | Default locale: en_US, platform encoding: UTF-8 |
| | | OS name: "linux", version: "3.10.0-1127.el7.x86_64", arch: "amd64", family: "unix" |
| | | ``` |
| | | |
| | | 配置镜像 |
| | | |
| | | ``` |
| | | # vim /usr/local/maven/3.6.3/conf/settings.xml |
| | | |
| | | <mirrors> |
| | | <mirror> |
| | | <id>nexus-aliyun</id> |
| | | <mirrorOf>central</mirrorOf> |
| | | <name>Nexus aliyun</name> |
| | | <url>http://maven.aliyun.com/nexus/content/groups/public</url> |
| | | </mirror> |
| | | </mirrors> |
| | | ``` |
| | | |
| | | #### 3. 安装 ZooKeeper |
| | | |
| | | ``` |
| | | # cd /opt |
| | | # wget https://downloads.apache.org/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz |
| | | # tar zxfv zookeeper-3.4.14.tar.gz |
| | | # mkdir -p /usr/local/zookeeper |
| | | # mv zookeeper-3.4.14 /usr/local/zookeeper/3.4.14 |
| | | ``` |
| | | |
| | | **注意**:3.5.x 依赖 Java 9 |
| | | |
| | | 添加用户和目录 |
| | | |
| | | ``` |
| | | # useradd -r -s /sbin/nologin zookeeper |
| | | # mkdir -p /data/zookeeper |
| | | # chown -R zookeeper:zookeeper /data/zookeeper |
| | | # mkdir -p /etc/zookeeper |
| | | # cp /usr/local/zookeeper/3.4.14/conf/zoo_sample.cfg /etc/zookeeper/zoo.cfg |
| | | ``` |
| | | |
| | | 修改 /etc/zookeeper/zoo.cfg |
| | | |
| | | ``` |
| | | # the directory where the snapshot is stored. |
| | | # do not use /tmp for storage, /tmp here is just |
| | | # example sakes. |
| | | dataDir=/data/zookeeper |
| | | ``` |
| | | |
| | | 配置环境变量 |
| | | |
| | | ``` |
| | | # echo 'export PATH=/usr/local/zookeeper/3.4.14/bin:$PATH' >> /etc/profile |
| | | # source /etc/profile |
| | | ``` |
| | | |
| | | 配置 systemd |
| | | |
| | | ``` |
| | | # vim /usr/lib/systemd/system/zookeeper.service |
| | | |
| | | [Unit] |
| | | Description=ZooKeeper Server |
| | | Documentation=https://zookeeper.apache.org/ |
| | | After=network.target |
| | | |
| | | [Service] |
| | | Type=forking |
| | | User=zookeeper |
| | | Group=zookeeper |
| | | Environment=JAVA_HOME=/usr/local/java/1.8.0_202 |
| | | Environment=ZOO_LOG_DIR=/data/zookeeper/logs |
| | | Environment=ZOO_LOG4J_PROP=INFO,CONSOLE |
| | | ExecStart=/usr/local/zookeeper/3.4.14/bin/zkServer.sh start /etc/zookeeper/zoo.cfg |
| | | ExecStop=/usr/local/zookeeper/3.4.14/bin/zkServer.sh stop /etc/zookeeper/zoo.cfg |
| | | KillMode=none |
| | | PIDFile=/data/zookeeper/zookeeper_server.pid |
| | | |
| | | [Install] |
| | | WantedBy=multi-user.target |
| | | ``` |
| | | |
| | | **注意**: Environment=JAVA_HOME=jdk-install-dir |
| | | |
| | | 启动服务器 |
| | | |
| | | ``` |
| | | # systemctl daemon-reload |
| | | # systemctl start zookeeper |
| | | # systemctl enable zookeeper |
| | | ``` |
| | | |
| | | #### 4. 安装 Redis |
| | | |
| | | ``` |
| | | # cd /opt |
| | | # wget http://download.redis.io/releases/redis-4.0.14.tar.gz |
| | | # tar xzf redis-4.0.14.tar.gz |
| | | # cd redis-4.0.14 |
| | | # make -j4 && make install |
| | | # ll /usr/local/bin/redis* |
| | | -rwxr-xr-x. 1 root root 2452112 May 2 21:40 /usr/local/bin/redis-benchmark |
| | | -rwxr-xr-x. 1 root root 5777688 May 2 21:40 /usr/local/bin/redis-check-aof |
| | | -rwxr-xr-x. 1 root root 5777688 May 2 21:40 /usr/local/bin/redis-check-rdb |
| | | -rwxr-xr-x. 1 root root 2618136 May 2 21:40 /usr/local/bin/redis-cli |
| | | lrwxrwxrwx. 1 root root 12 May 2 21:40 /usr/local/bin/redis-sentinel -> redis-server |
| | | -rwxr-xr-x. 1 root root 5777688 May 2 21:40 /usr/local/bin/redis-server |
| | | ``` |
| | | |
| | | 添加用户和目录 |
| | | |
| | | ``` |
| | | # useradd -r -s /sbin/nologin redis |
| | | # mkdir -p /data/redis |
| | | # chown -R redis:redis /data/redis |
| | | # mkdir -p /etc/redis |
| | | # cp redis.conf /etc/redis/ |
| | | ``` |
| | | |
| | | 修改 redis.conf |
| | | |
| | | ``` |
| | | # vim /etc/redis/redis.conf |
| | | |
| | | # If you run Redis from upstart or systemd, Redis can interact with your |
| | | # supervision tree. Options: |
| | | # supervised no - no supervision interaction |
| | | # supervised upstart - signal upstart by putting Redis into SIGSTOP mode |
| | | # supervised systemd - signal systemd by writing READY=1 to $NOTIFY_SOCKET |
| | | # supervised auto - detect upstart or systemd method based on |
| | | # UPSTART_JOB or NOTIFY_SOCKET environment variables |
| | | # Note: these supervision methods only signal "process is ready." |
| | | # They do not enable continuous liveness pings back to your supervisor. |
| | | supervised systemd |
| | | |
| | | # The working directory. |
| | | # |
| | | # The DB will be written inside this directory, with the filename specified |
| | | # above using the 'dbfilename' configuration directive. |
| | | # |
| | | # The Append Only File will also be created inside this directory. |
| | | # |
| | | # Note that you must specify a directory here, not a file name. |
| | | dir /data/redis |
| | | |
| | | # By default, if no "bind" configuration directive is specified, Redis listens |
| | | # for connections from all the network interfaces available on the server. |
| | | # It is possible to listen to just one or multiple selected interfaces using |
| | | # the "bind" configuration directive, followed by one or more IP addresses. |
| | | # |
| | | # Examples: |
| | | # |
| | | # bind 192.168.1.100 10.0.0.1 |
| | | # bind 127.0.0.1 ::1 |
| | | # |
| | | # ~~~ WARNING ~~~ If the computer running Redis is directly exposed to the |
| | | # internet, binding to all the interfaces is dangerous and will expose the |
| | | # instance to everybody on the internet. So by default we uncomment the |
| | | # following bind directive, that will force Redis to listen only into |
| | | # the IPv4 lookback interface address (this means Redis will be able to |
| | | # accept connections only from clients running into the same computer it |
| | | # is running). |
| | | # |
| | | # IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES |
| | | # JUST COMMENT THE FOLLOWING LINE. |
| | | # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| | | bind 127.0.0.1 # Optional. Such as: 0.0.0.0. |
| | | |
| | | # Require clients to issue AUTH <PASSWORD> before processing any other |
| | | # commands. This might be useful in environments in which you do not trust |
| | | # others with access to the host running redis-server. |
| | | # |
| | | # This should stay commented out for backward compatibility and because most |
| | | # people do not need auth (e.g. they run their own servers). |
| | | # |
| | | # Warning: since Redis is pretty fast an outside user can try up to |
| | | # 150k passwords per second against a good box. This means that you should |
| | | # use a very strong password otherwise it will be very easy to break. |
| | | # |
| | | # requirepass password # Optional. |
| | | ``` |
| | | |
| | | 配置 systemd |
| | | |
| | | ``` |
| | | # vim /usr/lib/systemd/system/redis.service |
| | | |
| | | [Unit] |
| | | Description=Redis Server |
| | | Documentation=https://redis.io/ |
| | | After=network.target |
| | | |
| | | [Service] |
| | | Type=simple |
| | | User=redis |
| | | Group=redis |
| | | ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf |
| | | ExecStop=/usr/local/bin/redis-cli shutdown |
| | | |
| | | [Install] |
| | | WantedBy=multi-user.target |
| | | ``` |
| | | |
| | | 启动服务器 |
| | | |
| | | ``` |
| | | # systemctl daemon-reload |
| | | # systemctl start redis |
| | | # systemctl enable redis |
| | | ``` |
| | | |
| | | #### 5. 安装 Docker |
| | | |
| | | ``` |
| | | # yum install -y yum-utils device-mapper-persistent-data lvm2 |
| | | # yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo |
| | | # yum install -y docker |
| | | # groupadd docker |
| | | # systemctl start docker |
| | | # systemctl enable docker |
| | | # docker run hello-world |
| | | ``` |
| | | |
| | | 安装 docker-compose |
| | | |
| | | ``` |
| | | # curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose |
| | | # chmod +x /usr/local/bin/docker-compose |
| | | # docker-compose --version |
| | | docker-compose version 1.25.5, build 8a1c60f6 |
| | | ``` |
| | | |
| | | #### 6. 安装 MySQL |
| | | |
| | | ``` |
| | | # cd /opt |
| | | # wget https://nchc.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz |
| | | # wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.30.tar.gz |
| | | # tar zxfv boost_1_59_0.tar.gz |
| | | # tar zxfv mysql-5.7.30.tar.gz |
| | | # yum install -y autoconf automake m4 libtool make cmake bison gcc openssl-devel ncurses-devel |
| | | # cmake \ |
| | | -DDOWNLOAD_BOOST=1 \ |
| | | -DWITH_BOOST=/opt/boost_1_59_0 \ |
| | | -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ |
| | | -DMYSQL_DATADIR=/data/mysql/data \ |
| | | -DDEFAULT_CHARSET=utf8 \ |
| | | -DDEFAULT_COLLATION=utf8_general_ci \ |
| | | -DEXTRA_CHARSETS=all |
| | | # make -j4 && make install |
| | | |
| | | ``` |
| | | |
| | | 添加用户和目录 |
| | | |
| | | ``` |
| | | # useradd -r -s /sbin/nologin mysql |
| | | # mkdir -p /data/mysql |
| | | # chown mysql:mysql /data/mysql |
| | | ``` |
| | | |
| | | 修改 my.cnf |
| | | |
| | | ``` |
| | | # vim /etc/my.cnf |
| | | |
| | | - 关闭自动注释 |
| | | :set fo-=r |
| | | - 关闭自动缩进 |
| | | :set noautoindent |
| | | - 粘贴下面内容 |
| | | |
| | | # ~ |
| | | # FROM: https://gist.github.com/fevangelou/fb72f36bbe333e059b66.js |
| | | # |
| | | # Optimized my.cnf configuration for MySQL/MariaSQL (on Ubuntu, CentOS etc. servers) |
| | | # |
| | | # by Fotis Evangelou, developer of Engintron (engintron.com) |
| | | # |
| | | # ~ Updated January 2020 ~ |
| | | # |
| | | # |
| | | # The settings provided below are a starting point for a 2GB - 4GB RAM server with 2-4 CPU cores. |
| | | # If you have different resources available you should adjust accordingly to save CPU, RAM & disk I/O usage. |
| | | # |
| | | # The settings marked with a specific comment or the word "UPD" (after the value) |
| | | # should be adjusted for your system by using database diagnostics tools like: |
| | | # |
| | | # https://github.com/major/MySQLTuner-perl |
| | | # or |
| | | # https://github.com/RootService/tuning-primer (supports MySQL up to v5.7) |
| | | # ~ |
| | | |
| | | [mysql] |
| | | port = 3306 |
| | | socket = /var/run/mysqld/mysqld.sock |
| | | |
| | | [mysqld] |
| | | # Required Settings |
| | | basedir = /usr/local/mysql |
| | | bind_address = 0.0.0.0 # Change to 127.0.0.0 to allow local connections only |
| | | datadir = /data/mysql |
| | | max_allowed_packet = 256M |
| | | max_connect_errors = 1000000 |
| | | pid_file = /var/run/mysqld/mysqld.pid |
| | | port = 3306 |
| | | skip_external_locking |
| | | skip_name_resolve |
| | | socket = /var/run/mysqld/mysqld.sock |
| | | |
| | | # Enable for b/c with databases created in older MySQL/MariaDB versions (e.g. when using null dates) |
| | | #sql_mode = ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES |
| | | |
| | | tmpdir = /tmp |
| | | user = mysql |
| | | |
| | | # InnoDB Settings |
| | | default_storage_engine = InnoDB |
| | | innodb_buffer_pool_instances = 2 # Use 1 instance per 1GB of InnoDB pool size |
| | | innodb_buffer_pool_size = 2G # Use up to 70-80% of RAM |
| | | innodb_file_per_table = 1 |
| | | innodb_flush_log_at_trx_commit = 0 |
| | | innodb_flush_method = O_DIRECT |
| | | innodb_log_buffer_size = 16M |
| | | innodb_log_file_size = 512M |
| | | innodb_stats_on_metadata = 0 |
| | | |
| | | #innodb_temp_data_file_path = ibtmp1:64M:autoextend:max:20G # Control the maximum size for the ibtmp1 file |
| | | #innodb_thread_concurrency = 4 # Optional: Set to the number of CPUs on your system (minus 1 or 2) to better |
| | | # contain CPU usage. E.g. if your system has 8 CPUs, try 6 or 7 and check |
| | | # the overall load produced by MySQL/MariaDB. |
| | | innodb_read_io_threads = 64 |
| | | innodb_write_io_threads = 64 |
| | | |
| | | # MyISAM Settings |
| | | query_cache_limit = 4M # UPD - Option supported by MariaDB & up to MySQL 5.7, remove this line on MySQL 8.x |
| | | query_cache_size = 64M # UPD - Option supported by MariaDB & up to MySQL 5.7, remove this line on MySQL 8.x |
| | | query_cache_type = 1 # Option supported by MariaDB & up to MySQL 5.7, remove this line on MySQL 8.x |
| | | |
| | | key_buffer_size = 32M # UPD |
| | | |
| | | low_priority_updates = 1 |
| | | concurrent_insert = 2 |
| | | |
| | | # Connection Settings |
| | | max_connections = 100 # UPD |
| | | |
| | | back_log = 512 |
| | | thread_cache_size = 100 |
| | | thread_stack = 192K |
| | | |
| | | interactive_timeout = 180 |
| | | wait_timeout = 180 |
| | | |
| | | # For MySQL 5.7+ only (disabled by default) |
| | | #max_execution_time = 30000 # Set a timeout limit for SELECT statements (value in milliseconds). |
| | | # This option may be useful to address aggressive crawling on large sites, |
| | | # but it can also cause issues (e.g. with backups). So use with extreme caution and test! |
| | | # More info at: https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_max_execution_time |
| | | |
| | | # For MariaDB 10.1.1+ only (disabled by default) |
| | | #max_statement_time = 30 # The equivalent of "max_execution_time" in MySQL 5.7+ (set above) |
| | | # The variable is of type double, thus you can use subsecond timeout. |
| | | # For example you can use value 0.01 for 10 milliseconds timeout. |
| | | # More info at: https://mariadb.com/kb/en/aborting-statements/ |
| | | |
| | | # Buffer Settings |
| | | join_buffer_size = 4M # UPD |
| | | read_buffer_size = 3M # UPD |
| | | read_rnd_buffer_size = 4M # UPD |
| | | sort_buffer_size = 4M # UPD |
| | | |
| | | # Table Settings |
| | | # In systemd managed systems like Ubuntu 16.04+ or CentOS 7+, you need to perform an extra action for table_open_cache & open_files_limit |
| | | # to be overriden (also see comment next to open_files_limit). |
| | | # E.g. for MySQL 5.7, please check: https://dev.mysql.com/doc/refman/5.7/en/using-systemd.html |
| | | # and for MariaDB check: https://mariadb.com/kb/en/library/systemd/ |
| | | table_definition_cache = 40000 # UPD |
| | | table_open_cache = 40000 # UPD |
| | | open_files_limit = 60000 # UPD - This can be 2x to 3x the table_open_cache value or match the system's |
| | | # open files limit usually set in /etc/sysctl.conf or /etc/security/limits.conf |
| | | # In systemd managed systems this limit must also be set in: |
| | | # /etc/systemd/system/mysqld.service.d/override.conf (for MySQL 5.7+) and |
| | | # /etc/systemd/system/mariadb.service.d/override.conf (for MariaDB) |
| | | |
| | | max_heap_table_size = 128M |
| | | tmp_table_size = 128M |
| | | |
| | | # Search Settings |
| | | ft_min_word_len = 3 # Minimum length of words to be indexed for search results |
| | | |
| | | # Logging |
| | | log_error = /data/mysql/mysql_error.log |
| | | log_queries_not_using_indexes = 1 |
| | | long_query_time = 5 |
| | | slow_query_log = 1 # Disabled for production |
| | | slow_query_log_file = /data/mysql/mysql_slow.log |
| | | |
| | | [mysqldump] |
| | | # Variable reference |
| | | # For MySQL 5.7: https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html |
| | | # For MariaDB: https://mariadb.com/kb/en/library/mysqldump/ |
| | | quick |
| | | quote_names |
| | | max_allowed_packet = 64M |
| | | ``` |
| | | |
| | | 配置环境变量 |
| | | |
| | | ``` |
| | | # echo 'PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile |
| | | # source /etc/profile |
| | | ``` |
| | | |
| | | 初始化数据库 |
| | | |
| | | ``` |
| | | # /usr/local/mysql/bin/mysqld --initialize --user=mysql |
| | | ``` |
| | | |
| | | 获取初始密码 |
| | | |
| | | ``` |
| | | # cat /data/mysql/mysql_error.log | grep root@localhost |
| | | ``` |
| | | |
| | | 启动服务器 |
| | | |
| | | ``` |
| | | # cp /opt/mysql-5.7.30/support-files/mysql.server /usr/local/bin/ |
| | | # chmod ugo+x /usr/local/bin/mysql.server |
| | | # mkdir -p /var/run/mysqld |
| | | # chown -R mysql:mysql /var/run/mysqld |
| | | # mysql.server start |
| | | ``` |
| | | |
| | | 登陆服务器 |
| | | |
| | | ``` |
| | | # mysql -uroot -p'NT!gwh.%c21N' |
| | | ``` |
| | | |
| | | 修改 root 密码 |
| | | |
| | | ``` |
| | | mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; |
| | | ``` |
| | | |
| | | 创建数据库 |
| | | |
| | | ``` |
| | | mysql> CREATE DATABASE `TT` CHARACTER SET `utf8` COLLATE `utf8_general_ci`; |
| | | mysql> CREATE DATABASE `hc_community` CHARACTER SET `utf8` COLLATE `utf8_general_ci`; |
| | | ``` |
| | | |
| | | 创建用户 |
| | | |
| | | ``` |
| | | mysql> CREATE USER 'TT'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; |
| | | mysql> GRANT ALL PRIVILEGES ON `TT`.* TO 'TT'@'%'; |
| | | mysql> CREATE USER 'hc_community'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; |
| | | mysql> GRANT ALL PRIVILEGES ON `hc_community`.* TO 'hc_community'@'%'; |
| | | mysql> FLUSH PRIVILEGES; |
| | | ``` |
| | | |
| | | 配置 systemd |
| | | |
| | | ``` |
| | | # vim /usr/lib/systemd/system/mysql.service |
| | | |
| | | [Unit] |
| | | Description=MySQL Server |
| | | Documentation=https://www.mysql.com/ |
| | | After=network.target |
| | | |
| | | [Service] |
| | | Type=forking |
| | | ExecStartPre=/usr/bin/mkdir -p /var/run/mysqld |
| | | ExecStartPre=/usr/bin/chown -R mysql:mysql /var/run/mysqld |
| | | ExecStart=/usr/local/bin/mysql.server start |
| | | ExecReload=/usr/local/bin/mysql.server reload |
| | | ExecStop=/usr/local/bin/mysql.server stop |
| | | |
| | | [Install] |
| | | WantedBy=multi-user.target |
| | | ``` |
| | | |
| | | 启动服务器 |
| | | |
| | | ``` |
| | | # systemctl daemon-reload |
| | | # systemctl start mysql |
| | | # systemctl enable mysql |
| | | ``` |
| | | |
| | | #### 7. 安装 HC 后端 |
| | | |
| | | 导入数据库 |
| | | |
| | | ``` |
| | | # mysql -uTT -ppassword |
| | | mysql> use TT; |
| | | mysql> source /opt/TT(分离版)20200420.sql; |
| | | ``` |
| | | |
| | | ``` |
| | | # mysql -uhc_communit -ppassword |
| | | mysql> use hc_community; |
| | | mysql> source /opt/hc_community(分离版)20200420.sql; |
| | | ``` |
| | | |
| | | 安装环境 |
| | | |
| | | ``` |
| | | # useradd hc |
| | | # usermod -aG docker hc |
| | | # mkdir /data/hc |
| | | # chown -R hc:hc /data/hc |
| | | # su hc |
| | | $ cd /data/hc |
| | | $ git clone https://gitee.com/wuxw7/MicroCommunity.git |
| | | ``` |
| | | |
| | | 修改配置 |
| | | |
| | | ``` |
| | | # vim /etc/hosts |
| | | |
| | | 192.168.0.114 dev.java110.com |
| | | 192.168.0.114 dev.db.java110.com |
| | | 192.168.0.114 dev.zk.java110.com |
| | | 192.168.0.114 dev.kafka.java110.com |
| | | 192.168.0.114 dev.redis.java110.com |
| | | 192.168.0.114 api.java110.com |
| | | ``` |
| | | |
| | | 备份配置 |
| | | |
| | | * 使用下面脚本备份配置文件 |
| | | |
| | | ``` |
| | | $ cd /data/hc/MicroCommunity |
| | | $ vim backup_config.sh |
| | | |
| | | #!/bin/sh |
| | | |
| | | mkdir -p ../MicroCommunity-config |
| | | |
| | | sourceDirs=(Api/docker \ |
| | | CodeService/src/main/resources \ |
| | | CommentService/src/main/resources \ |
| | | CommonService/docker \ |
| | | CommonService/src/main/resources \ |
| | | CommunityService/docker \ |
| | | CommunityService/src/main/resources \ |
| | | FeeService/docker \ |
| | | FeeService/src/main/resources \ |
| | | FrontService/docker \ |
| | | HardwareAdapationService/docker \ |
| | | HardwareAdapationService/src/main/resources \ |
| | | JobService/src/main/resources \ |
| | | LogService/src/main/resources \ |
| | | OrderService/docker \ |
| | | OrderService/src/main/resources \ |
| | | ReportService/docker \ |
| | | ReportService/src/main/resources \ |
| | | StoreService/docker \ |
| | | StoreService/src/main/resources \ |
| | | UserService/docker \ |
| | | UserService/src/main/resources \ |
| | | eureka/docker) |
| | | |
| | | targetPrefix="../MicroCommunity-config" |
| | | |
| | | targetDirs=(Api/ \ |
| | | CodeService/src/main/ \ |
| | | CommentService/src/main/ \ |
| | | CommonService/ \ |
| | | CommonService/src/main/ \ |
| | | CommunityService/ \ |
| | | CommunityService/src/main/ \ |
| | | FeeService/ \ |
| | | FeeService/src/main/ \ |
| | | FrontService/ \ |
| | | HardwareAdapationService/ \ |
| | | HardwareAdapationService/src/main/ \ |
| | | JobService/src/main/ \ |
| | | LogService/src/main/ \ |
| | | OrderService/ \ |
| | | OrderService/src/main/ \ |
| | | ReportService/ \ |
| | | ReportService/src/main/ \ |
| | | StoreService/ \ |
| | | StoreService/src/main/ \ |
| | | UserService/ \ |
| | | UserService/src/main/ \ |
| | | eureka/) |
| | | |
| | | sz=${#targetDirs[@]} |
| | | |
| | | for ((i=0; i<$sz; i+=1)) |
| | | do |
| | | echo "copy" ${sourceDirs[i]} "to" $targetPrefix/${targetDirs[i]} |
| | | mkdir -p $targetPrefix/${targetDirs[i]} |
| | | cp -R ${sourceDirs[i]} $targetPrefix/${targetDirs[i]} |
| | | done |
| | | |
| | | ``` |
| | | |
| | | ``` |
| | | $ sh backup_config.sh |
| | | $ tree /data/hc/MicroCommunity-config |
| | | ├── Api |
| | | │ └── docker |
| | | │ ├── docker-compose.yml |
| | | ├── CodeService |
| | | │ └── src |
| | | │ └── main |
| | | │ └── resources |
| | | │ ├── application-dev.yml |
| | | │ ├── dataSource.yml |
| | | ├── CommentService |
| | | │ └── src |
| | | │ └── main |
| | | │ └── resources |
| | | │ ├── application-dev.yml |
| | | │ ├── dataSource.yml |
| | | ├── CommonService |
| | | │ ├── docker |
| | | │ │ ├── docker-compose.yml |
| | | │ └── src |
| | | │ └── main |
| | | │ └── resources |
| | | │ ├── application-dev.yml |
| | | │ ├── dataSource.yml |
| | | ├── CommunityService |
| | | │ ├── docker |
| | | │ │ ├── docker-compose.yml |
| | | │ └── src |
| | | │ └── main |
| | | │ └── resources |
| | | │ ├── application-dev.yml |
| | | │ ├── dataSource.yml |
| | | ├── eureka |
| | | │ └── docker |
| | | │ ├── docker-compose.yml |
| | | ├── FeeService |
| | | │ ├── docker |
| | | │ │ ├── docker-compose.yml |
| | | │ └── src |
| | | │ └── main |
| | | │ └── resources |
| | | │ ├── application-dev.yml |
| | | │ ├── dataSource.yml |
| | | ├── FrontService |
| | | │ ├── docker |
| | | │ │ ├── docker-compose.yml |
| | | │ └── src |
| | | │ └── main |
| | | │ └── resources |
| | | │ ├── application-dev.yml |
| | | ├── HardwareAdapationService |
| | | │ ├── docker |
| | | │ │ ├── docker-compose.yml |
| | | │ └── src |
| | | │ └── main |
| | | │ └── resources |
| | | │ ├── application-dev.yml |
| | | │ ├── dataSource.yml |
| | | ├── JobService |
| | | │ └── src |
| | | │ └── main |
| | | │ └── resources |
| | | │ ├── application-dev.yml |
| | | │ ├── dataSource.yml |
| | | ├── LogService |
| | | │ └── src |
| | | │ └── main |
| | | │ └── resources |
| | | │ ├── application-dev.yml |
| | | ├── OrderService |
| | | │ ├── docker |
| | | │ │ ├── docker-compose.yml |
| | | │ └── src |
| | | │ └── main |
| | | │ └── resources |
| | | │ ├── application-dev.yml |
| | | │ ├── dataSource.yml |
| | | ├── ReportService |
| | | │ ├── docker |
| | | │ │ ├── docker-compose.yml |
| | | │ └── src |
| | | │ └── main |
| | | │ └── resources |
| | | │ ├── application-dev.yml |
| | | │ ├── dataSource.yml |
| | | ├── StoreService |
| | | │ ├── docker |
| | | │ │ ├── docker-compose.yml |
| | | │ └── src |
| | | │ └── main |
| | | │ └── resources |
| | | │ ├── application-dev.yml |
| | | │ ├── dataSource.yml |
| | | └── UserService |
| | | ├── docker |
| | | │ ├── docker-compose.yml |
| | | └── src |
| | | └── main |
| | | └── resources |
| | | ├── application-dev.yml |
| | | ├── dataSource.yml |
| | | ``` |
| | | |
| | | 修改配置 |
| | | |
| | | * 按下面方式修改上面的所有配置文件 |
| | | |
| | | ``` |
| | | $ vim OrderService/docker/docker-compose.yml |
| | | |
| | | - 替换本机地址 |
| | | :%s/114/本机地址/g |
| | | |
| | | version: '2' |
| | | services: |
| | | centerservice: |
| | | container_name: orderservice-1 |
| | | build: |
| | | context: . |
| | | dockerfile: Dockerfile |
| | | restart: always |
| | | ports: |
| | | - "8001:8001" |
| | | volumes: |
| | | - ../target/OrderService.jar:/root/target/OrderService.jar |
| | | extra_hosts: |
| | | - "dev.java110.com:192.168.0.114" |
| | | - "dev.db.java110.com:192.168.0.114" |
| | | - "dev.zk.java110.com:192.168.0.114" |
| | | - "dev.kafka.java110.com:192.168.0.114" |
| | | - "dev.redis.java110.com:192.168.0.114" |
| | | - "api.java110.com:192.168.0.114" |
| | | ``` |
| | | |
| | | ``` |
| | | $ vim OrderService/src/main/resources/dataSource.yml |
| | | |
| | | - 替换 MySQL 用户和密码 |
| | | |
| | | dataSources: |
| | | ds0: !!com.alibaba.druid.pool.DruidDataSource |
| | | driverClassName: com.mysql.jdbc.Driver |
| | | url: jdbc:mysql://dev.db.java110.com:3306/hc_community?useUnicode=true&characterEncoding=utf-8&useSSL=false |
| | | username: mysql_username |
| | | password: mysql_password |
| | | ds1: !!com.alibaba.druid.pool.DruidDataSource |
| | | driverClassName: com.mysql.jdbc.Driver |
| | | url: jdbc:mysql://dev.db.java110.com:3306/TT?useUnicode=true&characterEncoding=utf-8&useSSL=false |
| | | username: mysql_username |
| | | password: mysql_username |
| | | ``` |
| | | |
| | | ``` |
| | | $ vim OrderService/src/main/resources/application-dev.yml |
| | | |
| | | - 替换 MySQL 用户和密码 |
| | | - 替换 Redis 密码 |
| | | |
| | | spring: |
| | | redis: |
| | | password: redis_password |
| | | datasource: |
| | | url: jdbc:mysql://dev.db.java110.com:3306/TT?useUnicode=true&characterEncoding=utf-8&useSSL=false |
| | | password: mysql_password |
| | | username: mysql_username |
| | | ``` |
| | | |
| | | 恢复配置 |
| | | |
| | | * 使用下面脚本恢复配置文件 |
| | | |
| | | ``` |
| | | $ cd /data/hc/MicroCommunity |
| | | $ vim restore_config.sh |
| | | |
| | | #!/bin/sh |
| | | |
| | | outputPrefix="../MicroCommunity-config" |
| | | |
| | | configDirs="Api \ |
| | | CodeService \ |
| | | CommentService \ |
| | | CommonService \ |
| | | CommunityService \ |
| | | FeeService \ |
| | | FrontService \ |
| | | HardwareAdapationService \ |
| | | JobService \ |
| | | LogService \ |
| | | OrderService \ |
| | | ReportService \ |
| | | StoreService \ |
| | | UserService \ |
| | | eureka" |
| | | |
| | | for configDir in $configDirs |
| | | do |
| | | echo "copy" $outputPrefix/$configDir "to" $configDir |
| | | cp -R $outputPrefix/$configDir . |
| | | done |
| | | ``` |
| | | |
| | | ``` |
| | | $ sh restore_config.sh |
| | | ``` |
| | | |
| | | 配置脚本 |
| | | |
| | | ``` |
| | | $ cd /data/hc/MicroCommunity |
| | | ``` |
| | | |
| | | ``` |
| | | $ vim rebuild_services.sh |
| | | |
| | | #!/bin/sh |
| | | |
| | | mvn clean install -Dmaven.test.skip=true |
| | | |
| | | args="up --build --no-start --force-recreate" |
| | | services="eureka Api OrderService CommunityService CommonService StoreService UserService FrontService FeeService" |
| | | |
| | | for service in $services |
| | | do |
| | | docker-compose -f $service/docker/docker-compose.yml $args |
| | | done |
| | | ``` |
| | | |
| | | ``` |
| | | $ vim restart_containers.sh |
| | | |
| | | #!/bin/sh |
| | | |
| | | sh reaction_containers.sh restart |
| | | ``` |
| | | |
| | | ``` |
| | | $ vim stop_containers.sh |
| | | |
| | | #!/bin/sh |
| | | |
| | | sh reaction_containers.sh stop |
| | | ``` |
| | | |
| | | ``` |
| | | $ vim down_containers.sh |
| | | |
| | | #!/bin/sh |
| | | |
| | | sh reaction_containers.sh down |
| | | ``` |
| | | |
| | | ``` |
| | | $ vim reaction_containers.sh |
| | | |
| | | #!/bin/sh |
| | | |
| | | args=$1 |
| | | services="eureka Api OrderService CommunityService StoreService UserService FrontService FeeService" |
| | | |
| | | case "$args" in |
| | | "restart") |
| | | ;; |
| | | "stop") |
| | | ;; |
| | | "down") |
| | | ;; |
| | | *) |
| | | echo "Usage: sh reaction_containers.sh restart/stop/down" |
| | | exit |
| | | ;; |
| | | esac |
| | | |
| | | for service in $services |
| | | do |
| | | sh reaction_container.sh $service $args |
| | | done |
| | | |
| | | docker ps |
| | | ``` |
| | | |
| | | ``` |
| | | $ vim reaction_container.sh |
| | | |
| | | #!/bin/sh |
| | | |
| | | service=$1 |
| | | args=$2 |
| | | |
| | | if [ "$service" == "" ] || [ "$args" == "" ] |
| | | then |
| | | echo "Usage: sh reaction_container.sh service restart/stop/down" |
| | | exit |
| | | fi |
| | | |
| | | docker-compose -f $service/docker/docker-compose.yml $args |
| | | ``` |
| | | |
| | | 构建镜像 |
| | | |
| | | ``` |
| | | $ sh rebuild_services.sh |
| | | ``` |
| | | |
| | | 启动容器 |
| | | |
| | | ``` |
| | | # 启动所有容器 |
| | | $ sh restart_containers.sh |
| | | # 启动单个容器 |
| | | $ sh reaction_container.sh Api restart |
| | | ``` |
| | | |
| | | 停止容器 |
| | | |
| | | ``` |
| | | # 停止所有容器 |
| | | $ sh stop_containers.sh |
| | | # 停止单个容器 |
| | | $ sh reaction_container.sh Api stop |
| | | ``` |
| | | |
| | | 卸载容器 |
| | | |
| | | ``` |
| | | # 卸载所有容器 |
| | | $ sh down_containers.sh |
| | | # 卸载单个容器 |
| | | $ sh reaction_container.sh Api down |
| | | ``` |
| | | |
| | | #### 8. 安装 HC 前端 |
| | | |
| | | 安装环境 |
| | | |
| | | ``` |
| | | # curl -sL https://rpm.nodesource.com/setup_10.x | bash - |
| | | # yum install –y nodejs |
| | | # su hc |
| | | $ cd /data/hc |
| | | $ git clone https://gitee.com/java110/MicroCommunityWeb.git |
| | | ``` |
| | | |
| | | 启动前端 |
| | | |
| | | ``` |
| | | $ cd /data/hc/MicroCommunityWeb |
| | | $ npm install |
| | | $ npm start |
| | | ``` |
| | | |
| | | |
| | | |