原文鏈接: http://yangbingdong.com/2017/ubuntu-install-jdk-ide-tomcat-mysql/

前言
最近公司的電腦由于不明原因老是奔潰,重裝過兩次,在家里也比較喜歡折騰系統(tǒng),為了不用每次都度娘谷歌,記錄下來,一條龍走過。博主是搞爪哇開發(fā)的,那么以下搭建針對的是爪哇環(huán)境開發(fā)
安裝JDK以及配置環(huán)境變量
通過Apt安裝
https://linuxconfig.org/how-to-install-java-on-ubuntu-18-04-bionic-beaver-linux
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
安裝之前當(dāng)然是老規(guī)矩地下載jdk:Oracle JDK官方下載
# 把jdk的文件移動到 /usr/local/ 目錄下
sudo mv ~/jdk*.tar.gz /usr/local/
# 解壓文件
cd /usr/local/
# sudo tar -zxvf jdk-8u101-linux-x64.tar.gz
# 創(chuàng)建軟鏈接
sudo ln -s jdk1.8.0_101 jdk
如需更換jdk,刪除舊版本的軟鏈接,重新創(chuàng)建軟鏈接指向新版即可
sudo rm -rf jdk
sudo ln -s jdk* jdk
配置環(huán)境變量
- 放到
/usr/local里面的程序,建議使用系統(tǒng)變量。 - 用戶變量
~/.profile文件是用戶的私有配置文件
~/.bashrc是在bash里面使用的私有配置文件,優(yōu)先級在.profile文件之后 - 系統(tǒng)變量
/etc/profile文件是系統(tǒng)的公用配置文件
/etc/bash.bashrc是bash專用的配置文件,優(yōu)先級在profile文件之后 - 系統(tǒng)變量的配置,不建議修改前面說到的兩個文件,而是建議在
/etc/profile.d/目錄下,創(chuàng)建一個.sh結(jié)尾 的文件。
sudo vi /etc/profile.d/jdk.sh
環(huán)境變量的配置內(nèi)容如下:
- 設(shè)置一個名為
JAVA_HOME的變量,并且使用export命令導(dǎo)出為環(huán)境變量, 如果不使用export,僅在當(dāng)前shell里面有效
export JAVA_HOME=/usr/local/jdk
-
PATH不需要export,因?yàn)樵缭谄渌牡胤?,已?jīng)export過了!,\$JAVA_HOME表示引用前面配置的JAVA_HOME變量,分隔符一定是冒號,Windows是分號,最后再引用原來的PATH的值
PATH=$JAVA_HOME/bin:$PATH
- 配置以后,可以重新登錄讓配置生效,也可以使用
source臨時加載配置文件。使用source命令加載的配置,僅在當(dāng)前shell有效,關(guān)閉以后失效。
source /etc/profile.d/jdk.sh
- 查看
jdk是否安裝成功,一下兩條命令成功則安裝成功
java -version
javac -version

安裝Scala環(huán)境
更上面安裝JDK類似
1、去 官網(wǎng) 下載最新地SDK

2、解壓到 /usr/local 目錄,并創(chuàng)建軟鏈接為 scala
3、在 /etc/profile.d 目錄下創(chuàng)建 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官方網(wǎng)站 下載相關(guān)版本Eclipse
解壓
sudo tar zxvf eclipse-jee-mars-2-linux-gtk-x86_64.tar.gz -C ~/IDE
創(chuàng)建快捷方式
1. 在終端中執(zhí)行如下命令
sudo gedit /usr/share/applications/eclipse.desktop
2. 粘貼并保存如下內(nèi)容(注意更改相應(yīng)的名字和目錄)
[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
通用設(shè)置
window → preferences →
- 設(shè)置字體: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
MyEclipse安裝請看:Ubuntu16.04下MyEclipse安裝與破解
IntelliJ IDEA
之前聽說過IDE,都是大公司用的,并沒有用過
日后再研究補(bǔ)上
官網(wǎng):http://www.jetbrains.com/idea/
新公司好多大牛,用的都是IDEA,于是乎“近墨者黑”,那么既然有機(jī)會跟大牛接觸,我也開始真正意義上的學(xué)習(xí)IDEA了
安裝
進(jìn)過查閱,我選擇官方的盒子下載:http://www.jetbrains.com/toolbox/app/?fromMenu
優(yōu)點(diǎn)是可以自動更新

激活
博主使用授權(quán)服務(wù)器,可以自己搭建,詳情請看 這里
部署Tomcat
若是服務(wù)器版切換root用戶解壓到 /opt/ 或者 /usr/local/ 下
直接運(yùn)行tomcat目錄下bin/start.sh即可開啟,前提是配置好JDK
桌面版?zhèn)€人使用就解壓到/home/{user}目錄下就可以了
安裝MySQL以及GUI工具
基于Docker安裝
拉取鏡像
docker pull mysql:5.7
運(yùn)行實(shí)例
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
創(chuàng)建用戶組以及用戶
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
<-- 創(chuàng)建軟連接 -->
sudo ln -s mysql-5.7.10-linux-glibc2.5-x86_64 mysql
創(chuàng)建必須的目錄和進(jìn)行授權(quán)
cd mysql
sudo mkdir mysql-files
sudo chmod 770 mysql-files
sudo chown -R mysql .
sudo chgrp -R mysql .
執(zhí)行安裝腳本
sudo bin/mysqld --initialize --user=mysql
sudo bin/mysql_ssl_rsa_setup
在初始化的時候,一定要仔細(xì)看屏幕,最后大概有一行:[Note] A temporary password is generated for root@localhost: kklNBwkei1.t
注意這是root的臨時密碼,記錄下來以便后面修改密碼!
重新對一些主要的目錄進(jìn)行授權(quán),確保安全性
sudo chown -R root .
sudo chown -R mysql data mysql-files
從默認(rèn)的模板創(chuàng)建配置文件,需要在文件中增加 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
方式一
因?yàn)榍懊嫘薷牧?code>my.cnf文件,增加了 skip-grant-tables 參數(shù),所以不需要用戶名即可登陸
進(jìn)去后立即修改root用戶的密碼,密碼的字段是 authentication_string
update mysql.user set authentication_string=password('root') where user='root';
修改密碼后,再把my.cnf里面的 skip-grant-tables 去掉
方式二
修改密碼也可以使用安裝到時候提示到隨機(jī)密碼進(jìn)行登錄,然后使用下面到命令修改密碼。
建議用下面的方式設(shè)置數(shù)據(jù)庫的密碼
alter user user() identified by 'root';
復(fù)制啟動腳本到合適的位置
sudo cp support-files/mysql.server /etc/init.d/mysql
(Optional)增加自動啟動
sudo update-rc.d -f mysql defaults
增加mysql命令的路徑到PATH環(huán)境變量
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
<font color=red>到此,mysql的安裝基本完成</font>
修復(fù)亂碼以及忽略大小寫,找到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出現(xiàn)以下錯誤

則可能配置未加載或服務(wù)未啟動,請重啟系統(tǒng),然后啟動mysql服務(wù)
sudo service mysql start
結(jié)束mysql服務(wù)
sudo service mysql stop
開啟遠(yuǎn)程鏈接
鏈接mysql后:
use mysql
// 下面兩個root分別是帳號密碼
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
// 刷新特權(quán)
flush privileges;
// 查看修改是否成功
select host,user from user;
Mysql GUI
傳統(tǒng)終端客戶端
sudo apt-get install mysql-client
// 鏈接
mysql -h 127.0.0.1 -P 3306 -u root -p
智能補(bǔ)全命令客戶端
這個一個智能補(bǔ)全并且高亮語法的終端客戶端 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://my_user@my_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 \u@\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.
Navicat Premium
破解
到官網(wǎng)下載對應(yīng)系統(tǒng)版本,這里選擇linux版本,并解壓
-
到Github下載注冊機(jī),并解壓
CHS - > Navicat簡體中文版。
CHT - > Navicat繁體中文版。
ENG - > Navicat英文版 安裝wine
sudo add-apt-repository ppa:ubuntu-wine/ppa
sudo apt-get update
sudo apt-get install wine1.8
-
進(jìn)入注冊機(jī)解壓目錄,在此目錄下打開命令窗口輸入
wine navicat-patcher.exe <navicat.exe path><navicat.exe path>就是navicat.exe的路徑,最好是完整的。可能會出現(xiàn)N個error日志信息不用鳥他 能正常success就行
之后在當(dāng)前目錄下會生成對應(yīng)的私鑰文件RegPrivateKey.pem -
接著再用
navicat-keygen.exe生成注冊碼,使用命令wine navicat-keygen.exe RegPrivateKey.pem先填名字和組織名稱,之后會生成一個序列號,并要求填入請求碼。
打開navicat,然后斷網(wǎng)
在注冊界面填入序列號,然后激活。這時會提示要手動激活,ok就選這個
接下來會有請求碼,復(fù)制然后貼入控制臺,就可以得到注冊碼了。


創(chuàng)建快捷方式
cd /usr/share/applications/
sudo touch navicat.desktop
sudo vi navicat.desktop
加入以下內(nèi)容
[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
后臺運(yùn)行
nohup /home/ybd/data/application/navicat/navicat120_premium_en_x64/start_navicat > /dev/null 2>&1 &
安裝Redis
安裝
終端執(zhí)行:
sudo apt-get update
sudo apt-get install redis-server
啟動
redis-server
查看是否啟動成功
redis-cli
HelloWorld
set k1 helloword
get k1
配置相關(guān)
/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-cli的shutdown命令來重啟redis
redis-cli -h 127.0.0.1 -p 6379 shutdown
如果上述方式都沒有成功停止redis,則可以使用終極武器 kill -9
開啟遠(yuǎn)程訪問
找到redis.conf文件,一般在/etc下面:
? ~ sudo find /etc -name redis.conf
/etc/redis/redis.conf
? ~ sudo gedit /etc/redis/redis.conf
找到bind 127.0.0.1注釋掉
注釋掉本機(jī),局域網(wǎng)內(nèi)的所有計(jì)算機(jī)都能訪問。
band localhost 只能本機(jī)訪問,局域網(wǎng)內(nèi)計(jì)算機(jī)不能訪問。
bind 局域網(wǎng)IP 只能局域網(wǎng)內(nèi)IP的機(jī)器訪問, 本地localhost都無法訪問。
博主選擇將bind 127.0.0.1 改成了bind 0.0.0.0
開啟發(fā)布訂閱監(jiān)聽
還是修改redis.conf文件,找到notify-keyspace-events "",修改為notify-keyspace-events Ex或者notify-keyspace-events AKE,然后重啟。
附加1:基于Docker
拉取鏡像:
docker pull redis:latest
運(yùn)行實(shí)例:
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:關(guān)閉連接(connection) -
auth:簡單密碼認(rèn)證 -
help cmd: 查看cmd幫助,例如:help quit
持久化
-
save:將數(shù)據(jù)同步保存到磁盤 -
bgsave:將數(shù)據(jù)異步保存到磁盤 -
lastsave:返回上次成功將數(shù)據(jù)保存到磁盤的Unix時戳 -
shutdown:將數(shù)據(jù)同步保存到磁盤,然后關(guān)閉服務(wù)
遠(yuǎn)程服務(wù)控制
-
info:提供服務(wù)器的信息和統(tǒng)計(jì) -
monitor:實(shí)時轉(zhuǎn)儲收到的請求 -
slaveof:改變復(fù)制策略設(shè)置 -
config:在運(yùn)行時配置Redis服務(wù)器
對key操作的命令
-
exists(key):確認(rèn)一個key是否存在 -
del(key):刪除一個key -
type(key):返回值的類型 -
keys(pattern):返回滿足給定pattern的所有key -
randomkey:隨機(jī)返回key空間的一個 -
keyrename(oldname, newname):重命名key -
dbsize:返回當(dāng)前數(shù)據(jù)庫中key的數(shù)目 -
expire:設(shè)定一個key的活動時間(s) -
ttl:獲得一個key的活動時間 -
select(index):按索引查詢 -
move(key, dbindex):移動當(dāng)前數(shù)據(jù)庫中的key到dbindex數(shù)據(jù)庫 -
flushdb:刪除當(dāng)前選擇數(shù)據(jù)庫中的所有key -
flushall:刪除所有數(shù)據(jù)庫中的所有key
String
-
set(key, value):給數(shù)據(jù)庫中名稱為key的string賦予值value -
get(key):返回?cái)?shù)據(jù)庫中名稱為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,設(shè)定過期時間time -
mset(key N, value N):批量設(shè)置多個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):隨機(jī)返回并刪除名稱為key的set中一個元素 -
smove(srckey, dstkey, member):移到集合元素 -
scard(key):返回名稱為key的set的基數(shù) -
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):隨機(jī)返回名稱為key的set的一個元素
Hash
-
hset(key, field, value):向名稱為key的hash中添加元素field -
hget(key, field):返回名稱為key的hash中field對應(yīng)的value -
hmget(key, (fields)):返回名稱為key的hash中field i對應(yīng)的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中元素個數(shù) -
hkeys(key):返回名稱為key的hash中所有鍵 -
hvals(key):返回名稱為key的hash中所有鍵對應(yīng)的value -
hgetall(key):返回名稱為key的hash中所有的鍵(field)及其對應(yīng)的value
附加3:慢查詢查看
Redis 通過
slowlog-log-slower-than和slowlog-max-len分別配置慢查詢的閾值,以及慢查詢記錄的日志長度。slowlog-log-slower-than默認(rèn)值 10*1000 微秒,當(dāng)命令執(zhí)行時間查過設(shè)定時,那么將會被記錄在慢查詢?nèi)罩局?。如?code>slowlog-log-slower-than=0會記錄所有的命令,slowlog-log-slower-than<0對于任何命令都不會進(jìn)行記錄。
參數(shù)設(shè)定:
config set slowlog-log-slower-than 20000
config set slowlog-max-len 1000
config rewrite
如果要 Redis 將配置持久化到本地配置文件,需要執(zhí)行
config rewrite命令.
獲取慢查詢?nèi)罩?
slowlog get [n] // n 表示返回的日志記錄條數(shù)
每個慢查詢?nèi)罩居?4 個屬性組成,分別是慢查詢?nèi)罩镜臉?biāo)識 id、發(fā)生時間戳、命令耗時、執(zhí)行命令和參數(shù),慢查詢列表如下:
127.0.0.1:6378> slowlog get
1) 1) (integer) 0 //標(biāo)識 id
2) (integer) 1501750261 //時間戳
3) (integer) 19 // 命令耗時
4) 1) "config" // 執(zhí)行命令
2) "set"
3) "slowlog-log-slower-than"
4) "0"
127.0.0.1:6378>
獲取慢查詢?nèi)罩玖斜懋?dāng)前的長度:
127.0.0.1:6378> slowlog len
(integer) 2
127.0.0.1:6378>
慢查詢最佳實(shí)踐
- slowlog-max-len 配置建議:線上建議調(diào)大慢查詢列表,記錄慢查詢時 Redis 會對長命令做截?cái)嗖僮?,并不會占用大量?nèi)存。增大慢查詢列表可以減緩慢查詢被剔除的可能,例如線上可設(shè)置為 1000 以上。
- slowlog-log-slower-than 配置建議:默認(rèn)值超過 10 毫秒判定為慢查詢,需要根據(jù) Redis 并發(fā)量調(diào)整該值。由于 Redis 采用單線程響應(yīng)命令,對于高流量的場景,如果命令執(zhí)行時間在 1 毫秒以上,那么 Redis 最多可支撐 OPS 不到 1000。因此對于高 OPS (operation per second)場景的 Redis 建議設(shè)置為 1 毫秒。
- 慢查詢只記錄命令執(zhí)行時間,并不包括命令排隊(duì)和網(wǎng)絡(luò)傳輸時間。因此客戶端執(zhí)行命
令的時間會大于命令實(shí)際執(zhí)行時間。因?yàn)槊顖?zhí)行排隊(duì)機(jī)制,慢查詢會導(dǎo)致其他命令級聯(lián)阻塞,因此當(dāng)客戶端出現(xiàn)請求超時,需要檢查該時間點(diǎn)是否有對應(yīng)的慢查詢,從
而分析出是否為慢查詢導(dǎo)致的命令級聯(lián)阻塞。 - 由于慢查詢?nèi)罩臼且粋€先進(jìn)先出的隊(duì)列,也就是說如果慢查詢比較多的情況下,可能
會丟失部分慢查詢命令,為了防止這種情況發(fā)生,可以定期執(zhí)行 slow get 命令將慢查詢?nèi)罩境志没狡渌鎯χ校ɡ?MySQL),然后可以制作可視化界面進(jìn)行查詢。
安裝Maven
下載
官網(wǎng)下載或者點(diǎn)擊鏡像獲取
配置
1、下載解壓到自己的指定的目錄后,將命令放到/bin下:
sudo ln -s /自定義目錄/apache-maven-3.3.9/bin/mvn /bin/mvn
2、添加環(huán)境變量
老規(guī)矩,在/etc/profile.d下創(chuàng)建一個maven.sh的文件:
sudo touch /etc/profile.d/maven.sh
sudo vi /etc/profile.d/maven.sh
輸入以下內(nèi)容:
export M2_HOME=/自定義目錄/apache-maven-3.3.9
export PATH=${M2_HOME}/bin:$PATH
然后source一下:
source /etc/profile.d/maven.sh
查看是否配置成功:
mvn -v
輸入內(nèi)容如下:
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版本系統(tǒng)請查看MongoDB官網(wǎng)
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

啟動、重新啟動和關(guān)閉mongodb命令:
sudo service mongod start
sudo service mongod stop
sudo service mongod restart
查看是否啟動成功:
sudo cat /var/log/mongodb/mongod.log
在 mongod.log 日志中若出現(xiàn)如下信息,說明啟動成功:
[initandlisten] waiting for connections on port 27017
MongoDB 卸載
刪除 mongodb 包
sudo apt-get purge mongodb-org*
刪除 MongoDB 數(shù)據(jù)庫和日志文件
sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongodb
MongoDB 使用
shell命令模式
輸入mongo進(jìn)入shell命令模式,默認(rèn)連接的數(shù)據(jù)庫是test數(shù)據(jù)庫,命令如下:
? ~ mongo
常用操作命令:
show dbs:顯示數(shù)據(jù)庫列表
show collections:顯示當(dāng)前數(shù)據(jù)庫中的集合(類似關(guān)系數(shù)據(jù)庫中的表table)
show users:顯示所有用戶
use yourDB:切換當(dāng)前數(shù)據(jù)庫至yourDB
db.help() :顯示數(shù)據(jù)庫操作命令
db.yourCollection.help() :顯示集合操作命令,yourCollection是集合名
官方文檔:https://docs.mongodb.com/master/tutorial/install-mongodb-on-ubuntu/
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,默認(rèn)帳號密碼都是guest

集群:http://www.itdecent.cn/p/624871c646b9
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
測試:
#創(chuàng)建主題
docker exec -it ${CONTAINER_ID} /opt/kafka/bin/kafka-topics.sh --create --zookeeper zoo1:2181 --replication-factor 1 --partitions 1 --topic test
#查看topic列表
docker exec -it ${CONTAINER_ID} /opt/kafka/bin/kafka-topics.sh --list --zookeeper zoo1:2181
#生產(chǎn)者
docker exec -it ${CONTAINER_ID} /opt/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
#消費(fèi)者
docker exec -it ${CONTAINER_ID} /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
搭建ngrok配置

ngrok 是一個反向代理,通過在公共的端點(diǎn)和本地運(yùn)行的 Web 服務(wù)器之間建立一個安全的通道。ngrok 可捕獲和分析所有通道上的流量,便于后期分析和重放??梢员皇褂脕磉M(jìn)行微信借口的本地調(diào)試。在ngrok被墻之后,我們需要通過ngrok開源的源碼自行搭建ngrok服務(wù)。
參考地址:Ubuntu下配置安裝ngrok
搞了一上午,服務(wù)運(yùn)行起來了,客戶端也運(yùn)行起來了,瀏覽器就是訪問不到!!
不知道是不是因?yàn)閭€人電腦沒有域名所以才訪問不到,日后再深究。
無奈,還好互聯(lián)網(wǎng)開源精神無處不在,某大神搭建的ngrok:
http://www.qydev.com/
客戶端和教程都在里面哦。
Update:Ngrok已搭建成功~ ,記錄于self-hosted-build-ngrok-server
其他tunnel的代理服務(wù)器:
natapp.cn
www.ngrok.cc