1. 程式人生 > >Ubuntu的Java開發環境基本搭建(JDK+IDE+Tomcat+MySQL+Navicat)

Ubuntu的Java開發環境基本搭建(JDK+IDE+Tomcat+MySQL+Navicat)

前言

最近公司的電腦由於不明原因老是奔潰,重灌過兩次,在家裡也比較喜歡折騰系統,為了不用每次都度娘谷歌,記錄下來,一條龍走過。博主是搞爪哇開發的,那麼以下搭建針對的是爪哇環境開發

安裝JDK以及配置環境變數

通過Apt安裝

OpenJDK

JDK8:

sudo apt install openjdk-8-jdk

JDK9:

sudo apt install openjdk-9-jdk

JDK11:

sudo apt install openjdk-11-jdk

OracleJDK

sudo add-apt-repository ppa:webupd8team/java && sudo
apt update

JDK8:

sudo apt install oracle-java8-set-default

JDK9:

sudo apt install oracle-java9-set-default

手動安裝

安裝JDK

# 把jdk的檔案移動到 /usr/local/ 目錄下
sudo mv ~/jdk*.tar.gz /usr/local/
# 解壓檔案
cd /usr/local/
# sudo tar -zxvf jdk-8u101-linux-x64.tar.gz
# 建立軟連結
sudo ln -s jdk1.8.0_101 jdk

如需更換jdk,刪除舊版本的軟連結,重新建立軟連結指向新版即可

sudo rm -rf jdk
sudo ln -s jdk* jdk

配置環境變數

  • 放到 /usr/local 裡面的程式,建議使用系統變數。
  • 使用者變數
    ~/.profile 檔案是使用者的私有配置檔案
    ~/.bashrc 是在bash裡面使用的私有配置檔案,優先順序在 .profile 檔案之後
  • 系統變數
    /etc/profile 檔案是系統的公用配置檔案
    /etc/bash.bashrcbash專用的配置檔案,優先順序在 profile 檔案之後
  • 系統變數的配置,不建議修改前面說到的兩個檔案,而是建議在 /etc/profile.d/ 目錄下,建立一個 .sh 結尾 的檔案。
sudo vi /etc/profile.d/jdk.sh

環境變數的配置內容如下:

  1. 設定一個名為JAVA_HOME的變數,並且使用export命令匯出為環境變數, 如果不使用 export ,僅在當前shell裡面有效
export JAVA_HOME=/usr/local/jdk
  1. PATH不需要export,因為早在其他的地方,已經export過了!,\$JAVA_HOME 表示引用前面配置的 JAVA_HOME 變數,分隔符一定是冒號,Windows是分號,最後再引用原來的PATH的值
PATH=$JAVA_HOME/bin:$PATH
  1. 配置以後,可以重新登入讓配置生效,也可以使用source臨時載入配置檔案。使用source命令載入的配置,僅在當前shell有效,關閉以後失效。
source /etc/profile.d/jdk.sh
  1. 檢視jdk是否安裝成功,一下兩條命令成功則安裝成功
java -version
javac -version

安裝Scala環境

更上面安裝JDK類似

1、去 官網 下載最新地SDK

2、解壓到 /usr/local 目錄,並建立軟連結為 scala

3、在 /etc/profile.d 目錄下建立 scala.sh ,輸入以下資訊:

export SCALA_HOME=/usr/local/scala
PATH=$PATH:$SCALA_HOME/bin

4、檢視是否安裝成功

source /etc/profile.d/scala.sh
scala -version

安裝IDE

Eclipse

直接在 下載相關版本Eclipse
解壓

sudo tar zxvf eclipse-jee-mars-2-linux-gtk-x86_64.tar.gz -C ~/IDE

建立快捷方式
1. 在終端中執行如下命令

sudo gedit /usr/share/applications/eclipse.desktop

2. 貼上並儲存如下內容(注意更改相應的名字和目錄)

[Desktop Entry] 
Name=Eclipse Mars.2 
Type=Application 
Exec=/home/ybd/IDE/eclipse 
Terminal=false 
Icon=/home/ybd/IDE/icon.xpm 
Comment=Integrated Development Environment 
NoDisplay=false 
Categories=Development;IDE; 
Name[en]=Eclipse Mars.2

通用設定
window → preferences →
* 設定字型:general → appearance → color and font → basic → text font
* 編輯器背景顏色:general → editors → text editors → background color → RGB:85,123,208,#C7EDCC
* 工作空間字元編碼:general → workspace
* 作者簽名:java → code style → code templates → types 簽名快捷鍵:alt + shift + j

MyEclipse

IntelliJ IDEA

新公司好多大牛,用的都是IDEA,於是乎“近墨者黑”,那麼既然有機會跟大牛接觸,我也開始真正意義上的學習IDEA了

安裝

啟用

博主使用授權伺服器,可以自己搭建,詳情請看 這裡

部署Tomcat

若是伺服器版切換root使用者解壓到 /opt/ 或者 /usr/local/
直接執行tomcat目錄下bin/start.sh即可開啟,前提是配置好JDK

桌面版個人使用就解壓到/home/{user}目錄下就可以了

安裝MySQL以及GUI工具

基於Docker安裝

拉取映象

docker pull mysql:5.7

執行例項

MYSQL=/home/ybd/data/docker/mysql && \
docker run --name=mysql -p 3306:3306  \
-v $MYSQL/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root -d mysql \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci \
--sql-mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION \
--lower-case-table-names=1

終端連結

sudo apt-get install mysql-client

// 連結
mysql -h 127.0.0.1 -P 3306 -u root -p

手動折騰安裝

mysql5.7以上版本為例 –> mysql-5.7.10-linux-glibc2.5-x86_64.tar.gz

必須要先安裝依賴的libaio才能正常按照mysql

sudo apt-get update
sudo apt-get install libaio-dev

建立使用者組以及使用者

sudo groupadd mysql
sudo useradd -r -g mysql -s /bin/false mysql

儘量把mysql安裝到/usr/local目錄下面

cd /usr/local
sudo cp /home/data/software/DataBase/mysql/mysql-5.7.10-linux-glibc2.5-x86_64.tar.gz ./
<-- 解壓縮安裝包 -->
sudo tar zxvf mysql-5.7.10-linux-glibc2.5-x86_64.tar.gz
<-- 建立軟連線 -->
sudo ln -s mysql-5.7.10-linux-glibc2.5-x86_64 mysql

建立必須的目錄和進行授權

cd mysql
sudo mkdir mysql-files
sudo chmod 770 mysql-files
sudo chown -R mysql .
sudo chgrp -R mysql .

執行安裝指令碼

sudo bin/mysqld --initialize --user=mysql   
sudo bin/mysql_ssl_rsa_setup

在初始化的時候,一定要仔細看螢幕,最後大概有一行:[Note] A temporary password is generated for [email protected]: kklNBwkei1.t
注意這是root的臨時密碼,記錄下來以便後面修改密碼!

重新對一些主要的目錄進行授權,確保安全性

sudo chown -R root .
sudo chown -R mysql data mysql-files

從預設的模板建立配置檔案,需要在檔案中增加 skip-grant-tables ,以便啟動mysql以後修改root使用者的密碼

sudo cp support-files/my-default.cnf ./my.cnf 

測試啟動,修改密碼

# 後臺啟動mysql
sudo bin/mysqld_safe --user=mysql &  
# 啟動
./bin/mysql -u root -p

方式一

因為前面修改了my.cnf檔案,增加了 skip-grant-tables 引數,所以不需要使用者名稱即可登陸
進去後立即修改root使用者的密碼,密碼的欄位是 authentication_string

update mysql.user set authentication_string=password('root') where user='root';

修改密碼後,再把my.cnf裡面的 skip-grant-tables 去掉

方式二

修改密碼也可以使用安裝到時候提示到隨機密碼進行登入,然後使用下面到命令修改密碼。
建議用下面的方式設定資料庫的密碼

alter user user() identified by 'root';

複製啟動指令碼到合適的位置

sudo cp support-files/mysql.server /etc/init.d/mysql

(Optional)增加自動啟動

sudo update-rc.d -f mysql defaults

增加mysql命令的路徑到PATH環境變數

sudo touch /etc/profile.d/mysql.sh
sudo chmod 777 /etc/profile.d/mysql.sh
sudo echo "PATH=/usr/local/mysql/bin:\$PATH" > /etc/profile.d/mysql.sh
sudo chmod 644 /etc/profile.d/mysql.sh

到此,mysql的安裝基本完成

修復亂碼以及忽略大小寫,找到MySQL檔案裡的my.cnf在末尾新增

lower_case_table_names=1
character_set_server=utf8

檢視以及修改MySQL字元編碼

檢視

mysql> show variables like 'collation_%';

mysql> show variables like 'character_set_%';

修改

mysql> set character_set_client=utf8;
Query OK, 0 rows affected (0.00 sec)

mysql> set character_set_connection=utf8;
Query OK, 0 rows affected (0.00 sec)

mysql> set character_set_database=utf8;
Query OK, 0 rows affected (0.00 sec)

mysql> set character_set_results=utf8;
Query OK, 0 rows affected (0.00 sec)

mysql> set character_set_server=utf8;
Query OK, 0 rows affected (0.00 sec)

mysql> set character_set_system=utf8;
Query OK, 0 rows affected (0.01 sec)

mysql> set collation_connection=utf8_general_ci;
Query OK, 0 rows affected (0.01 sec)

mysql> set collation_database=utf8mb4_general_ci;
Query OK, 0 rows affected (0.01 sec)

mysql> set collation_server=utf8mb4_general_ci;
Query OK, 0 rows affected (0.01 sec)

如果登入mysql出現以下錯誤


則可能配置未載入或服務未啟動,請重啟系統,然後啟動mysql服務

sudo service mysql start

結束mysql服務

sudo service mysql stop

開啟遠端連結

連結mysql後:

use mysql

// 下面兩個root分別是帳號密碼
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
// 重新整理特權
flush privileges;
// 檢視修改是否成功
select host,user from user;

Mysql GUI

傳統終端客戶端

sudo apt-get install mysql-client

// 連結
mysql -h 127.0.0.1 -P 3306 -u root -p

智慧補全命令客戶端

這個一個智慧補全並且高亮語法的終端客戶端 mycli

安裝:

sudo apt install mycli

使用:

$ mycli --help
Usage: mycli [OPTIONS] [DATABASE]

  A MySQL terminal client with auto-completion and syntax highlighting.

  Examples:
    - mycli my_database
    - mycli -u my_user -h my_host.com my_database
    - mycli mysql://[email protected]_host.com:3306/my_database

Options:
  -h, --host TEXT               Host address of the database.
  -P, --port INTEGER            Port number to use for connection. Honors
                                $MYSQL_TCP_PORT.
  -u, --user TEXT               User name to connect to the database.
  -S, --socket TEXT             The socket file to use for connection.
  -p, --password TEXT           Password to connect to the database.
  --pass TEXT                   Password to connect to the database.
  --ssl-ca PATH                 CA file in PEM format.
  --ssl-capath TEXT             CA directory.
  --ssl-cert PATH               X509 cert in PEM format.
  --ssl-key PATH                X509 key in PEM format.
  --ssl-cipher TEXT             SSL cipher to use.
  --ssl-verify-server-cert      Verify server's "Common Name" in its cert
                                against hostname used when connecting. This
                                option is disabled by default.
  -v, --version                 Output mycli's version.
  -D, --database TEXT           Database to use.
  -R, --prompt TEXT             Prompt format (Default: "\t \[email protected]\h:\d> ").
  -l, --logfile FILENAME        Log every query and its results to a file.
  --defaults-group-suffix TEXT  Read MySQL config groups with the specified
                                suffix.
  --defaults-file PATH          Only read MySQL options from the given file.
  --myclirc PATH                Location of myclirc file.
  --auto-vertical-output        Automatically switch to vertical output mode
                                if the result is wider than the terminal
                                width.
  -t, --table                   Display batch output in table format.
  --csv                         Display batch output in CSV format.
  --warn / --no-warn            Warn before running a destructive query.
  --local-infile BOOLEAN        Enable/disable LOAD DATA LOCAL INFILE.
  --login-path TEXT             Read this path from the login file.
  -e, --execute TEXT            Execute command and quit.
  --help                        Show this message and exit.

破解

  1. 官網下載對應系統版本,這裡選擇linux版本,並解壓

  2. 到下載註冊機,並解壓

    CHS - > Navicat簡體中文版。
    CHT - > Navicat繁體中文版。
    ENG - > Navicat英文版

  3. 安裝wine

    sudo add-apt-repository ppa:ubuntu-wine/ppa
    sudo apt-get update
    sudo apt-get install wine1.8
  4. 進入註冊機解壓目錄,在此目錄下開啟命令視窗輸入

    wine navicat-patcher.exe <navicat.exe path>

    <navicat.exe path>就是navicat.exe的路徑,最好是完整的。

    可能會出現N個error日誌資訊不用鳥他 能正常success就行
    之後在當前目錄下會生成對應的私鑰檔案RegPrivateKey.pem

  5. 接著再用navicat-keygen.exe生成註冊碼,使用命令

    wine navicat-keygen.exe  RegPrivateKey.pem

    先填名字和組織名稱,之後會生成一個序列號,並要求填入請求碼。

    開啟navicat,然後斷網

  6. 在註冊介面填入序列號,然後啟用。這時會提示要手動啟用,ok就選這個
    接下來會有請求碼,複製然後貼入控制檯,就可以得到註冊碼了。

建立快捷方式

cd /usr/share/applications/
sudo touch navicat.desktop
sudo vi navicat.desktop

加入以下內容

[Desktop Entry]
Encoding=UTF-8
Name=Navicat
Comment=The Smarter Way to manage dadabase
Exec=/bin/sh "/home/ybd/Data/soft/application/navicat112_mysql_en_x64/start_navicat"
Icon=/home/ybd/Data/soft/application/navicat112_mysql_en_x64/Navicat/navicat.png
Categories=Application;Database;MySQL;navicat
Version=1.0
Type=Application
Terminal=0

後臺執行

nohup /home/ybd/data/application/navicat/navicat120_premium_en_x64/start_navicat > /dev/null 2>&1 &

安裝Redis

安裝

終端執行:

sudo apt-get update
sudo apt-get install redis-server

啟動

redis-server

檢視是否啟動成功

redis-cli

HelloWorld

set k1 helloword
get k1

配置相關

/etc/redis:存放redis配置檔案
/var/redis/埠號:存放redis的持久化檔案

通過下面的命令停止/啟動/重啟redis:

/etc/init.d/redis-server stop
/etc/init.d/redis-server start
/etc/init.d/redis-server restart

如果是通過原始碼安裝的redis,則可以通過redis的客戶端程式redis-clishutdown命令來重啟redis

redis-cli -h 127.0.0.1 -p 6379 shutdown

如果上述方式都沒有成功停止redis,則可以使用終極武器 kill -9

開啟遠端訪問

找到redis.conf檔案,一般在/etc下面:

➜  ~ sudo find /etc -name redis.conf
/etc/redis/redis.conf
➜  ~ sudo gedit /etc/redis/redis.conf

找到bind 127.0.0.1註釋掉
註釋掉本機,區域網內的所有計算機都能訪問。
band localhost 只能本機訪問,區域網內計算機不能訪問。
bind 區域網IP 只能區域網內IP的機器訪問, 本地localhost都無法訪問。

博主選擇將bind 127.0.0.1 改成了bind 0.0.0.0

開啟發布訂閱監聽

還是修改redis.conf檔案,找到notify-keyspace-events "",修改為notify-keyspace-events Ex或者notify-keyspace-events AKE,然後重啟。

附加1:基於Docker

拉取映象:

docker pull redis:latest

執行例項:

REDIS=/home/ybd/data/docker/redis && docker run -p 6379:6379 --restart=always -v $REDIS/redis.conf:/usr/local/etc/redis/redis.conf -v $REDIS/data:/data --name redis -d redis redis-server /usr/local/etc/redis/redis.conf --appendonly yes

安裝連結工具:

sudo apt-get install redis-tools

// 連結
redis-cli

附加2:Redis常用命令

連線操作命令

  • quit:關閉連線(connection)
  • auth:簡單密碼認證
  • help cmd: 檢視cmd幫助,例如:help quit

持久化

  • save:將資料同步儲存到磁碟
  • bgsave:將資料非同步儲存到磁碟
  • lastsave:返回上次成功將資料儲存到磁碟的Unix時戳
  • shutdown:將資料同步儲存到磁碟,然後關閉服務

遠端服務控制

  • info:提供伺服器的資訊和統計
  • monitor:實時轉儲收到的請求
  • slaveof:改變複製策略設定
  • config:在執行時配置Redis伺服器

對key操作的命令

  • exists(key):確認一個key是否存在
  • del(key):刪除一個key
  • type(key):返回值的型別
  • keys(pattern):返回滿足給定pattern的所有key
  • randomkey:隨機返回key空間的一個
  • keyrename(oldname, newname):重新命名key
  • dbsize:返回當前資料庫中key的數目
  • expire:設定一個key的活動時間(s)
  • ttl:獲得一個key的活動時間
  • select(index):按索引查詢
  • move(key, dbindex):移動當前資料庫中的key到dbindex資料庫
  • flushdb:刪除當前選擇資料庫中的所有key
  • flushall:刪除所有資料庫中的所有key

String

  • set(key, value):給資料庫中名稱為key的string賦予值value
  • get(key):返回資料庫中名稱為key的string的value
  • getset(key, value):給名稱為key的string賦予上一次的value
  • mget(key1, key2,…, key N):返回庫中多個string的value
  • setnx(key, value):新增string,名稱為key,值為value
  • setex(key, time, value):向庫中新增string,設定過期時間time
  • mset(key N, value N):批量設定多個string的值
  • msetnx(key N, value N):如果所有名稱為key i的string都不存在
  • incr(key):名稱為key的string增1操作
  • incrby(key, integer):名稱為key的string增加integer
  • decr(key):名稱為key的string減1操作
  • decrby(key, integer):名稱為key的string減少integer
  • append(key, value):名稱為key的string的值附加value
  • substr(key, start, end):返回名稱為key的string的value的子串

List

  • rpush(key, value):在名稱為key的list尾新增一個值為value的元素
  • lpush(key, value):在名稱為key的list頭新增一個值為value的 元素
  • llen(key):返回名稱為key的list的長度
  • lrange(key, start, end):返回名稱為key的list中start至end之間的元素
  • ltrim(key, start, end):擷取名稱為key的list
  • lindex(key, index):返回名稱為key的list中index位置的元素
  • lset(key, index, value):給名稱為key的list中index位置的元素賦值
  • lrem(key, count, value):刪除count個key的list中值為value的元素
  • lpop(key):返回並刪除名稱為key的list中的首元素
  • rpop(key):返回並刪除名稱為key的list中的尾元素
  • blpop(key1, key2,… key N, timeout):lpop命令的block版本。
  • brpop(key1, key2,… key N, timeout):rpop的block版本。
  • rpoplpush(srckey, dstkey):返回並刪除名稱為srckey的list的尾元素,並將該元素新增到名稱為dstkey的list的頭部

Set

  • sadd(key, member):向名稱為key的set中新增元素member
  • srem(key, member) :刪除名稱為key的set中的元素member
  • spop(key) :隨機返回並刪除名稱為key的set中一個元素
  • smove(srckey, dstkey, member) :移到集合元素
  • scard(key) :返回名稱為key的set的基數
  • sismember(key, member) :member是否是名稱為key的set的元素
  • sinter(key1, key2,…key N) :求交集
  • sinterstore(dstkey, (keys)) :求交集並將交集儲存到dstkey的集合
  • sunion(key1, (keys)) :求並集
  • sunionstore(dstkey, (keys)) :求並集並將並集儲存到dstkey的集合
  • sdiff(key1, (keys)) :求差集
  • sdiffstore(dstkey, (keys)) :求差集並將差集儲存到dstkey的集合
  • smembers(key) :返回名稱為key的set的所有元素
  • srandmember(key) :隨機返回名稱為key的set的一個元素

Hash

  • hset(key, field, value):向名稱為key的hash中新增元素field
  • hget(key, field):返回名稱為key的hash中field對應的value
  • hmget(key, (fields)):返回名稱為key的hash中field i對應的value
  • hmset(key, (fields)):向名稱為key的hash中新增元素field
  • hincrby(key, field, integer):將名稱為key的hash中field的value增加integer
  • hexists(key, field):名稱為key的hash中是否存在鍵為field的域
  • hdel(key, field):刪除名稱為key的hash中鍵為field的域
  • hlen(key):返回名稱為key的hash中元素個數
  • hkeys(key):返回名稱為key的hash中所有鍵
  • hvals(key):返回名稱為key的hash中所有鍵對應的value
  • hgetall(key):返回名稱為key的hash中所有的鍵(field)及其對應的value

附加3:慢查詢檢視

Redis 通過 slowlog-log-slower-thanslowlog-max-len 分別配置慢查詢的閾值,以及慢查詢記錄的日誌長度。 slowlog-log-slower-than 預設值 10*1000 微秒,當命令執行時間查過設定時,那麼將會被記錄在慢查詢日誌中。如果slowlog-log-slower-than=0會記錄所有的命令,slowlog-log-slower-than<0 對於任何命令都不會進行記錄。

引數設定:

config set slowlog-log-slower-than 20000
config set slowlog-max-len 1000
config rewrite

如果要 Redis 將配置持久化到本地配置檔案,需要執行 config rewrite 命令.

獲取慢查詢日誌:

slowlog get [n] // n 表示返回的日誌記錄條數

每個慢查詢日誌有 4 個屬性組成,分別是慢查詢日誌的標識 id、發生時間戳、命令耗時、執行命令和引數,慢查詢列表如下:

127.0.0.1:6378> slowlog get
1) 1) (integer) 0                       //標識 id
   2) (integer) 1501750261      //時間戳
   3) (integer) 19                      // 命令耗時
   4) 1) "config"                        // 執行命令
      2) "set"
      3) "slowlog-log-slower-than"
      4) "0"
127.0.0.1:6378> 

獲取慢查詢日誌列表當前的長度:

127.0.0.1:6378> slowlog len
(integer) 2
127.0.0.1:6378> 

慢查詢最佳實踐

  • slowlog-max-len 配置建議:線上建議調大慢查詢列表,記錄慢查詢時 Redis 會對長命令做截斷操作,並不會佔用大量記憶體。增大慢查詢列表可以減緩慢查詢被剔除的可能,例如線上可設定為 1000 以上。
  • slowlog-log-slower-than 配置建議:預設值超過 10 毫秒判定為慢查詢,需要根據 Redis 併發量調整該值。由於 Redis 採用單執行緒響應命令,對於高流量的場景,如果命令執行時間在 1 毫秒以上,那麼 Redis 最多可支撐 OPS 不到 1000。因此對於高 OPS (operation per second)場景的 Redis 建議設定為 1 毫秒。
  • 慢查詢只記錄命令執行時間,並不包括命令排隊和網路傳輸時間。因此客戶端執行命
    令的時間會大於命令實際執行時間。因為命令執行排隊機制,慢查詢會導致其他命令級聯阻塞,因此當客戶端出現請求超時,需要檢查該時間點是否有對應的慢查詢,從
    而分析出是否為慢查詢導致的命令級聯阻塞。
  • 由於慢查詢日誌是一個先進先出的佇列,也就是說如果慢查詢比較多的情況下,可能
    會丟失部分慢查詢命令,為了防止這種情況發生,可以定期執行 slow get 命令將慢查詢日誌持久化到其他儲存中(例如 MySQL),然後可以製作視覺化介面進行查詢。

安裝Maven

下載

配置

1、下載解壓到自己的指定的目錄後,將命令放到/bin下:

sudo ln -s /自定義目錄/apache-maven-3.3.9/bin/mvn /bin/mvn

2、新增環境變數
老規矩,在/etc/profile.d下建立一個maven.sh的檔案:

sudo touch /etc/profile.d/maven.sh
sudo vi /etc/profile.d/maven.sh

輸入以下內容:

export M2_HOME=/自定義目錄/apache-maven-3.3.9
export PATH=${M2_HOME}/bin:$PATH

然後source一下:

source /etc/profile.d/maven.sh

檢視是否配置成功:

mvn -v

輸入內容如下:

Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)
Maven home: /home/ybd/Data/application/maven/apache-maven-3.3.9
Java version: 1.8.0_65, vendor: Oracle Corporation
Java home: /usr/local/jdk1.8.0_65/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "4.4.0-67-generic", arch: "amd64", family: "unix"

淘寶映象

<mirrors>
    <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf> 
    </mirror>
</mirrors>

MongoDB

安裝

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6

#下面命令針對ubuntu16.04版本,在其他ubuntu版本系統請檢視MongoDB官網
echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list

sudo apt-get update

sudo apt-get install -y mongodb-org

安裝完成後檢視版本:

mongo -version

啟動、重新啟動和關閉mongodb命令:

sudo service mongod start
sudo service mongod stop
sudo service mongod restart

檢視是否啟動成功:

sudo cat /var/log/mongodb/mongod.log

mongod.log 日誌中若出現如下資訊,說明啟動成功:

[initandlisten] waiting for connections on port 27017

MongoDB 解除安裝

刪除 mongodb 包

sudo apt-get purge mongodb-org*

刪除 MongoDB 資料庫和日誌檔案

sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongodb

MongoDB 使用

shell命令模式
輸入mongo進入shell命令模式,預設連線的資料庫是test資料庫,命令如下:

➜  ~ mongo

常用操作命令:

show dbs:顯示資料庫列表
show collections:顯示當前資料庫中的集合(類似關係資料庫中的表table)
show users:顯示所有使用者
use yourDB:切換當前資料庫至yourDB
db.help() :顯示資料庫操作命令
db.yourCollection.help() :顯示集合操作命令,yourCollection是集合名

GUI客戶端

RabbitMQ

選擇Docker安裝。。。不折騰了。。

docker pull rabbitmq:3-management
docker run -d --name rabbitmq -p 5673:5672 -p 15673:15672 --restart=always rabbitmq:3-management

(注意版本,是management)

瀏覽器開啟localhost:15673,預設帳號密碼都是guest

Kafka&Zookeeper叢集

docker-compose.yml:

version: '3'
services:
  kafka1:
    image: wurstmeister/kafka:1.0.0
    depends_on:
      - zoo1
      - zoo2
      - zoo3
    ports:
      - "9092:9092"
    environment:
      KAFKA_LOG_DIRS: /kafka
      KAFKA_BROKER_ID: 1
      KAFKA_CREATE_TOPICS: test:6:1
      KAFKA_ADVERTISED_HOST_NAME: 192.168.6.113
      KAFKA_ADVERTISED_PORT: 9092
      KAFKA_ZOOKEEPER_CONNECT: zoo1:2181,zoo2:2181,zoo3:2181

  kafka2:
    image: wurstmeister/kafka:1.0.0
    depends_on:
      - zoo1
      - zoo2
      - zoo3
    ports:
      - "9093:9092"
    environment:
      KAFKA_LOG_DIRS: /kafka
      KAFKA_BROKER_ID: 2
      KAFKA_ADVERTISED_HOST_NAME: 192.168.6.113
      KAFKA_ADVERTISED_PORT: 9093
      KAFKA_ZOOKEEPER_CONNECT: zoo1:2181,zoo2:2181,zoo3:2181

  kafka3:
    image: wurstmeister/kafka:1.0.0
    depends_on:
      - zoo1
      - zoo2
      - zoo3
    ports:
      - "9094:9092"
    environment:
      KAFKA_LOG_DIRS: /kafka
      KAFKA_BROKER_ID: 3
      KAFKA_ADVERTISED_HOST_NAME: 192.168.6.113
      KAFKA_ADVERTISED_PORT: 9094
      KAFKA_ZOOKEEPER_CONNECT: zoo1:2181,zoo2:2181,zoo3:2181

  zoo1:
    image: zookeeper:latest
    environment:
      ZOO_MY_ID: 1
      SERVERS: zoo1,zoo2,zoo3
    ports:
      - "2181:2181"
      - "2888"
      - "3888"

  zoo2:
    image: zookeeper:latest
    environment:
      ZOO_MY_ID: 2
      SERVERS: zoo1,zoo2,zoo3
    ports:
      - "2182:2181"
      - "2888"
      - "3888"

  zoo3:
    image: zookeeper:latest
    environment:
      ZOO_MY_ID: 3
      SERVERS: zoo1,zoo2,zoo3
    ports:
      - "2183:2181"
      - "2888"
      - "3888"

啟動:

docker-compose up -d

測試:

#建立主題
docker exec -it ${CONTAINER_ID} /opt/kafka/bin/kafka-topics.sh --create --zookeeper zoo1:2181 --replication-factor 1 --partitions