Web项目部署
- 本部署是使用了两个域名(博客和web项目)访问同一阿里云主机的两个服务
- 本文着重说明web部署,博客部署阿里云参考博客部署参考
yum(CentOS中的Shell前端软件包管理器自动处理依赖性关系,并且一次安装所有依赖的软件包)
web项目部署详情
yum update
yum install git
mkdir App
cd App/
git clone 项目地址
yum install maven(依赖管理,并且maven中安装了jdk(编译))
cp src/main/resources/application.properties src/main/resources/application-production.properties(复制一个新项目为了保证原项目的properties独立性,个人信息也不会泄露)
如果要更新项目进入到community下使用git pull
在复制项目的application.properties中配置服务端口server.port=8087
mvn clean compile flyway:migrate -Pproduction(每次修改文件都有执行mvn package,-Pproduction是指定为生产环境的profile)
Ningx反向代理配置文件(参考下面)
java -jar -Dspring.profiles.active=production target/community-0.0.1-SNAPSHOT.jar(部署项目要在cd /root/App/communitycode(在该目录下打包))
mvn flyway:migrate - Pproduction(执行数据库脚本)
mvn flyway:repair(修复错误的数据库脚本,已经执行错误的sql需要通过该命令解决)
mvn clean compile flyway:repair -Pproduction
systemctl restart nginx.service(修改完nignx.conf后刷新页面反向代理才生效)
项目路径/root/App/communitycode/src/main/resources/application-production.properties
迁移数据库 配置mvn profile 防止信息泄露,在 ~/.m2/settings.xml文件中配置maven的profile
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository/>
<interactiveMode/>
<offline/>
<pluginGroups/>
<servers/>
<mirrors/>
<proxies/>
<profiles>
<profile>
<id>production</id>
<properties>
<db.url>jdbc:mysql://47.115.20.86:3306/autodidact</db.url>
<db.user>root</db.user>
<db.password>123456</db.password>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>dev</id>
<properties>
<db.url>jdbc:h2:~/community</db.url>
<db.user>sa</db.user>
<db.password>123</db.password>
</properties>
</profile>
</profiles>
<activeProfiles/>
</settings>
linux数据库脚本执行错误后,修复仍然不能解决问题
- mvn clean compile flyway:repair -Pproduction
repair修复脚本
Unable to access jarfile target/community-0.0.1-SNAPSHOT.jar
- mvn package
Nginx.conf配置
阿里云默认的库下载的是fedora版本的nginx,所以我们应该配置的是位于 etc/nginx/ 下的 nginx.conf 。
我们先不急着打开这个文件,因为我并不建议直接配置这个文件,我们应该先创建一个新的文件,然后采用include的方式,将这个文件包含进nginx.conf中。S
操作如下在/etc/nginx/目录下创建一个文件夹 叫 vhost
cd /etc/nginx/
mkdir vhost
cd vhost
vim web.conf
#静态资源
server {
listen 80;
server_name ccc.test.com
root /home/www/website;
}
server{
listen 80;
server_name forum.wenmrong.com;
location / {
proxy_pass http://127.0.0.1:8087;
proxy_set_header Host $host;
proxy_set_header X-Real-Ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect off;
}
}
- 动态的服务指定一个http请求( http://127.0.0.1:8087)
- 127.0.0.1是localhost指向的地址也就是阿里云服务器的地址,8087是部署的端口在application-production.properties设置
- 静态文件直接指定一个跟路径(root /home/www/website)
- 打开/etc/nginx/目录下的nginx.conf文件
vi /etc/nginx/nginx.conf
如果以后还想添加新的网站,也可以在vhost目录下新建一个conf配置文件。
在刚才我们自己写的web.conf配置文件中root的路径相应路径建立博客的目录:
cd /home
mkdir www
cd /www
mkdir website