運用VMware10.1搭建CentOS +Tomcat 筆記。本站提示廣大學習愛好者:(運用VMware10.1搭建CentOS +Tomcat 筆記)文章只能為提供參考,不一定能成為您想要的結果。以下是運用VMware10.1搭建CentOS +Tomcat 筆記正文
本以為裝個tomcat很容易,但是沒想到還是遇到了很多的問題,特此寫下這篇筆記,為其他有需求的同窗提供一些參考。
零碎環境:Windows7 + VMWare 11.0預備工具:CentOS 7裝置iso文件, apache tomcat以及JDK
操作步驟:
一、運用VMware裝置好CentOS零碎
這一步不作詳細敘說了,由於對大少數人來說太復雜。
二、設置共享文件夾
由於在離線形態下裝置,所以一些工具需求從宿主機的共享文件夾裡復制到虛擬機裡來,我采用的是設置共享文件夾的方式,不知道其他同窗有沒有更好的方式。但就是在設置這個共享文件夾的時分出了很多的問題。
我在裝置零碎的時分,零碎是默許自動裝置好VMtool的,但是不知道是什麼緣由,在我樹立共享文件夾後,在/mnt/hgfs下沒有我存好的文件。於是我在網上查找了緣由,有網友說是由於gcc版本需求晉級,但是我這是離線裝置,gcc版本晉級真實是不太好辦。於是我另想方法,決議重新裝置vmtools。在vmware選項裡選擇重新裝置vmtools,然後停止了以下步驟
1.mount /dev/cdrom /mnt/cdrom將vmtools掛載到cdrom文件夾
2.將cdrom中的VMTool的tar文件拷貝到本地磁盤,然後用tar -zxf VMTool 停止解壓
3.解壓之後運轉其中的.pl文件
4.呈現一些需求確認的問題,一路Enter
5.這時分問題來了,忽然提示HgfsWbRequestWait
函數裡有一個wait_on_bit
函數報錯,詳細的提示內容我沒有拷貝上去。然後提示你假如持續請按Enter鍵,之後裝置終了。看了一下hgfs文件夾,仍然空空如也。
6.用百度搜索了一些處理方法,根本斷定是vmtool的源代碼文件出了問題。這個文件的地位在之前解壓出來的vmware-tools-distrib/lib/modules/source目錄下的Page.c文件。
7.援用CSDN的博主kyolong的文章,鏈接——http://blog.csdn.net/a39206821/article/details/54313326
文中提到:
經過檢查後發現由於centos 7的Linux內核用的3.10版本,在函數 wait_on_bit_io()中有三個參數,而vmtool的代碼在內核3.19後才用3個參數的wait_on_bit_io()函數,代碼如下
1639 #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)
1640 return wait_on_bit_io(&req->wb_flags,
1641 PG_BUSY,
1642 TASK_UNINTERRUPTIBLE);
1643 #elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13)
1644 return wait_on_bit(&req->wb_flags,
1645 PG_BUSY,
1646 #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0)
1647 HgfsWbRequestWaitUninterruptible,
1648 #endif
1649 TASK_UNINTERRUPTIBLE);
1650 #else
團體揣測,在其他linux版本中能夠也會呈現類是的問題,只需看看報錯源碼,假如是由於#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0),這種判別形成的報錯,只需把宏改成以後的版本號,普通都能處理問題.
vmware-tools-distrib/lib/modules/source的目錄下有不少tar文件,我是依據報錯的提示
“/tmp/modconfig-71euqe/vmhgfs-only/page.c:1649:23: error: too many arguments to function ‘wait_on_bit’” 一個個去解壓了找的
解壓指令
tar xf vmhgfs.tar
修正目錄下的page文件的1639行
1639 #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)
改為如下↓
1639 #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 0)
解壓後修正完成打包指令
tar cf vmhgfs.tar vmhgfs-only
然後執行vmware-install.pl 問題處理
我依照這位博主的辦法找到了這個文件,發現第1639行並不是文中的代碼,而是一串長長的正文。於是我估量是版本的問題,我查了一下我運用的centos以及vmware的版本號,
uname -r 失掉centos內核版本是3.10.0-514.e17.x86_64
cat /etc/redhat-release ,零碎版本是 CentOS Linux release 7.3.1611 (Core)
Vmware版本是11.0.0 build-2305329
我又依據提示找到這個函數HgfsWbRequestWait
發現其實問題出在這
HgfsWbRequestWait(HgfsWbPage *req) // IN: request of page data to write { #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) return wait_on_bit(&req->wb_flags,PG_BUSY, #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0) HgfsWbRequestWaitUninterruptible, #endif TASK_UNINTERRUPTIBLE); #else wait_event(req->wb_quque, !test_bit(PG_BUSY, &req->wb_flags)); return 0; #endif }
在第1619行,我把
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) return wait_on_bit(&req->wb_flags,PG_BUSY, #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0) HgfsWbRequestWaitUninterruptible, #endif
改成了
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) return wait_on_bit(&req->wb_flags,PG_BUSY, HgfsWbRequestWaitUninterruptibl
TASK_UNINTERRUPTIBLE);
是的,我把這個大於3.17.0的版本判別去掉了。由於我真實不了解為什麼還要設置版本下限。
OK,打包緊縮包,重新裝置vmtool,沒有再呈現這個提示,再看看/mnt/hgfs文件夾,發現外面曾經有內容了。至此,用vmware共享文件夾終於完成。
三、裝置tomcat
全體上這一步還是比擬復雜的,但還是遇到了一個不測的問題。
1.裝置jdk1.8
Centos7默許自帶openjdk,但是大家還是習氣性地運用oracle的jdk,所以我去官網下載了最新的jdk版本,停止裝置。經過共享文件夾拷貝到本地磁盤,解壓、修正文件名,一切都是這麼流利和自然。
2.配置環境變量
由於之前將jdk的文件都放在了usr/local/java途徑下,所以我的配置方式如下:
運用vim /etc/profile
在末尾參加如下代碼
JAVA_HOME=/usr/local/java JRE_HOME=/usr/local/java/jre PATH=$JAVA_HOME/bin:$PATH CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JAVA_HOME export PATH export CLASSPATH
之後保管文件,輸出java -version 顯示出了版本號,假如版本號沒有變化試著重啟一下零碎就可以了。
這個進程非常復雜,但是之前不記得看了哪位仁兄寫的配置代碼修正了profile文件,後果配置錯誤招致所用零碎自帶的命令都無法運轉,提示command not found
檢查了這位仁兄的文章,有了一個自救的方法
誤改profile文件command not found 自救辦法
輸出
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
後,命令就可以正常運轉了,這時分趕快把profile改回來就可以了