LXC中部署tomat服务器

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014633283/article/details/44827469

这段时间学习LXC,想借助一个案例——在LXC上部署tomcat服务器,一方面加深自己对部署应用到LXC容器的理解,另一方面也熟悉一下tomcat服务器的部署操作(之前在Linux上从未部署过tomcat)。。。话不多说,开始吧:


一、软件环境及平台

操作系统:Ubuntu 14.04, 64位

jdk版本:jdk-8u40-linux-x64.tar.gz

tomcat版本:apache-tomcat-8.0.21.tar.gz


二、LXC的安装和容器实例的创建

step1:通过apt-get命令自动安装LXC

<span style="font-family:FangSong_GB2312;font-size:14px;"> sudo apt-get install lxc
</span>


step2:检验LXC是否安装好

网上一些资料建议执行lxc-version命令,查看是否显示LXC的版本号。但在我的机子上提示如下图:

我不太清楚其中的原因,但实践表明这并不影响我们后续的安装。通过另外一种方式,执行“lxc-checkconfig”命令来检查。执行结果中应该都显示为“enabled”,如下图所示:

<pre name="code" class="plain">lxc-checkconfig
 
 


step3:创建容器实例lxc-test

创建名为lxc-test的实例容器,采用宿主机ubuntu14.04为模板(默认采用宿主机为模板)。执行命令如下:

<pre name="code" class="plain">sudo lxc-create -t ubuntu -n lxc-test
 
 其中-t参数表示创建的虚拟机模板的名称,-n表示创建的虚假机的名称。更详细的参数可以查看相应的资料,这里不再说明。 
 

截取部分执行结果如下,其中注意倒数第二行的用户名“ubuntu”和密码“ubuntu”,接下来的操作会用到:


step4:管理LXC容器

1.查看容器状态

通过“sudo lxc-ls --fancy”命令可以查看容器的列表和状态,命令如下:

<pre name="code" class="plain">sudo lxc-ls --fancy
 
 

执行结果如下图:

我们已经创建了名为lxc-test的容器实例,但此处仍未启动。

值得提醒的是,命令中一定要采用sudo,否则会出现以下错误结果,但并不会有错误信息。



2.启动容器

通过“lxc-start -n”命令可以启动容器,命令如下:

<pre name="code" class="plain">sudo lxc-start -n lxc-test -d
 
 其中-d表示以守护进程的方式启动lxc,再次不做详细说明。执行后若无任何提示,表明启动成功,此时再查看容器状态,如下图所示: 
 

其中state状态变为RUNNNING,并且分配了IP地址


3.访问容器控制台

“访问容器控制台”相当于进入容器系统的终端,所用命令如下:

sudo lxc-console -n lxc-test
执行结果是跳至新的界面,如下图所示:

此时需要输入帐号和密码,也即是step3中所提到的“ubuntu”(帐号)和“ubuntu”(密码),输入成功后进入以下界面:


这个界面是不是很像我们的Linux命令行。。。

小插曲:在此,我们可以使用uname -a对比容器实例和宿主机的内核参数,这一步不是必须的,只是为了加深对容器的理解。

宿主机和lxc中信息分别如下面两张图。对比之后发现,除去用户名不同,其他的内核信息是完全一样的,连内核安装的时间都相同,这充分表明二者是使用同一个内核。

退出lxc控制台为:<Ctrl+a q>组合键


4.停止和销毁容器

停止容器的命令为:

sudo lxc-stop -n lxc-test

销毁容器的命令为:

sudo lxc-destroy -n lxc-test
销毁容器后我们再查看容器状态,发现容器状态列表为空:


step5:在容器中搭建tomcat

首先需要下载jdk和tomcat,这里我们下载的版本为jdk-8u40-linux-x64.tar.gz和apache-tomcat-8.0.21.tar.gz。

1.创建java文件夹

我们选择在/var/lib/lxc/lxc-test/rootfs/usr/local目录下创建java文件夹,因为lxc有权限限制,必须采用sudo命令,如下所示:

sudo mkdir /var/lib/lxc/lxc-test/rootfs/usr/local/java
需要说明的是:其中rootfs目录相当于容器中的根目录。

想要查看java文件夹是否创建成功,不能直接采用sudo cd的命令,而必须转换为root帐号。


2.解压jdk和tomcat到java文件夹

具体的解压命令查看相应的文档,在此不细说。方便起见,我们将apache-tomcat-8.0.21重命名为tomcat,将jdk1.8.0_40重命名为jdk,得到如下文件:


3.配置环境变量

配置环境变量需要访问容器控制台(当然也可以在host下使用root用户,但目录太长),此后就可以想像为在普通的host系统中进行操作。

修改/etc/profile文件配置环境变量,在文件的最后加上jre和tomcat的路径如下:

<pre name="code" class="plain">export JAVA_HOME=/usr/local/java/jdk
export CATALINA_HOME=/usr/local/java/tomcat
export TOMCAT_HOME=/usr/local/java/tomcat
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:${CATALINA_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH:${CATALINA_HOME}/bin
 
 保存后执行以下命令以立即生效: 
 

source /etc/profile
打印环境变量PATH,看新加入的jdk路径是否生效:


4.启动tomcat服务器

命令如下:

sudo sh /usr/local/java/tomcat/bin/startup.sh

1)若选择的jdk版本和tomcat版本合适,或者人品比较好,此时应该显示tomcat启动成功。

2)但往往是会遇到问题的,报出错误如下所示:

错误的意思是说,没有检测到JAVA_HOME和JRE_HOME的环境变量,但单独打印这两个环境变量又都是存在的。怪怪怪。。。。。

查看一些资料,说是因为jdk和tomcat的版本不符合,具体原因感觉有些复杂,在此不深究。网上的大牛提供了一些解决方案,但貌似大多数对我来说并不可用。

经亲测,提供其中一种可用的解决方法:

修改/usr/local/java/tomcat/bin目录下的catalina.sh文件,命令如下:

sudo vim catalina.sh
在第98行左右增加环境变量,如下所示:

export JAVA_HOME=/usr/local/java/jdk
export JRE_HOME=/usr/local/java/jdk/jre

然后开启tomcat服务器,提示“success”!!!

使用netstat命令查看8080端口的开启情况如下,显示已开启:



5.补充说明

网上的一些资料说,还可以通过host的浏览器输入网址:http://localhost:8080 查看是否出现tomcat的欢迎界面。。亲测这是不可行的。

分析原理知道,LXC和host只是共用一个内核,而浏览器并不是共用的,也就不能在host中的浏览器通过localhost访问LXC。。


参考博客链接:

http://os.51cto.com/art/201312/423771.htm

http://blog.csdn.net/alle170257702/article/details/4637343

http://blog.sina.com.cn/s/blog_61c006ea0100l1u6.html

http://os.51cto.com/art/201411/457319.htm




猜你喜欢

转载自blog.csdn.net/u014633283/article/details/44827469