centos7 tomcat_Docker的Centos7容器配置Tomcat和MySQL並打成基礎映象
技術標籤:centos7 tomcatcentos7 執行 jarcentos7啟動root賬戶centos7安裝mysql5.7centos7安裝tomcatcentos7密碼正確卻登陸失敗
下載centos7映象
dockerpull centos
進入docker中的CentOS7
docker run -itcentos /bin/bash
安裝解壓程式
yum install-y unzip zip
安裝 libaio
yum install libaio*yum -y install numactl.x86_64
安裝weget
yum -y install wget
安裝JDK
安裝JAVA
系統自帶的java沒有jps命令
rpm -ivh jdk-8u171-linux-x64.rpm
預設安裝路徑為:
cd /usr/java/jdk1.8.0_171-amd64
配置JAVA環境變數
vim /etc/profile
#JDK環境變數
export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport PATH=$JAVA_HOME/bin:$PATH
使配置立即生效
source /etc/profile
安裝Tomcat
給tomcat資料夾下所有.sh 檔案賦予許可權
chmod 777 *.sh
在auto_service.sh檔案中新增啟動
sh /home/dmiaes/apache-tomcat-8.5.32/bin/startup.sh
CentOS7 yum方式安裝MySQL5.7
安裝weget
yum -yinstall wget
1.下載並安裝MySQL官方的Yum Repository
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
使用上面的命令就直接下載了安裝用的Yum Repository,大概25KB的樣子,然後就可以直接yum安裝了。
yum -y install mysql57-community-release-el7-10.noarch.rpm
之後就開始安裝MySQL伺服器。
yum -y install mysql-community-server
這步可能會花些時間,安裝完成後及完成mysql安裝。
2.MySQL資料庫設定
首先啟動MySQL
systemctl start mysqld.service
檢視MySQL執行狀態,執行狀態如圖:
systemctl status mysqld.service
此時MySQL已經開始正常執行,不過要想進入MySQL還得先找出此時root使用者的密碼,通過如下命令可以在日誌檔案中找出密碼:
grep "password" /var/log/mysqld.log
如下命令進入資料庫:
mysql -uroot -p
輸入初始密碼,此時不能做任何事情,因為MySQL預設必須修改密碼之後才能操作資料庫:
mysql> ALTERUSER 'root'@'localhost' IDENTIFIED BY 'new password';
注意密碼需要比較複雜,否則提示Error 1219錯誤
配置mysql允許遠端登入
mysql> usemysql;mysql> grantall privileges on *.* to [email protected]'%' identified by "登入密碼";mysql> flush privileges;
MySQL5.7建立使用者和允許遠端登入
CREATE USER 'admin'IDENTIFIED BY "prdIR924KDFkdf";grant all privilegeson *.* to 'admin' identified by 'prdIR924KDFkdf';flush privileges;
My.cnf目標
/etc/my.cnf
配置不區分大小寫
# 0 :區分大小寫, 1 :不區分大小寫
lower_case_table_names=1
最終測試
dockerrun-d--privileged-p8080:8080-p3306:3306-p10022:22-itcentos_test6/usr/sbin/init
注意--privileged不能少,加了他進入容器裡面的使用者才是真正意義的root,否則只是普通root賬戶。
docker 使用中遇到的問題記錄:
cgroups: cannot findcgroup mount destination: unknown.
使用docker-machine sshdefault 進入虛擬機器。
docker -machine sshdefaultsudo mkdir /sys/fs/cgroup/systemdsudomount-tcgroup-onone,name=systemdcgroup/sys/fs/cgroup/systemd
服務隨容器啟動而自啟動並具備註冊服務的許可權
使用/home/auto_service.sh這種自啟動方式弊端是不能使用/usr/sbin/init了,為了解決這個問題我們需要知道/usr/sbin/init幹了什麼,具體解釋如下。理解其原理後我們可以在rc.local檔案中新增我們自定義的啟動執行的指令碼,具體如下。然後我們就能使用如下命令執行我們的指令碼了,這樣在容器裡就能使用服務啟動了,避免了Failed to get D-Bus connection:Operation not permitted的錯誤,也能執行我們自定義啟動指令碼。
dockerrun-d--privileged-p8080:8080-p3306:3306-p10022:22-itcentos_test6/usr/sbin/init
注意--privileged不能少,加了他進入容器裡面的使用者才是真正意義的root,否則只是普通root賬戶。
測試看是否還報Failed to get D-Bus connection: Operation notpermitted錯誤
systemctl status firewalld.service
linux新增開機自啟動指令碼示例詳解
載入核心順序
執行init程式
/etc/rc.d/rc.sysinit # 由init執行的第一個指令碼/etc/rc.d/rc$RUNLEVEL#$RUNLEVEL為預設的執行模式/etc/rc.d/rc.local
#相應級別服務啟動之後、在執行該檔案(其實也可以把需要執行的命令寫到該檔案中)
/sbin/mingetty # 等待使用者登入
init 是Linux系統操作中不可缺少的程式之一。所謂的init程序,它是一個由核心啟動的使用者級程序,核心自行啟動(已經被載入記憶體,開始執行,並已初始化所有的裝置驅動程式和資料結構等)之後,就通過啟動一個使用者級程式init的方式,完成引導程序。所以,init始終是第一個程序(其程序編號始終為1)。
核心會在過去曾使用過init 的幾個地方查詢它,它的正確位置(對Linux系統來說)是/sbin/init,如果核心找不到init,它就會試著執行/bin/sh,如果執行失敗,系統的啟動也會失敗。
Centos7開機啟動自己的指令碼的方法
1. 自己新建一個指令碼,如auto_run.sh
經過後面的幾個步驟後,這個指令碼在開機的時候會執行,在這個腳本里面可以寫你開機的時候想執行的命令,如啟動tomcat,oracle等服務
2. 在指令碼中輸入啟動服務的命令,如(開機啟動tomcat):
#!/bin/bash
export JDK_HOME=/home/java/jdk1.8.0_91export JAVA_HOME=/home/java/jdk1.8.0_91sh /home/apache-tomcat-8.5.32/bin/startup.sh
3. 執行如下命令,將該指令碼標記為可執行檔案(新增可執行的許可權)
chmod +x /home/auto_run.sh
4. 執行如下命令將/etc/rc.d/rc.local文標記為可執行檔案
在centos7中,/etc/rc.d/rc.local檔案的許可權被降低了,開機的時候執行在自己的指令碼是不能起動一些服務的,執行下面的命令可以檔案標記為可執行的檔案
chmod +x /etc/rc.d/rc.local
5. 開啟/etc/rc.d/rc.local檔案,
vi /etc/rc.d/rc.local
在最後面新增如下指令碼
/home/auto_run.sh
這樣,auto_run.sh這個指令碼在開機的時候就會被執行了,以後再這裡面寫啟動服務的命令就可以了。
注意:auto_run.sh檔案為自定義需要開機啟動的程式,只能為.sh的程式,否則請使用安裝服務的方式進行自啟動。
Redis安裝
準備(安裝gcc)
yum -y install gccautomake autoconf libtool make
安裝:
$ wget http://download.redis.io/releases/redis-3.0.7.tar.gz$ tar xzfredis-3.0.7.tar.gz$ cd redis-3.0.7$ make
設定密碼:redis.conf 檔案中設定,requirepass test2019
啟動:
以指定配置檔案啟動
$ src/redis-serverredis.conf
安裝redis服務
測試
cd C:\redis-x64-2.8redis-cli -h192.168.99.100-p6379-a"houli2015"