项目部署:开发、运行环境
JDK的安装与配置后端Java项目发布nginx安装与配置前端Vue项目发布
JDK的安装与配置
方法一:下载tar包,解压、重命名为JDK1.8
方法二:yum 安装指定版本的JDK
列出可安装版本
yum --showduplicate list java* | grep 1.8.0
选择你需要的版本安装
比如 :
yum install java-1.8.0-openjdk-1.8.0.222.b10-1.el7_7.x86_64
这样安装后安装后不支持jps 命令
[root@localhost ~]# jps
-bash: jps: command not found
解决方案:
yum install java-1.8.0-openjdk-devel-1.8.0.222.b10-1.el7_7.x86_64
openjdk 、 openjdk-devel 、openjdk-headless的区别
openjdk 为主要安装包,devel相当于加强版,openjdk-headless 与版本有关,比如,
直接安装yum install java-1.8.0-openjdk-1.8.0.222.b10-1.el7_7.x86_64 会自动安装openjdk-headless 但不会安装devel,此时也不支持jps
直接yum install java-1.8.0-openjdk-devel.x86_64 (不指定小版本) 可直接安装不需要依赖(会自动安装openjdk)
直接 yum install java-1.8.0-openjdk-devel-1.8.0.222.b10-1.el7_7.x86_64 会依赖于 java-1.8.0-openjdk-headless-1.8.0.222.b10-1.el7_7.x86_64
配置
编辑/etc/profle,在最后添加
source /etc/profile 使得上述3行配置生效
后端Java项目发布
Spring boot 多环境打包
目前数据库连接为测试环境,如下
为让spring boot能够访问application-prod.properties文件,并用其中内容替换application.properties文件相关内容,实现多环境
-Dspring.profiles.active=prod
补充另一种方法:
springboot 多环境配置项指定
application.properties内容如下:表示要使用构建后的配置文件
spring.profiles.active=@build.profile.id@
pom.xml中要添加以下内容:build、profiles配合使用确定${build.profile.id}的值
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<excludes>
<exclude>application-*.properties</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
<includes>
<include>application-${build.profile.id}.properties</include>
</includes>
</resource>
</resources>
</build>
<profiles>
<!--开发环境-->
<profile>
<id>dev</id>
<properties>
<build.profile.id>dev</build.profile.id>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<!--生产环境-->
<profile>
<id>prod</id>
<properties>
<build.profile.id>prod</build.profile.id>
</properties>
</profile>
</profiles>
添加构建打包配置:
接下来打包Spring boot项目
成功后:
再通过maven打包
为了能通过IDEA自定上传打包文件到远程ECS指定目录,用前面方法做映射
先修改pom.xml,注意图中路劲可能不对,应该在后端的target下的dist目录
做映射
启动包:
使用application-prod.properties启动,在-jar后加参数,如下:
有字段为空,会影响执行结果正确性,所以初始化为0。解决办法:
后台启动脚本:
参考代码:
#!/bin/bash
echo "publish----------"
process_id=`ps -ef | grep wiki.jar | grep -v grep |awk '{print $2}'`
if [ $process_id ] ; then
sudo kill -9 $process_id
fi
source /etc/profile
nohup java -jar -Dspring.profiles.active=prod ~/wiki/wiki.jar > /dev/null 2>&1 &
echo "end publish"
nginx安装与配置
添加Nginx到YUM源(这步必须做,否则YUM源里没有nginx安装包)
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
安装Ngin
sudo yum install -y nginx
启动Nginx
sudo systemctl start nginx.service
开放80端口
##Add
firewall-cmd --permanent --zone=public --add-port=80/tcp
##Reload
firewall-cmd --reload
Nginx配置信息
- 网站文件存放默认目录
/usr/share/nginx/html
- 网站默认站点配置
/etc/nginx/conf.d/default.conf
- 自定义Nginx站点配置文件存放目录
/etc/nginx/conf.d/
- Nginx全局配置
/etc/nginx/nginx.conf
- Nginx启动
nginx -c nginx.conf
进入/etc/nginx
编辑nginx.conf
启动nginx服务;service nginx start 也可以用systemctl start nginx试试
curl http://IP,测试是否成功,默认是80端口
前端Vue项目发布
Vue多环境编译
生产环境下编译:
再在本地和远程做一个文件夹的映射,这样就可以同步了
nginx静态网站配置
参考代码:
server{
listen 80;
# server_name 8.133.184.84;
server_name wiki.courseimooc.com;
location / {
alias /root/web/;
index index.html;
try_files $uri $uri/ /index.html;
}
}
重新启动nginx
关于SELinux的坑
这是发现访问网站403错误,肯定是SELiunx的原因
临时解决办法:
先看看nginx的默认web文件目录的SELinux
ls -Zd /usr/share/nginx/html/
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /usr/share/nginx/html/
再看我们的web目录SELinux,/root/web
ls -Zd /root/web
drwxr-xr-x. root root system_u:object_r:usr_t:s0 /root/web
(因为我已经改过了,所以看到时一致的,可以用restorecon -Rv /root/web 恢复该目录的默认值,我们发现如下:注意类型:admin_home_t)
drwxr-xr-x. root root system_u:object_r:admin_home_t:s0 /root/web
临时修改命令:参考用nginx的默认SELINUX修改:--reference=
chcon -Rv --reference=/usr/share/nginx/ web/
再执行以下命令观察:一致。可以访问web了,403错误解决
ls -Zd /root/web
drwxr-xr-x. root root system_u:object_r:usr_t:s0 /root/web
永久修改参考:/ftpdir为示例文件夹,public_content_t为示例类型,改为想要的即可如:usr_t
修改为永久的安全上下文
[root@vm ftpdir]# semanage fcontext -l | grep /ftpdir ####查看内核识别的安全上下文,发现/ftpdir不在列表中
semanage fcontext -a -t public_content_t '/ftpdir(/.*)?' ####-a 添加 -t安全上下文类型
###/ftpdir(/.*) 对文件本身和里面的所有隐藏文件
###?匹配单个文件
restorecon -FvvR /ftpdir ###刷新列表,否则安全上下文还是没有改变
更多推荐
所有评论(0)