1、最小化安装centos7-环境准备
安装epel-release
安装epel-release,因为有些rpm包在官方库中找不到。前提是保证可以联网
yum install -y epel-release
修改IP
net-tools
- net-tool:工具包集合,包含ifconfig等命令
yum install -y net-tools
vim
yum install -y vim
拖拽上传文件
yum -y install lrzsz
使用方法:
输入命令rz选择文件上传或直接拖拽文件。目前好像只能安装xshell使用。
jdk
卸载虚拟机自带的JDK
注意:如果你的虚拟机是最小化安装不需要执行这一步。
[root@hadoop100 ~]# rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps
- rpm -qa:查询所安装的所有rpm软件包
- grep -i:忽略大小写
- xargs -n1:表示每次只传递一个参数
- rpm -e –nodeps:强制卸载软件
安装
想办法将JDK安装包导入到虚拟机的/opt/software文件夹下面
解压JDK安装包到/opt/module目录下
tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/
改名
mv jdk1.8.0_212/ jdk
配置JDK环境变量
(1)新建/etc/profile.d/my_env.sh文件
sudo vim /etc/profile.d/my_env.sh
添加如下内容,然后保存(:wq)退出
#JAVA_HOMEexport JAVA_HOME=/opt/module/jdkexport PATH=$PATH:$JAVA_HOME/bin
(2)让环境变量生效
source /etc/profile.d/my_env.sh
6)测试JDK是否安装成功
java -version
如果能看到以下结果、则Java正常安装
java version "1.8.0_212"
防火墙
关闭防火墙,关闭防火墙开机自启
systemctl stop firewalld
systemctl disable firewalld.service
注意:在企业开发时,通常单个服务器的防火墙时关闭的。公司整体对外会设置非常安全的防火墙
2、项目环境安装
安装Docker
为了后续更方便的安装软件,先安装一个docker,可以一键拉取镜像,启动一个容器。
centos安装docker详细步骤-CSDN博客
安装kingbase
sys_ctl -w start -D ${Data 文件目录} -l "${Data 文件目录}/sys_log/startup.log"
sys_ctl stop -m fast -w -D ${Data 文件目录}
安装nginx
yum install -y wget
wget http://nginx.org/download/nginx-1.16.1.tar.gz
yum -y install gcc openssl openssl-devel pcre-devel zlib zlib-devel
[root@localhost nginx-1.21.0]# ./configure --prefix=/usr/local/nginx
#执行make命令
[root@localhost nginx-1.21.0]# make
#执行make install命令
[root@localhost nginx-1.21.0]# make install
常用命令
cd /usr/local/nginx/sbin 首先进入 sbin 目录
./nginx 启动 Nginx
./nginx -s stop 停止 Nginx
./nginx -s reload 重新加载 Nginx
./nginx -v 查看 Nginx 版本
设置开机自启动
第一步:进入到/lib/systemd/system/目录
1 |
|
第二步:创建nginx.service文件,并编辑
1 |
|
内如如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
Description:描述服务
After:描述服务类别
[Service]服务运行参数的设置
Type=forking是后台运行的形式
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp=True表示给服务分配独立的临时空间
注意:[Service]的启动、重启、停止命令全部要求使用绝对路径
[Install]运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3
保存退出。
第三步:加入开机自启动
1 |
|
如果不想开机自启动了,可以使用下面的命令取消开机自启动
1 |
|
第四步:服务的启动/停止/刷新配置文件/查看状态
1 2 3 4 5 6 7 |
|
一个常见的错误
Warning: nginx.service changed on disk. Run 'systemctl daemon-reload' to reload units.
直接按照提示执行命令systemctl daemon-reload 即可。
安装Redis
docker pull redis
docker run -itd --name redis-test -p 6379:6379 redis
设置开机自启动
systemctl enable docker
创建容器时,设置自动启动容器, 添加--restart=always
docker run --restart=always
如果创建时未指定 --restart=always ,可通过update 命令设置
docker update --restart=always 容器id(或者容器名称)
上传项目部署
1、注册为Linux服务
- 打包上传 xxx.jar
- 首先需要现修改pom中spring-boot-maven-plugin配置,其实spring boot 打成jar包以后,是可以直接像shell脚本一样直接运行的,要实现这样可以直接运行,pom.xml 的build节点需要增加这样的配置:
<!--这样配置后,通过maven打出来的jar 可以直接 执行 ./aabb.jar 就能运行起来。 -->
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><executable>true</executable></configuration></plugin></plugins></build>
- 在Linux上注册服务(此处基于init.d注册部署)
将打好的jar包放到Linux任意目录 eg: /var/project/
sudo ln -s /var/project/demo.jar /etc/init.d/abc
(其中demo为jar包名称,abc为服务名称)
之后就可以用 service XXX start 命令来启动jar包
启动/关闭 服务
service abc start/stop
查看状态
service abc status
设置开机自启
chkconfig abc on
报错
1、client_encoding
项目启动报错:
nested exception is com.kingbase8.util.KSQLException: ������������: ������ "client_encoding" ������������: "ANSI_X3.4-1968"
字符集和数据库的不一致:
url: jdbc:kingbase8://192.168.31.90:54321/qjjk?clientEncoding=UTF-8
2、Unable to find Java
原因:jar包同文件夹缺少同名配置文件,文件名相同,扩展名为.conf
解决:新增.conf文件,内容如下:
JAVA_HOME=/usr/java/jdk1.8.0_301
3、logback.xml生成的日志文件乱码
加上<charset class="java.nio.charset.Charset">UTF-8</charset>
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${log.path}/sys-info.log</file><!-- 循环政策:基于时间创建日志文件 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!-- 日志文件名格式 --><fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern><!-- 日志最大的历史 60天 --><maxHistory>60</maxHistory></rollingPolicy><encoder><pattern>${log.pattern}</pattern><charset class="java.nio.charset.Charset">UTF-8</charset></encoder><filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 过滤的级别 --><level>INFO</level><!-- 匹配时的操作:接收(记录) --><onMatch>ACCEPT</onMatch><!-- 不匹配时的操作:拒绝(不记录) --><onMismatch>DENY</onMismatch></filter></appender>