Linux運維-day58-tomcat與阿里云

一、tomcat

1.1 tomcat LNMT ※※※

網站代碼

PHP---LNMP
Java----LNMP

1.2 JVM

  • Windows版本的QQ放到Linux是否可以運行?不能
  • 代碼的可移植性:1份代碼可以運行在不同的系統中
  • JAVA程序 會被放在1個叫虛擬機容器
  • JVM(Java Virtual Machine):Java虛擬機,運行Java程序,1份代碼處處使用
1.2.1 JVM的核心環境---->jdk+tomcat
  • JDK(Java Development Kit):Java程序運行環境
  • tomcat(nginx)存放Java程序代碼

1.3 準備jdk和tomcat環境

1.3.1 環境準備

在阿里云購買一臺 ecs云服務器,做下簡單的優化,安裝基礎必備軟件

yum install -y tree vim wget bash-completion bash-completion-extras lrzsz net-tools sysstat iotop iftop htop unzip nc nmap telnet bc psmisc ntpdate cowsay sl sshpass pssh bind-utils

1.3.2 準備jdk環境(ecs云服務器上)

先上傳tomcat大禮包到/app/tools下,然后進行如下操作

[root@tomcat /app/tools]# unzip tomcat.zip 
[root@tomcat /app/tools]# cd tomcat/
[root@tomcat /app/tools/tomcat]# tar xf jdk-8u60-linux-x64.tar.gz
[root@tomcat /app/tools/tomcat]# mkdir -p /application
[root@tomcat /app/tools/tomcat]# mv jdk1.8.0_60/ /application/
[root@tomcat /app/tools/tomcat]# ll /application/
total 4
drwxr-xr-x 8 10 143 4096 Aug  5  2015 jdk1.8.0_60
[root@tomcat /app/tools/tomcat]# ln -s /application/jdk1.8.0_60/ /application/jdk
[root@tomcat /app/tools/tomcat]# ll /application/
total 4
lrwxrwxrwx 1 root root   25 Jul  5 09:35 jdk -> /application/jdk1.8.0_60/
drwxr-xr-x 8   10  143 4096 Aug  5  2015 jdk1.8.0_60
[root@tomcat /app/tools/tomcat]# 
1.3.3 配置JDK環境變量(為了方便)
[root@tomcat /app/tools/tomcat]# cat >>/etc/profile<<'EOF'   
> export JAVA_HOME=/application/jdk
> export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
> export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/
> EOF
[root@tomcat /app/tools/tomcat]# source /etc/profile
[root@tomcat /app/tools/tomcat]# java -version  \\驗證
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)

注:當前使用的JDK有兩種:

Oracle JDK(目前)
OpenJDK

1.3.4 部署Tomcat

Tomcat 是Apache軟件基金會中的一個開源軟件(tomcat.apache.org)
Apache對應的web服務是httpd

[root@tomcat /app/tools/tomcat]# tar xf apache-tomcat-8.0.27.tar.gz 
[root@tomcat /app/tools/tomcat]# mv apache-tomcat-8.0.27 /application/
[root@tomcat /app/tools/tomcat]# ln -s /application/apache-tomcat-8.0.27/ /application/tomcat
[root@tomcat /app/tools/tomcat]# ll /application/
total 8
drwxr-xr-x 9 root root 4096 Jul  5 09:42 apache-tomcat-8.0.27
lrwxrwxrwx 1 root root   25 Jul  5 09:35 jdk -> /application/jdk1.8.0_60/
drwxr-xr-x 8   10  143 4096 Aug  5  2015 jdk1.8.0_60
lrwxrwxrwx 1 root root   34 Jul  5 10:22 tomcat -> /application/apache-tomcat-8.0.27/
[root@tomcat /app/tools/tomcat]# echo "export TOMCAT_HOME=/application
[root@tomcat /app/tools/tomcat]# tail -1 /etc/profile
export TOMCAT_HOME=/application/tomcat
[root@tomcat /app/tools/tomcat]# source /etc/profile
1.3.5 檢測 tomcat jdk環境變量是否ok
[root@tomcat /app/tools/tomcat]# /application/tomcat/bin/version.sh 
Using CATALINA_BASE:   /application/tomcat
Using CATALINA_HOME:   /application/tomcat
Using CATALINA_TMPDIR: /application/tomcat/temp
Using JRE_HOME:        /application/jdk
Using CLASSPATH:       /application/tomcat/bin/bootstrap.jar:/application/tomcat/bin/tomcat-juli.jar
Server version: Apache Tomcat/8.0.27
Server built:   Sep 28 2015 08:17:25 UTC
Server number:  8.0.27.0
OS Name:        Linux
OS Version:     3.10.0-957.21.3.el7.x86_64
Architecture:   amd64
JVM Version:    1.8.0_60-b27
JVM Vendor:     Oracle Corporation
[root@tomcat /app/tools/tomcat]# 
1.3.6 啟動tomcat
[root@tomcat /app/tools/tomcat]# /application/tomcat/bin/startup.sh 
Using CATALINA_BASE:   /application/tomcat
Using CATALINA_HOME:   /application/tomcat
Using CATALINA_TMPDIR: /application/tomcat/temp
Using JRE_HOME:        /application/jdk
Using CLASSPATH:       /application/tomcat/bin/bootstrap.jar:/application/tomcat/bin/tomcat-juli.jar
Tomcat started.
1.3.7 查看進程、檢查端口
[root@tomcat /app/tools/tomcat]# ss -lntup|grep java
tcp    LISTEN     0      1      127.0.0.1:8005                  *:*                   users:(("java",pid=13622,fd=67))
tcp    LISTEN     0      100       *:8009                  *:*                   users:(("java",pid=13622,fd=51))
tcp    LISTEN     0      100       *:8080                  *:*                   users:(("java",pid=13622,fd=46))
[root@tomcat /app/tools/tomcat]# ps -ef|grep java
root     13622     1  6 10:29 pts/1    00:00:02 /application/jdk/bin/java -Djava.util.logging.config.file=/application/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/application/tomcat/endorsed -classpath /application/tomcat/bin/bootstrap.jar:/application/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/application/tomcat -Dcatalina.home=/application/tomcat -Djava.io.tmpdir=/application/tomcat/temp org.apache.catalina.startup.Bootstrap start
root     13661 13307  0 10:29 pts/1    00:00:00 grep --color=auto java
[root@tomcat /app/tools/tomcat]# 
1.3.8 瀏覽器檢查

注:tomcat默認的端口是8080,如果你的環境是云服務器,必須配置8080的安全組,瀏覽器才能正常顯示



1.4 tomcat目錄結構

[root@tomcat /application/tomcat]# ll
total 112
drwxr-xr-x 2 root root  4096 Jul  5 09:42 bin  ##主要存放命令,核心的命令有startup.sh(開)、shutdown.sh(關)、catalina.sh
drwxr-xr-x 3 root root  4096 Jul  5 10:29 conf  ##存放配置文件,核心配置:server.xml
drwxr-xr-x 2 root root  4096 Jul  5 09:42 lib  #tomcat以后安裝的插件(庫文件)
-rw-r--r-- 1 root root 57011 Sep 28  2015 LICENSE
drwxr-xr-x 2 root root  4096 Jul  5 10:29 logs  #日志
-rw-r--r-- 1 root root  1444 Sep 28  2015 NOTICE
-rw-r--r-- 1 root root  6741 Sep 28  2015 RELEASE-NOTES
-rw-r--r-- 1 root root 16204 Sep 28  2015 RUNNING.txt
drwxr-xr-x 2 root root  4096 Jul  5 09:42 temp
drwxr-xr-x 7 root root  4096 Sep 28  2015 webapps  #類似于nginx的站點目錄
drwxr-xr-x 3 root root  4096 Jul  5 10:29 work
[root@tomcat /application/tomcat]# 
1.4.1 bin(主要存放命令)

1>catalina.sh

  • 是shutdow.sh和startup.sh調用的時候,背后都在調用catalina.sh
  • 修改tomcat參數、修改,修改這個文件
    2>startup.sh
    3>shutdown.sh #關閉tomcat之后,一定要檢查端口和進程,是否關閉
1.4.2 conf(存放配置文件)

properties 屬性 [?prɑp?rtiz]

1>server.xml :主配置文件,相當于nginx.conf ※ ※ ※
2>web.xml:配置擴展功能、額外功能
3>logging.properties:日志的一些屬性
4>tomcat-users.xml:tomcat管理端用戶和密碼的配置文件,用于測試環境;生產環境,禁止使用。

1.4.3 logs

Destroying 毀滅
startup 啟動
error 錯誤
1>catalina.out ※ ※ ※
tomcat最核心的日志,這個日志默認會被輪詢(定時切割),切割之后catalina.out日志內容不會被切割
2>catalina.2019-7-5.log #中間日期,是catalina.out的切割日志
3>localhost_access_log.2019-07-05.txt #訪問日志

1.5 配置tomcat管理端

  • 開頭字符集
  • 注釋:在xml格式中
  • rolename 角色(admin-gui、manager-gui、host-gui)

1.5.1 配置tomcat-users.xml

[root@oldboy /application/tomcat]# cat conf/tomcat-users.xml 
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users xmlns="http://tomcat.apache.org/xml"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
              version="1.0">
  <role rolename="admin-gui"/>
  <role rolename="manager-gui"/>
  <role rolename="host-gui"/>
  <user username="oldboy" password="oldboy" roles="admin-gui,manager-gui,host-gui"/>
</tomcat-users>

1.5.2 重啟tomcat使配置生效

[root@tomcat /application/tomcat]# /application/tomcat/bin/shutdown.sh 
Using CATALINA_BASE:   /application/tomcat
Using CATALINA_HOME:   /application/tomcat
Using CATALINA_TMPDIR: /application/tomcat/temp
Using JRE_HOME:        /application/jdk
Using CLASSPATH:       /application/tomcat/bin/bootstrap.jar:/application/tomcat/bin/tomcat-juli.jar
[root@tomcat ~]# ps -ef|grep java
root      6305  6261  0 10:13 pts/0    00:00:00 grep --color=auto java
[root@tomcat ~]# ss -lntup|grep java
[root@tomcat /application/tomcat]# /application/tomcat/bin/startup.sh 
Using CATALINA_BASE:   /application/tomcat
Using CATALINA_HOME:   /application/tomcat
Using CATALINA_TMPDIR: /application/tomcat/temp
Using JRE_HOME:        /application/jdk
Using CLASSPATH:       /application/tomcat/bin/bootstrap.jar:/application/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@tomcat /application/tomcat]# 

1.6 tomcat的主配置文件server.xml

  • 8080 http協議的端口
  • 8005 shutdown端口,telnet連接上這個端口,輸入SHUTDOWN暗號,關閉tomcat,比較危險,估默認只能本地連接8005端口
    <Server port="8005" shutdown="1 SHUTDOWN">
    
  • 管理端存放用戶名密碼的文件及存放方式
    <Resource name="UserDatabase" auth="Container"
         type="org.apache.catalina.UserDatabase"
         description="User database that can be updated and saved"
         factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
         pathname="conf/tomcat-users.xml" />
    
  • 指定http協議的端口,https用8443端口
    <Connector port="8080" protocol="HTTP/1.1"
    connectionTimeout="20000"   #超時時間,默認毫秒
    redirectPort="8443" />
    
  • 8008 AJP與Apache進行通訊用的
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
    
  • 從<Host開始到</Host>結束,相當于nginx中server虛擬機主機
Tomcat Nginx
Host name="localhost" server_name 域名
appBase="webapps" root 站點目錄
  • unpackWARs="true" #自動解壓 app.war
  • autoDeploy="true" #Deploy 部署 自動加載到tomcat
          <Host name="localhost"  appBase="webapps"
                unpackWARs="true" autoDeploy="true">
    
            <!-- SingleSignOn valve, share authentication between web applications
                 Documentation at: /docs/config/valve.html -->
            <!--
            <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
            -->
    
            <!-- Access log processes all example.
                 Documentation at: /docs/config/valve.html
                 Note: The pattern used is equivalent to using pattern="common" -->
            <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
                   prefix="localhost_access_log" suffix=".txt"
                   pattern="%h %l %u %t &quot;%r&quot; %s %b" /> #指定日志的文件和日志內容的格式
    
          </Host>
    

1.7 Tomcat部署app(應用)

1.7.1 準備數據庫

1>安裝mariadb-server

[root@tomcat ~]# yum install -y  mariadb-server

2>啟動mariadb,并設置開機自啟

[root@tomcat ~]# systemctl start mariadb.service 
[root@tomcat ~]# systemctl enable mariadb.service 
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
[root@tomcat ~]# 

3>進入數據庫,創建數據庫和用戶

[root@tomcat ~]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.60-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

4>創建jpress數據庫

MariaDB [(none)]> create database jpress DEFAULT CHARACTER SET utf8;
Query OK, 1 row affected (0.00 sec)

5>查看jpress數據庫是否創建成功

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| jpress             |
| mysql              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.00 sec)

6>創建用戶,并查看

MariaDB [(none)]> grant all on jpress.* to jpress@'localhost' identified by '123456';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> grant all on jpress.* to jpress@'172.16.%.%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> select user,host from mysql.user;
+--------+------------+
| user   | host       |
+--------+------------+
| root   | 127.0.0.1  |
| jpress | 172.16.%.% |
| root   | ::1        |
|        | localhost  |
| jpress | localhost  |
| root   | localhost  |
|        | tomcat     |
| root   | tomcat     |
+--------+------------+
8 rows in set (0.00 sec)

7>刪除為空的用戶

MariaDB [(none)]> drop user ''@localhost;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> drop user ''@tomcat;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> select user,host from mysql.user;
+--------+------------+
| user   | host       |
+--------+------------+
| root   | 127.0.0.1  |
| jpress | 172.16.%.% |
| root   | ::1        |
| jpress | localhost  |
| root   | localhost  |
| root   | tomcat     |
+--------+------------+
6 rows in set (0.00 sec)

MariaDB [(none)]> 
MariaDB [(none)]> Bye
[root@tomcat ~]# 

8>測試數據庫

[root@tomcat ~]# mysql -ujpress -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 4
Server version: 5.5.60-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> Bye
[root@tomcat ~]# 

擴展 mysql -e 參數 非交互式執行SQL語句

[root@tomcat ~]# mysql -ujpress -p -e 'select user,host from mysql.user;'
Enter password: 
ERROR 1142 (42000) at line 1: SELECT command denied to user 'jpress'@'localhost' for table 'user'
[root@tomcat ~]# mysql -ujpress -p -e 'select user();'
Enter password: 
+------------------+
| user()           |
+------------------+
| jpress@localhost |
+------------------+
[root@tomcat ~]# 
1.7.2 準備app(war包)

1>首先移動war包到站點目錄,并重命名

##首先移動war包到站點目錄,并重命名
[root@tomcat /app/tools/tomcat]# mv jpress-web-newest.war /application/tomcat/webapps/jpress.war
[root@tomcat /app/tools/tomcat]# ll /application/tomcat/webapps/
total 20336
drwxr-xr-x 14 root root     4096 Jul  5 09:42 docs
drwxr-xr-x  6 root root     4096 Jul  5 09:42 examples
drwxr-xr-x  5 root root     4096 Jul  5 09:42 host-manager
drwxr-xr-x  7 root root     4096 Jul  5 12:43 jpress
-rw-r--r--  1 root root 20797013 Mar  3  2017 jpress.war
drwxr-xr-x  5 root root     4096 Jul  5 09:42 manager
drwxr-xr-x  3 root root     4096 Jul  5 09:42 ROOT
[root@tomcat /app/tools/tomcat]# 

2>在瀏覽器輸入http://47.92.92.94:8080/jpress/install安裝網站(注:這里的ip是我購買ecs自己分配的,每個每個人的不一樣





安裝完成之后需要重啟tomcat

[root@tomcat /app/tools/tomcat]# pkill java  #注:pkill java會將虛擬機中的所有Java進程都殺掉,如果你的虛擬機中有多個tomcat的話,請慎用;可以用/application/tomcat/bin/shutdown.sh
#停止tomcat進程之后一定要檢查進程和端口是否都已經沒有了,一定要保證都沒有了
[root@tomcat /app/tools/tomcat]# ps -ef|grep java  
root     14452 13307  0 13:02 pts/1    00:00:00 grep --color=auto java
[root@tomcat /app/tools/tomcat]# ss -lntup|grep java
[root@tomcat /app/tools/tomcat]# /application/tomcat/bin/startup.sh 
Using CATALINA_BASE:   /application/tomcat
Using CATALINA_HOME:   /application/tomcat
Using CATALINA_TMPDIR: /application/tomcat/temp
Using JRE_HOME:        /application/jdk
Using CLASSPATH:       /application/tomcat/bin/bootstrap.jar:/application/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@tomcat /app/tools/tomcat]# 

重啟tomcat之后就可以正常訪問網站了


網站地址:http://47.92.92.94:8080/jpress/
網站后臺地址:http://47.92.92.94:8080/jpress/admin/login
注:以上的數據庫在本地,要改為遠程服務器的修改db.properties文件就行

[root@tomcat /application/tomcat/webapps/jpress/WEB-INF/classes]# cat db.properties 
#Auto create by JPress
#Fri Jul 05 13:01:50 CST 2019
db_name=jpress
db_host_port=3306
db_tablePrefix=jpress_
db_host=localhost
db_password=*****
db_user=*****

溫馨提示:

  • 關閉Tomcat之后一定要檢查端口和進程是否完全關閉
  • 如果沒有完全關閉,會導致再啟動tomcat時,會有大量的日志在catalina.out中,而且增加的非常快,最終會導致磁盤滿了

1.8 Tomcat與負載均衡

1個tomcat存放1個app
1個tomcat存放1個app
比如有2臺負載均衡,前面就必須要有個負載均衡

upstream
proxy

upstream app_pools {
server 10.0.0.7:8080;
server 10.0.0.7:8081;
server 10.0.0.7:8082;
server 10.0.0.8:8080;
}

1.9 Tomcat多實例

比如:有一臺機器,配置(1臺服務器 4路 志強金牌 2TB 16*600G sas 15k),在這臺機器上多運行幾個tomcat,并且端口不一樣

1.10 tomcat監控

1.10.1 命令行檢查

1>查看進程信息

[root@tomcat /application/tomcat/webapps/jpress/WEB-INF/classes]# ps -ef|grep java
root     14463     1  0 13:02 pts/1    00:00:19 /application/jdk/bin/java #Java命令本身
    -Djava.util.logging.config.file=/application/tomcat/conf/logging.properties #指定日志配置文件
    -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager 
    -Djava.endorsed.dirs=/application/tomcat/endorsed 
    -classpath /application/tomcat/bin/bootstrap.jar:/application/tomcat/bin/tomcat-juli.jar 
    -Dcatalina.base=/application/tomcat -Dcatalina.home=/application/tomcat  #tomcat軟件的目錄
    -Djava.io.tmpdir=/application/tomcat/temp org.apache.catalina.startup.Bootstrap #臨時目錄
    start

如果要在上面添加一些參數,修改的文件是catalina.sh
2>jps -lvm #專門檢查Java進程

[root@tomcat /application/tomcat/bin]# jps -lvm
16744 org.apache.catalina.startup.Bootstrap start -
Djava.util.logging.config.file=/application/tomcat/conf/logging.properties -
Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -
Djava.endorsed.dirs=/application/tomcat/endorsed -
Dcatalina.base=/application/tomcat -Dcatalina.home=/application/tomcat -
Djava.io.tmpdir=/application/tomcat/temp
16813 sun.tools.jps.Jps -lvm -
Denv.class.path=.:/application/jdk/lib:/application/jdk/jre/lib:/application/
jdk/lib/tools.jar -Dapplication.home=/application/jdk1.8.0_60 -Xms8m

3>show-busy-java-threads.sh #顯示當前系統中 java進程、負載、cpu 使用率較高

ps -ef 進程信息
進程 process pid,實際相當于房子或空間
線程 thread,實際是處理用戶請求
查看進程和線程的關系,pstree -pa

1.10.2 開啟tomcat監控

應用場景:是用于zabbix監控tomcat zabbix監控tomcat的方法之一
1>開啟監控功能,在catalina.sh中的第二行加入以下內容

CATALINA_OPTS="$CATALINA_OPTS
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=12345
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname=IP地址"

分別代表的意思:

CATALINA_OPTS="$CATALINA_OPTS .*"    #表示Java程序啟動的時候,增加的參數
-Dcom.sun.management.jmxremote       #開啟tomcat遠程監控功能
-Dcom.sun.management.jmxremote.port=12345    #指定端口,什么都行,別跟現有的沖突就行
-Dcom.sun.management.jmxremote.authenticate=false  #是否開啟認證模式(用戶名、密碼)
-Dcom.sun.management.jmxremote.ssl=false   #是否開啟https
-Djava.rmi.server.hostname=IP地址"     #監聽的地址(本地)。實際工作寫上服務器的內網ip地址;我們測試環境中,可以寫上服務器的公網ip

將上面的內容添加到catalina.sh中,然后重啟tomcat

[root@tomcat ~]# ss -lntup |grep java
[root@tomcat ~]# ss -lntup |grep java
tcp LISTEN 0 100 *:8009 : users:(("java",pid=17028,fd=54))
tcp LISTEN 0 50 *:34345 : users:(("java",pid=17028,fd=19))
tcp LISTEN 0 100 *:8080 : users:(("java",pid=17028,fd=50))
tcp LISTEN 0 50 *:33142 : users:(("java",pid=17028,fd=21))
tcp LISTEN 0 50 *:12345 : users:(("java",pid=17028,fd=20))

2>windows下面 通過java 命令 連接tomcat (模擬zabbix監控tomcat)

開發環境:jdk
命令1:jconsole
命令2:jvisualvm

二、云服務器

國內:阿里云、騰旭、華為
國外:aws(外企)

2.1 阿里云服務器的架構

2.2 專有名詞

專有名詞 含義
可用區 zone 同一地區的不同機房
地區 地域 region 不同的地方 上海 北京 杭州
實例 虛擬機
RDS 云數據庫
NAS和OSS的相同點和不同點:
  • 都是存放用戶上傳的附件
  • NAS是文件存儲,實現nfs共享存儲,價格比較貴
  • OSS是對象存儲。大容量、訪問頻率高/低
  • OSS的價格分為幾種:1>訪問頻率低、性能不高的就便宜點;2>要求實時性好、速度又快的就會貴點
  • OSS的使用,有兩種方法:
    • 1>把它真的的當對象存儲用,就是硬盤里的,當網盤用
    • 2>通過程序調用,就是在程序代碼里寫,只要用戶傳數據,就存到OSS

2.3 購買ECS云服務器,同1.3.1 ※※※

image.png

2.4 購買RDS云數據庫 (數據庫遷移)※※※

2.4.1 購買RDS云數據庫的過程:

1>在阿里云中搜索RDS進行創建實例,以下只是我的一個簡單的配置例子,每個人可以根據自己的情況進行選擇


2>購買好RDS云數據庫之后,因為暫時沒有ip地址,故無法連接,可以點擊圖中的任意一個進入下一個頁面,先設置白名單,就可以獲得RDS的內網地址

3>進入白名單列表頁面,添加或修改已有的都可以

注:設置的白名單可以是多個ip或多個網段,中間用英文的逗號隔開,也可以直接寫0.0.0.0/0,所有的ip都可以,但這個不安全,不建議設置。
4>白名單設置成功之后,就可以看到內網地址了(每個人的都不一樣)

5>上面的內網地址是域名,要想知道具體的內網ip地址,去xshell中ping下就知道了

這樣RDS云數據庫就買好了

2.4.2 數據庫遷移:

1>從ECS云服務器里導出備份jpress數據庫到/root目錄下

[root@tomcat ~]# mysqldump -ujpress -p -B jpress >/root/jpress.sql
Enter password: 
[root@tomcat ~]# ll
total 20
-rw-r--r-- 1 root root 17409 Jul  5 17:18 jpress.sql
[root@tomcat ~]# 

2>遠程進入購買的RDS云數據庫中創建空的jpress數據庫

[root@tomcat ~]# mysql -uwwj_mysql -p -h rm-8vbzbcm62xy92g82q.mysql.zhangbei.rds.aliyuncs.com
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 1997
Server version: 5.7.25-log Source distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> create database jpress  DEFAULT CHARACTER SET utf8;
Query OK, 1 row affected (0.00 sec)

MySQL [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| jpress             |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

MySQL [(none)]> show tables from jpress;
Empty set (0.00 sec)

MySQL [(none)]> 

3>把備份的jpress數據庫還原到RDS云數據庫上,并查看

[root@tomcat ~]# mysql -uwwj_mysql -p -h rm-8vbzbcm62xy92g82q.mysql.zhangbei.rds.aliyuncs.com </root/jpress.sql 
Enter password: 
[root@tomcat ~]# mysql -uwwj_mysql -p -h rm-8vbzbcm62xy92g82q.mysql.zhangbei.rds.aliyuncs.com
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 2096
Server version: 5.7.25-log Source distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> show tables from jpress;
+-------------------+
| Tables_in_jpress  |
+-------------------+
| jpress_attachment |
| jpress_comment    |
| jpress_content    |
| jpress_mapping    |
| jpress_metadata   |
| jpress_option     |
| jpress_taxonomy   |
| jpress_user       |
+-------------------+
8 rows in set (0.00 sec)

MySQL [(none)]>

4>停止ECS云服務器上的mysql服務

[root@tomcat ~]# systemctl stop mariadb.service 
[root@tomcat ~]# systemctl disable mariadb.service 
Removed symlink /etc/systemd/system/multi-user.target.wants/mariadb.service.
[root@tomcat ~]# 

5>修改數據庫配置

vim /application/tomcat/webapps/jpress/WEB-INF/classes/db.properties



6>重啟tomcat服務

[root@tomcat ~]# pkill java #或/application/tomcat/bin/shutdown.sh 
[root@tomcat ~]# ss -lntup|grep java
[root@tomcat ~]# ps -ef|grep java
root     15205 14908  0 17:32 pts/0    00:00:00 grep --color=auto java
[root@tomcat ~]# /application/tomcat/bin/startup.sh 
Using CATALINA_BASE:   /application/tomcat
Using CATALINA_HOME:   /application/tomcat
Using CATALINA_TMPDIR: /application/tomcat/temp
Using JRE_HOME:        /application/jdk
Using CLASSPATH:       /application/tomcat/bin/bootstrap.jar:/application/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@tomcat ~]# 

7>測試數據庫是否遷移成功
打開部署好的jpress網站,刷新查看網站是否正常,再在網站隨便寫個文章,遠程進入RDS云數據庫中,查看數據是否存在

2.5 購買文件存儲NAS (部署nfs存儲)※※※

2.5.1 購買文件存儲NAS的過程

1>在阿里云中搜索NAS,如圖:


2>創建文件系統

3>文件系統創建好之后,添加掛載點

4>點擊文件系統列表中管理進入詳細頁面,可以看到掛載地址或掛載命令

到這里NAS文件存儲系統就購買好了,下面就到ECS云服務器中進行掛載

2.5.1 ECS云服務器中安裝nfs-utils準備進行掛載

1>安裝nfs-utils,啟動nfs-utils服務,并設置開機自啟

[root@tomcat ~]# yum install -y nfs-utils
[root@tomcat ~]# systemctl start nfs-utils
[root@tomcat ~]# systemctl enable nfs-utils
[root@tomcat ~]# 

2>進行掛載測試

[root@tomcat ~]# mount -t nfs 9db184ad00-hrk84.cn-zhangjiakou.nas.aliyuncs.com:/ /mnt
[root@tomcat ~]# df -h
Filesystem                                          Size  Used Avail Use% Mounted on
/dev/vda1                                            40G  3.1G   35G   9% /
devtmpfs                                            909M     0  909M   0% /dev
tmpfs                                               920M     0  920M   0% /dev/shm
tmpfs                                               920M  456K  919M   1% /run
tmpfs                                               920M     0  920M   0% /sys/fs/cgroup
tmpfs                                               184M     0  184M   0% /run/user/0
9db184ad00-hrk84.cn-zhangjiakou.nas.aliyuncs.com:/  1.0P     0  1.0P   0% /mnt
[root@tomcat ~]# 

3>掛載點遷移

[root@tomcat ~]# mv /application/tomcat/webapps/jpress/attachment/* /mnt
[root@tomcat ~]# ll /application/tomcat/webapps/jpress/attachment/
total 0
[root@tomcat ~]# umount /mnt
[root@tomcat ~]# mount -t nfs 9db184ad00-hrk84.cn-zhangjiakou.nas.aliyuncs.com:/ /application/tomcat/webapps/jpress/attachment/
[root@tomcat ~]# df -h
Filesystem                                          Size  Used Avail Use% Mounted on
/dev/vda1                                            40G  3.1G   35G   9% /
devtmpfs                                            909M     0  909M   0% /dev
tmpfs                                               920M     0  920M   0% /dev/shm
tmpfs                                               920M  456K  919M   1% /run
tmpfs                                               920M     0  920M   0% /sys/fs/cgroup
tmpfs                                               184M     0  184M   0% /run/user/0
9db184ad00-hrk84.cn-zhangjiakou.nas.aliyuncs.com:/  1.0P     0  1.0P   0% /application/apache-tomcat-8.0.27/webapps/jpress/attachment
[root@tomcat ~]# 

2.6 目前只部署了一臺web服務器(ECS云服務器),如果要多臺,將上面部署好網站的web服務器先做快照和鏡像,再根據鏡像創建多臺web服務器就可以

注意:

  • 創建快照之前一定要檢查好這臺ECS云服務器里面的服務是否都設置開機自啟動,掛載是否永久掛載,否則后面根據鏡像創建的云服務器里面的服務都要單獨啟動,很麻煩
  • 永久掛載可以寫入到/etc/fstab中,也可以寫入/etc/rc.d/rc.local中
  • 對一些無法通過systemctl設置開機自啟動的服務,將他們的啟動方式寫入到/etc/rc.d/rc.local中
  • 如果寫入到/etc/rc.d/rc.local中,就必須給/etc/rc.d/rc.local這個文件添加可執行權限
[root@tomcat ~]# cat /etc/rc.d/rc.local 
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.

touch /var/lock/subsys/local
source /etc/profile   #注意:在啟動tomcat時,需要配置在/etc/profile中配置好環境變量,估這里需要source /etc/profile生效環境變量,否則無法啟動,也可以寫為: . /etc/profile
mount -t nfs 9db184ad00-hrk84.cn-zhangjiakou.nas.aliyuncs.com:/ /application/tomcat/webapps/jpress/attachment/
/application/tomcat/bin/startup.sh
[root@tomcat ~]# chmod +x /etc/rc.d/rc.local 
[root@tomcat ~]# ll /etc/rc.d/rc.local
-rwxr-xr-x 1 root root 619 Jul  5 18:21 /etc/rc.d/rc.local
[root@tomcat ~]# 

2.7 購買SLB負載均衡

2.7.1 購買SLB的過程

1>在阿里云中搜索SLB



2>創建負載均衡



3>選擇負載均衡的簡單配置(根據自己的情況來定)

4>購買好SLB負載均衡之后進行設置








到這里簡單的SLB云負載均衡就購買配置完成了
2.7.2 在兩臺web云服務器上簡單配置個頁面,然后在瀏覽器測試負載均衡
[root@tomcat ~]# echo web01   >/application/tomcat/webapps/ROOT/oldboy.jsp 
[root@tomcat ~]# 
[root@tomcat02 ~]# echo web02   >/application/tomcat/webapps/ROOT/oldboy.jsp
[root@tomcat02 ~]# 

測試方法:可以試著將其中一臺web服務器上的tomcat停掉,然后瀏覽器頁面查看是否還能正常顯示

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,401評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,011評論 3 413
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,263評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,543評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,323評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,874評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,968評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,095評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,605評論 1 331
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,551評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,720評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,242評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,961評論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,358評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,612評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,330評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,690評論 2 370

推薦閱讀更多精彩內容