linux环境下搭建环境发布web项目
在公司真是学习了一下项目环境在linux下搭建和发布的过程,这是每个程序员都应该掌握的一个技能,将整理下为以后温习用,也乐于和为掌握这些技能的猿分享:
这里主要分为5部分:1、安装jdk,并配置环境变量;2、安装maven配置环境变量;3、安装tomcat服务器;4、安装svn客户端;5安装nodejs(由于我的项目前台开发用的reactjs需要,所以因项目而异)配置node,npm环境变量。6、编译脚本
下面展开详细说明:

1、下载jdk压缩包,网上自己下载然后复制到自己定义的目录下,我这里是/home/appadmin/tools,使用 tar -zxvf jdk-8xxxxx.gz 进行解压 ,之后 更改解压后的文件夹名称为java :mv jdk-8xxxxxx java,
1.1配置环境变量 vim .bash_profile 添加如下
export JAVA_HOME=/home/appadmin/tools/java
export PATH=$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
保存后执行 source .bash_profile 刷新文件 ,测试是否安装成功:java -version。
2、安装maven:也在tools目录下解压,修改解压文件夹为maven,然后配置环境变量,在.bash_profile 文件后面添加如下代码,记得保存后 刷新文件。
MAVEN_HOME=/home/appadmin/tools/maven
export MAVEN_HOME
export PATH=$PATH:$MAVEN_HOME/bin
3、tomcat安装,下载压缩包解压后更名为tomact ,更名只是为了方便在写脚本时容易找到路径好记,先不对tomcat进行任何配置,在项目打包后的路径需要修改tomcat加载项目路径。
4、安装svn:一定要按照顺序解压这两个包
tar xvfj subversion-1.4.3.tar.bz2
tar xvfj subversion-deps-1.4.3.tar.bz2
后者会解压到前者的解压文件夹中,修改解压文件夹为subversion
4.2进行编译和安装
# cd subversion
#./configure
# make #编译,如果提示错误, 则可能需要root权限
# make install #安装,此时可能需要root用户权限
make时可能会出现错误,仔细看看在./configure 后出现的 no ,是否需要 安装 gcc, 需要 则 yum install gcc
安装好客户端之后, 默认安装目录是/home/appadmin/tools/subversion
4.3 将svn命令链接到/usr/local/bin目录下(需要root权限):若没有root权限 (公司管理员没给开root权限)也可以在 .bash_profile配置环境变量;
ln –s /home/appadmin/tools/subversion/bin/svn /usr/local/bin
测试是否已经可以在用户目录下使用svn:
svn help 如果出现命令列表,则表示已经链接成功。
4.4配置maven settings.xml 文件 ,maven中央仓库
cd /home/appadmin/tools/maven/conf
<?xml version="1.0" encoding="UTF-8"?>
<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd" xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<servers>
<server>
<username>test</username>
<password>\{DESede\}6z0YCNHERsU=</password>
<id>central</id>
</server>
<server>
<username>test</username>
<password>\{DESede\}6z0YCNHERsU=</password>
<id>snapshots</id>
</server>
<server>
<username>test</username>
<password>\{DESede\}6z0YCNHERsU=</password>
<id>central1</id>
</server>
<server>
<username>test</username>
<password>\{DESede\}6z0YCNHERsU=</password>
<id>snapshots1</id>
</server>
</servers>
<localRepository>/home/appadmin/tools/maven_repo</localRepository>
<profiles>
<profile>
<id>flex</id>
<repositories>
<repository>
<id>central</id>
<url>http://central</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>http://central</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
</pluginRepositories> </profile> </profiles> <mirrors>
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://自己的maven仓库服务器地址/</url>
</mirror>
</mirrors>
5、nodejs 解压安装,改名为node。需要软连接到全局变量,但是我没有root权限修改了 .bash_profile
export NPM_HOME=/home/appadmin/tools/node/bin
export PATH=$JAVA_HOME/bin:$PATH:$NPM_HOME
所以最后修改后的bash_profile 文件为
# .bash_profile # Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi # User specific environment and startup programs PATH=$PATH:$HOME/bin export PATH export NPM_HOME=/home/appadmin/tools/node/bin export PATH
export JAVA_HOME=/home/appadmin/tools/java
export PATH=$JAVA_HOME/bin:$PATH:$NPM_HOME
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar MAVEN_HOME=/home/appadmin/tools/maven
export MAVEN_HOME
export PATH=$PATH:$MAVEN_HOME/bin
最后刷新.bash_profile 若不能执行该文件 chmod a+x .bash_profile
6、写编译脚本 ,其中有些因项目不同可能不需要。
#!/bin/bash # prepare
svn_base="http://svn.rd.800best.com/svn/wyvern/wyvern-resource/trunk" checkout_home="/home/appadmin/source_code/wyvern-resource/wyvern-res" checkout_version="trunk" deploy_home="/home/appadmin/deploy/wyvern-res" war_name="wyvern-res-war.war" # which version
if [ $# == ]; then
checkout_version="trunk"
svn_src="${svn_base}"
echo "build trunk!"
else
branch=$
checkout_version="${branch}"
svn_src="${svn_base}/branches/${branch}"
checkout_home=${checkout_home}/branches
echo "build branch! ${branch}"
fi # check out
echo "# start check out"
echo "------------------------------------"
cd ${checkout_home}
svn co ${svn_src}
svn up ${checkout_home}/${checkout_version}
cd ${checkout_home}/${checkout_version}
echo "------------------------------------"
echo # build react
echo "# start building js"
echo "------------------------------------"
cd ${checkout_home}/${checkout_version}/wyvern-res-war/
npm install
npm run release
echo "------------------------------------"
echo # build
echo "# start building"
echo "------------------------------------"
cd ${checkout_home}/${checkout_version}
mvn clean install package -U -Dmaven.test.skip=true -P test-env
echo "------------------------------------"
echo echo "# list build result"
echo "------------------------------------"
#ls -l ${deploy_home}/main
#ls -l ${deploy_home}/external
echo "------------------------------------"
echo # stop tomcat
echo "# stop tomcat"
echo "------------------------------------"
pkill - java
echo "------------------------------------"
ps aux|grep java
#sudo service stop
echo "------------------------------------"
echo # clean tomcat
echo "# clean tomcat"
echo "------------------------------------"
cd ${deploy_home}
rm -rf ./main/*
#rm -rf ./external/*
echo "## list deploy"
ls -l ${deploy_home}/main
#ls -l ${deploy_home}/external
echo "------------------------------------"
echo # deploy
echo "# cp deploy"
echo "------------------------------------" cp /home/appadmin/source_code/wyvern-resource/wyvern-res/trunk/wyvern-res-war/target/${war_name} ./main/ cd main
jar -xvf ${war_name}
rm ${war_name}
echo "# list main"
ls -l
cd .. #cd external
#jar -xvf ${war_ext_name}
#rm ${war_ext_name}
echo "# list external"
ls -l
cd ..
echo "------------------------------------"
echo # start tomcat
echo "# start tomcat"
echo "------------------------------------"
#JAVA_OPTS="-Xms4096m -Xmx4096m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:+DisableExplicitGC
# -XX:+PrintGCDateStamps -XX:+PrintGC -XX:+PrintGCDetails
# -XX:ParallelGCThreads=8 -XX:+UseConcMarkSweepGC -Xloggc:/home/appadmin/logs/gc/gc$NAME.log"
nohup /home/appadmin/tools/tomcat/bin/catalina.sh start >/dev/null 2>&1 &
#cd /home/appadmin/service/crm_tomcat/crm
#/home/appadmin/service/crm_tomcat/crm/start-crm.sh &
#sudo service wyvern start
echo "------------------------------------"
echo # tomcat log
echo "# tail tomcat log"
echo "------------------------------------"
tail -f /home/appadmin/logs/wyvern-res.log
echo "------------------------------------"
echo echo "# release to tomcat finish"
修改tomcat conf/server.xml文件 添加最后的war包路径
<Context path="" docBase="/home/appadmin/deploy/wyvern-res/main" debug="0" reloadable="true" />
最后 ./编译脚本 即可启动项目
linux环境下搭建环境发布web项目的更多相关文章
- Mac下Intellij IDea发布Web项目详解一
Mac下Intellij IDea发布Web项目详解一 Mac下Intellij IDea发布Java Web项目(适合第一次配置Tomcat的家伙们)详解二 Mac下Intellij IDea发布J ...
- linux系统下搭建自己的web服务器
之前在windows 2008 server上搭建了一个用于测试的web服务器,但是在打开网站的时候特别的慢,尤其是图片的加载都会失败,当时以为是路径的问题,但是在服务器上自己打开都特别慢,自己实在找 ...
- react-native学习(RN)--之Window环境下搭建环境配置,以及初始化建立react-native项目,(真机和模拟器运行的相关错误解决办法,android打包报错)
react-native以后会更火的 一.安装java 二.安装Android Studio 三.安装react-native需要的Android studio额外部分 四.安装nodeJS 五.安 ...
- Node.js环境下通过Express创建Web项目
通过Express命令创建项目 Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具. 使用 Express ...
- react-native学习(RN)--之Window环境下搭建环境配置
react-native以后会更火的,自从2015年facebook开源了Android 一.安装java 二.安装Android Studio 三.安装react-native需要的Android ...
- 在Linux(Ubuntu)下搭建ASP.NET Core环境并运行 继续跨平台
最新教程:http://www.cnblogs.com/linezero/p/aspnetcoreubuntu.html 无需安装mono,在Linux(Ubuntu)下搭建ASP.NET Core环 ...
- Ruby on Rails入门——macOS 下搭建Ruby Rails Web开发环境
这里只介绍具体的过程及遇到的问题和解决方案,有关概念性的知识请参考另一篇:Ruby Rails入门--windows下搭建Ruby Rails Web开发环境 macOS (我的版本是:10.12.3 ...
- Tomcat8内置jdk8运行环境发布web项目
简单说明:之前部署项目都是没有改变之前的环境变量,最近由于公司的数据源换了,jdk由1.7改成了1.8,tomcat7也改为了1.8,现在需要部署采用新数据源的这个项目, 为了不改变之前的环境变量,使 ...
- linux环境下测试环境搭建
一.linux环境下测试环境搭建过程简述: 1.前端后台代码未分离情况下: 主要步骤为:安装jdk,安装mysql,安装tomcat,将项目代码部署到tomcat/webapps/下. 2.前端后台代 ...
随机推荐
- ps入门教程:选择工具、移动工具、索套工具的使用
本节课程主要内容:1.学习矩形选择工具.椭圆选择工具.移动工具.多边形套索工具.套索工具.磁性套索工具和魔术 棒选择工具.2.用套索和磁性套索,实现对人物照片的抠图.----------------- ...
- w5cValidator【AngularJS】 2.0 版本发布
w5cValidator 插件基于angular原有的表单验证,在原有的基础上扩展了一些错误提示的功能,让大家不用在每个表单上写一些提示信息的模板,专心的去实现业务逻辑. 代码地址:https://g ...
- SpringMVC数据绑定
SpringMVC学习系列(5) 之 数据绑定-2 在系列(4)中我们介绍了如何用@RequestParam来绑定数据,下面我们来看一下其它几个数据绑定注解的使用方法. 1.@PathVariab ...
- JAVA实例化class的三种方式
不多说 直接上例子 package org.lxh.demo15.getclassdemo ; class X{ }; public class GetClassDemo02{ public sta ...
- 一维数组的 K-Means 聚类算法理解
刚看了这个算法,理解如下,放在这里,备忘,如有错误的地方,请指出,谢谢 需要做聚类的数组我们称之为[源数组]需要一个分组个数K变量来标记需要分多少个组,这个数组我们称之为[聚类中心数组]及一个缓存临时 ...
- golang 之 bson 与 struct 转换
bson的介绍不说了golang下的解析包找到2个 一个是mongo的http://labix.org/gobson,另外一个比较小众https://github.com/sbunce/bson这里用 ...
- ASP.NET Session丢失问题原因及解决方案
正常操作情况下会有ASP.NET Session丢失的情况出现.因为程序是在不停的被操作,排除Session超时的可能.另外,Session超时时间被设定成60分钟,不会这么快就超时的. ASP.NE ...
- 读写ini文件
C# 使用文件流来读写ini文件 背景 之前采用ini文件作为程序的配置文件,觉得这种结构简单明了,配置起来也挺方便.然后操作方式是通过WindowsAPI,然后再网上找到一个基于WindowsAPI ...
- .NET面向对象特性之“继承”
整体简介 1.理解继承——继承关系图 2.实现继承与接口多继承 3.new. virtual.override方法 4.抽象方法和抽象类的继承 5.继承的本质 6.继承的复用性.扩展性和安全性 7.多 ...
- 企业架构研究总结(34)——TOGAF架构内容框架之架构制品(下)
4.2.31 数据生命周期图(Data Lifecycle Diagram) 数据生命周期图是在业务流程的约束之下对业务数据在其整个生命周期(从概念阶段到最终退出)中对其进行管理的核心部分.数据从本质 ...