在Ubuntu下搭建微服務開發環境

關於本文

  • 寫做目標:做爲在linux下安裝JDK、MySQL、Zookeeper、Redis、MongoDB、RabbitMQ等開發組件的快速參考指南
  • Linux版本:Linux Mint 18.2 Sonya(基於Ubuntu 16.04 Xenial)

實戰記錄

  • JAVA OpenJDK 1
sudo apt install openjdk-8-jdk
  • MySQL 23

安裝html

wget https://dev.mysql.com/get/mysql-apt-config_0.8.6-1_all.deb
dpkg -i mysql-apt-config_0.8.6-1_all.deb
apt update
apt install mysql-server

配置java

vi /etc/mysql/conf.d/mysql.cnf
[mysql]
default-character-set=utf8

vi /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
# 註釋以下配置以容許遠程訪問
# bind-address  = 127.0.0.1
character-set-server=utf8
default-time-zone='+8:00'

# 重啓服務
sudo service mysql restart

經常使用命令mysql

# 登陸
mysql -uroot -p

# 建立用戶、數據庫
create user 'test'@'%' identified by '123456';
create database test;
grant all on test.* to 'test'@'%';
flush privileges;

# 重置root密碼
sudo service mysql stop
sudo mkdir -p /var/run/mysqld
sudo chown mysql:adm /var/run/mysqld
sudo nohup mysqld_safe --skip-grant-tables --skip-networking &
#進入mysql shell後用下面修改密碼的方式更改root密碼
mysql
update mysql.user set authentication_string=password('123456') where user='root' and host = 'localhost';
#重啓服務
mysqladmin shutdown
sudo service mysql start

# 修改密碼
#方式一 (https://dev.mysql.com/doc/refman/5.7/en/password-hashing.html)
set password for 'root'@'localhost'=password('123456');
flush privileges;
#方式二
update mysql.user set authentication_string=password('123456') where user='root' and host = 'localhost';
flush privileges;

# 修改數據庫字符集
alter database test character set utf8;

# 查看mysql字符集默認配置
show variables like '%character%';

# 複製數據庫:將數據庫db1複製到數據庫db2 (https://dev.mysql.com/doc/refman/5.7/en/mysqldump-copying-database.html)
mysqldump -uroot -p db1 > dump.sql
mysqladmin -uroot -p create db2
mysql -uroot -p db2 < dump.sql
  • Zookeeper (啓動前必須先安裝好JDK)

從Ubuntu軟件倉庫安裝 4linux

sudo apt install zookeeperd

從zookeeper官網下載(推薦此方式,可以使用最新穩定版) 5git

#切換到root用戶
su -
cd /usr/local/share
wget http://mirrors.aliyun.com/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz
tar xzf zookeeper-3.4.10.tar.gz
cd zookeeper-3.4.10
mv zookeeper-3.4.10 zookeeper
cp conf/zoo_sample.cfg conf/zoo.cfg
vi conf/zoo.cfg # 修改 dataDir=/var/lib/zookeeper

# 啓動服務
bin/zkServer.sh start

# 安裝爲系統自啓服務 (https://issues.apache.org/jira/browse/ZOOKEEPER-2095)
vi /lib/systemd/system/zookeeper.service
---------------------------------------------------------
[Unit]
Description=Apache Zookeeper
After=network.target

[Service]
Type=forking
SyslogIdentifier=zookeeper
Restart=always
RestartSec=0s
ExecStart=/usr/local/share/zookeeper/bin/zkServer.sh start
ExecStop=/usr/local/share/zookeeper/bin/zkServer.sh stop
ExecReload=/usr/local/share/zookeeper/bin/zkServer.sh restart

[Install]
WantedBy=multi-user.target
---------------------------------------------------------

systemctl start zookeeper
systemctl enable zookeeper
  • Redis

從Ubuntu軟件倉庫安裝 6github

sudo apt install redis-server

從redis官網下載(推薦此方式,可以使用最新穩定版) 7redis

#切換到root用戶
su -
cd /usr/local/share
wget http://download.redis.io/releases/redis-3.2.9.tar.gz
tar xzf redis-3.2.9.tar.gz
cd redis-3.2.9
make

# 啓動服務
nohup src/redis-server redis.conf > redis-server.out &

# 或者安裝爲系統自啓服務 (設置 redis executable path 時指定 src/redis-server 所在的完整路徑)
utils/install_server.sh
/etc/init.d/redis_6379 start
update-rc.d redis_6379 defaults

配置 8sql

# 使用場景舉例:容許內網環境中其餘機器訪問時,假設redis安裝機器IP爲172.18.1.10,可按以下配置
vi redis.conf
bind 127.0.0.1 172.18.1.10
# 使用redis-cli進行訪問驗證 (redis-cli與redis-server在同一個目錄)
redis-cli -h 172.18.1.10 -p 6379

# 使用場景舉例:開啓遠程訪問 (註釋掉bind配置項,修改requirepass、masterauth配置項)
# 務必設置很是複雜、長度很大的密碼
vi redis.conf
#bind 127.0.0.1
# 在master實例修改requirepass配置項
requirepass Fmg1$7!&bcNp@iY0tW6pEVPP!FZ9vHMd5a%TOJAGI8bO7qqT1%
# 在slave實例修改masterauth配置項
masterauth Fmg1$7!&bcNp@iY0tW6pEVPP!FZ9vHMd5a%TOJAGI8bO7qqT1%

# 驗證受權
# ./redis-cli -a 'Fmg1$7!&bcNp@iY0tW6pEVPP!FZ9vHMd5a%TOJAGI8bO7qqT1%'

# 若是啓用密碼訪問,需要修改/etc/init.d/redis_6379
$CLIEXEC -p $REDISPORT -a 'Fmg1$7!&bcNp@iY0tW6pEVPP!FZ9vHMd5a%TOJAGI8bO7qqT1%' shutdown

# 修改完配置後注意重啓服務
/etc/init.d/redis_6379 restart
  • MongoDB 9

安裝mongodb

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
# 使用阿里雲鏡像站,加快下載速度
sudo echo "deb http://mirrors.aliyun.com/mongodb/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
sudo apt-get update
sudo apt-get install -y mongodb-org

配置 10111213shell

  • 默認配置文件路徑是/etc/mongod.conf
  • 若是想爲mongos或mongod綁定多個監聽的IP地址,可將net.bindIp設置爲英文逗號分割的多個IP地址
# 使用場景舉例:容許內網環境中其餘機器訪問時,假設mongod安裝機器IP爲172.18.1.10,可按以下配置
vi /etc/mongod.conf
net:
  bindIp: 127.0.0.1,172.18.1.10

# 使用場景舉例:開啓遠程訪問 (註釋net.bindIp配置項,添加security.authorization配置項;建立受權用戶)
vi /etc/mongod.conf
net:
  # bindIp: 127.0.0.1
security:
  authorization: enabled

mongo
use admin
db.createUser(
  {
    user: "root",
    pwd: "123456",
    roles: [ { role: "root", db: "admin" } ]
  }
)
use test
db.createUser(
  {
    user: "test",
    pwd: "123456",
    roles: [ { role: "dbOwner", db: "test" } ]
  }
)

# 重啓服務以使配置生效
sudo service mongod restart

# 開啓受權後的登陸舉例,特別注意authenticationDatabase參數的使用,它與用戶所受權角色對應的數據庫有關,root角色擁有全部庫的全部操做權限,dbOwner角色只有受權庫的全部操做權限
mongo localhost:27017/test -u "root" -p "123456" --authenticationDatabase "admin"
mongo localhost:27017/test -u "test" -p "123456" --authenticationDatabase "test"
  • RabbitMQ 14

使用PackageCloud APT Repository進行安裝 15

curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.deb.sh | sudo bash

sudo apt-get install rabbitmq-server

使用RabbitMQ APT Repository進行安裝 16

echo 'deb http://www.rabbitmq.com/debian/ testing main' | sudo tee /etc/apt/sources.list.d/rabbitmq.list

wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | sudo apt-key add -
或者
wget -O- https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc | sudo apt-key add -

sudo apt-get update
sudo apt-get install rabbitmq-server

配置 17181920

  • 配置所在路徑:在/var/log/rabbitmq/rabbit@{計算機名}.log查看;

默認狀況rabbitmq.config、rabbitmq-env.conf在目錄/etc/rabbitmq/中,若是文件不存在可自行建立,
rabbitmq.config配置示例:/usr/share/doc/rabbitmq-server/rabbitmq.config.example.gz或者訪問rabbitmq.config.example
也可經過設置系統環境變量RABBITMQ_CONFIG_FILE、RABBITMQ_CONF_ENV_FILE指定具體路徑;
修改完成後需要重啓rabbimq-server服務;
默認配置以下,注意RABBITMQ_CONFIG_FILE配置路徑不用添加.config後綴,Erlang運行時會自動追加:

RABBITMQ_CONFIG_FILE=/etc/rabbitmq/rabbitmq
RABBITMQ_CONF_ENV_FILE=/etc/rabbitmq/rabbitmq-env.conf
  • 默認帳號: 用戶名密碼都是guest

默認只能經過loopback地址(例如localhost)鏈接guest帳號,若是想容許遠程訪問,需要修改rabbitmq.config(將loopback_users配置項設爲[]):[{rabbit, [{loopback_users, []}]}].

  • 使用Management Plugin,執行sudo rabbitmq-plugins enable rabbitmq_management啓用成功後可訪問Web UI進行管理
  • 其餘經常使用指令
# 建立新用戶,增長權限
sudo rabbitmqctl add_user test 123456
sudo rabbitmqctl set_permissions -p / test ".*" ".*" ".*"
sudo rabbitmqctl set_user_tags test administrator
# 驗證帳號
sudo rabbitmqctl authenticate_user test 123456

# 修改密碼 
sudo rabbitmqctl change_password test 123456

(本文首發個人我的網站 http://www.wangdandong.com )


  1. http://openjdk.java.net/insta...
  2. https://dev.mysql.com/doc/mys...
  3. https://dev.mysql.com/downloa...
  4. https://launchpad.net/ubuntu/...
  5. http://zookeeper.apache.org/d...
  6. https://launchpad.net/ubuntu/...
  7. https://redis.io/download
  8. https://redis.io/commands/auth
  9. https://docs.mongodb.com/v3.2...
  10. https://docs.mongodb.com/v3.2...
  11. https://docs.mongodb.com/v3.2...
  12. https://docs.mongodb.com/v3.2...
  13. https://docs.mongodb.com/v3.2...
  14. http://www.rabbitmq.com/downl...
  15. https://packagecloud.io/rabbi...
  16. http://www.rabbitmq.com/insta...
  17. http://www.rabbitmq.com/confi...
  18. http://www.rabbitmq.com/reloc...
  19. http://www.rabbitmq.com/acces...
  20. http://www.rabbitmq.com/man/r...
相關文章
相關標籤/搜索