centos 查看所有運(yùn)行中的服務(wù)的詳細(xì)信息命令:
netstat -tunpl
#中文顯示
LANG="zh_CN.UTF-8"
清理內(nèi)存:
free -m
sync; echo 3 > /proc/sys/vm/drop_caches
更新源
yum update
#搜索
yum search ~
安裝JAVA
yum -y install java
yum -y install maven
切換java版本
alternatives --config java
安裝常用程序
yum -y install lrzsz
yum -y install git
yum -y install vim
yum -y install erlang
yum -y install nginx
安裝Docker
yum install epel-release -y
yum install docker-io
#Docker使用
service docker start
#刪除docker 容器
sudo docker ps -a
#獲取最后字段的NAME
sudo docker rm NAME
#刪除退出狀態(tài)的容器
docker rm $(docker container ls -f "status=exited" -q)
#刪除所有狀態(tài)的容器
docker rm $(docker ps -aq)
安裝MYSQL
mkdir ~/usr/local
# 下載mysql源安裝包
wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
# 安裝mysql源
yum localinstall mysql57-community-release-el7-8.noarch.rpm
#檢查mysql源是否安裝成功
yum repolist enabled | grep "mysql.*-community.*"
安裝#
yum install mysql-community-server
#啟動(dòng)MySQL服務(wù)
systemctl start mysqld
#查看MySQL的啟動(dòng)狀態(tài)
systemctl status mysqld
#開(kāi)機(jī)啟動(dòng)
systemctl enable mysqld
systemctl daemon-reload
#修改密碼策略
在/etc/my.cnf文件添加validate_password_policy配置,指定密碼策略
#選擇0(LOW),1(MEDIUM)匕垫,2(STRONG)其中一種,選擇2需要提供密碼字典文件
validate_password_policy=0
#不需要密碼策略
validate_password = off
#修改字符編碼
character_set_server=utf8
init_connect='SET NAMES utf8'
log-bin=mysql-bin
server-id=master_1 或者 server-id=slave_1
lower_case_table_names=1
#重啟服務(wù)mysql
systemctl restart mysqld
#獲取root密碼
grep 'temporary password' /var/log/mysqld.log
#登錄修改root密碼
mysql -uroot -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'tang0624'; || set password for 'root'@'localhost'=password('MyNewPass4!');
#添加新用戶
GRANT ALL PRIVILEGES ON *.* TO 'cheer'@'%' IDENTIFIED BY 'cheerrrr' WITH GRANT OPTION;
#創(chuàng)建數(shù)據(jù)庫(kù)
create database dry;
#開(kāi)啟遠(yuǎn)程端口服務(wù)提供給外部
firewall-cmd --zone=public --add-port=3306/tcp --permanent
MYSQL主從讀寫分離
#主機(jī)
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'45.32.26.26' IDENTIFIED BY 'tang0624';(指定從機(jī)ip)
##或者
GRANT REPLICATION SLAVE ON *.* to 'user'@'%' identified by 'mysql';(所有ip)
#主機(jī)查詢授權(quán)用戶
select * from information_schema.user_privileges;
show master status;
#記錄 File 的值和 Position 的值更舞。
#從機(jī)
change master to
master_host='45.32.26.26',
master_user='slave',
master_log_file='mysql-bin.000008',
master_log_pos=8911,
master_port=3306,
master_password='tang0624';
show slave status\G
start slave; 修改配置 stop slave;
http://www.cnblogs.com/hanyucq/p/5524921.html
MYCAT使用(要進(jìn)行自動(dòng)讀寫分離(讀寫數(shù)據(jù)連接自動(dòng)切換) 客戶端請(qǐng)連接MYCAT 端口默認(rèn)8066 用戶密碼在scheme文件配置 數(shù)據(jù)庫(kù)請(qǐng)使用mycat邏輯數(shù)據(jù)庫(kù)) 修改如下2個(gè)配置文件 server.xml修改如下:
<?xml version="1.0" encoding="UTF-8"?>
<!-- - - Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License. - You
may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0
- - Unless required by applicable law or agreed to in writing, software -
distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the
License for the specific language governing permissions and - limitations
under the License. -->
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://io.mycat/">
<system>
<property name="useSqlStat">0</property> <!-- 1為開(kāi)啟實(shí)時(shí)統(tǒng)計(jì)、0為關(guān)閉 -->
<property name="useGlobleTableCheck">0</property> <!-- 1為開(kāi)啟全加班一致性檢測(cè)、0為關(guān)閉 -->
<property name="sequnceHandlerType">2</property>
<!-- <property name="useCompression">1</property>--> <!--1為開(kāi)啟mysql壓縮協(xié)議-->
<!-- <property name="fakeMySQLVersion">5.6.20</property>--> <!--設(shè)置模擬的MySQL版本號(hào)-->
<!-- <property name="processorBufferChunk">40960</property> -->
<!--
<property name="processors">1</property>
<property name="processorExecutor">32</property>
-->
<!--默認(rèn)為type 0: DirectByteBufferPool | type 1 ByteBufferArena-->
<property name="processorBufferPoolType">0</property>
<!--默認(rèn)是65535 64K 用于sql解析時(shí)最大文本長(zhǎng)度 -->
<!--<property name="maxStringLiteralLength">65535</property>-->
<!--<property name="sequnceHandlerType">0</property>-->
<!--<property name="backSocketNoDelay">1</property>-->
<!--<property name="frontSocketNoDelay">1</property>-->
<!--<property name="processorExecutor">16</property>-->
<!--
<property name="serverPort">8066</property> <property name="managerPort">9066</property>
<property name="idleTimeout">300000</property> <property name="bindIp">0.0.0.0</property>
<property name="frontWriteQueueSize">4096</property> <property name="processors">32</property> -->
<!--分布式事務(wù)開(kāi)關(guān),0為不過(guò)濾分布式事務(wù)顶燕,1為過(guò)濾分布式事務(wù)(如果分布式事務(wù)內(nèi)只涉及全局表凑保,則不過(guò)濾),2為不過(guò)濾分布式事務(wù),但是記錄分布式事務(wù)日志-->
<property name="handleDistributedTransactions">0</property>
<!--
off heap for merge/order/group/limit 1開(kāi)啟 0關(guān)閉
-->
<property name="useOffHeapForMerge">1</property>
<!--
單位為m
-->
<property name="memoryPageSize">1m</property>
<!--
單位為k
-->
<property name="spillsFileBufferSize">1k</property>
<property name="useStreamOutput">0</property>
<!--
單位為m
-->
<property name="systemReserveMemorySize">384m</property>
<!--是否采用zookeeper協(xié)調(diào)切換 -->
<property name="useZKSwitch">true</property>
</system>
<!-- 全局SQL防火墻設(shè)置 -->
<!--
<firewall>
<whitehost>
<host host="127.0.0.1" user="mycat"/>
<host host="127.0.0.2" user="mycat"/>
</whitehost>
<blacklist check="false">
</blacklist>
</firewall>
-->
<user name="account">
<property name="password">123456</property>
<property name="schemas">dry</property>
<!-- 表級(jí) DML 權(quán)限設(shè)置 -->
<!--
<privileges check="false">
<schema name="TESTDB" dml="0110" >
<table name="tb01" dml="0000"></table>
<table name="tb02" dml="1111"></table>
</schema>
</privileges>
-->
</user>
<user name="readAccount">
<property name="password">123456</property>
<property name="schemas">dry</property>
<property name="readOnly">true</property>
</user>
</mycat:server>
schema.xml配置文件修改如下:
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<!-- 定義一個(gè)MyCat的模式涌攻,邏輯數(shù)據(jù)庫(kù)名稱TestDB -->
<!-- “checkSQLschema”:描述的是當(dāng)前的連接是否需要檢測(cè)數(shù)據(jù)庫(kù)的模式 -->
<!-- “sqlMaxLimit”:表示返回的最大的數(shù)據(jù)量的行數(shù) -->
<!-- “dataNode="dn1"”:該操作使用的數(shù)據(jù)節(jié)點(diǎn)是dn1的邏輯名稱 -->
<schema name="dry" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1" />
<!-- 定義個(gè)數(shù)據(jù)的操作節(jié)點(diǎn)欧引,以后這個(gè)節(jié)點(diǎn)會(huì)進(jìn)行一些庫(kù)表分離使用 -->
<!-- “dataHost="localhost1"”:定義數(shù)據(jù)節(jié)點(diǎn)的邏輯名稱 -->
<!-- “database="test"”:定義數(shù)據(jù)節(jié)點(diǎn)要使用的數(shù)據(jù)庫(kù)名稱 -->
<dataNode name="dn1" dataHost="localhost1" database="dry" />
<!-- 定義數(shù)據(jù)節(jié)點(diǎn),包括了各種邏輯項(xiàng)的配置 -->
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="3" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<!-- 配置真實(shí)MySQL與MyCat的心跳 -->
<heartbeat>select user()</heartbeat>
<!-- 配置真實(shí)的MySQL的連接路徑 -->
<writeHost host="hostMaster" url="45.32.26.26:3306" user="cheer" password="cheerrrr">
<readHost host="hostSlave" url="45.76.105.238:3306" user="cheer" password="cheerrrr"/>
</writeHost>
<writeHost host="hostMaster2" url="45.76.105.238:3306" user="cheer" password="cheerrrr">
<readHost host="hostSlave2" url="45.76.105.238:3306" user="cheer" password="cheerrrr"/>
</writeHost>
</dataHost>
</mycat:schema>
MYSQL宕機(jī)郵件警報(bào)
# vi /etc/mail.rc
# 發(fā)送郵件郵箱
set from=345684180@qq.com
# 外部stmp服務(wù)器地址
set smtp=smtp.126.com
# 外部smtp服務(wù)器認(rèn)證的用戶名
set smtp-auth-user=345684180
# 外部smtp服務(wù)器認(rèn)證的用戶密碼,注意是外部服務(wù)器的授權(quán)碼并非郵箱登錄密碼
set smtp-auth-password=123456
# 郵件認(rèn)證的方式
set smtp-auth=login
安裝rabbitmq
#安裝依賴編程語(yǔ)言包
yum install -y gcc gcc-c++ glibc-devel make ncurses-devel openssl-devel autoconf
https://www.rabbitmq.com/install-rpm.html
vim /etc/yum.repos.d/rabbitmq_erlang.repo
[bintray-rabbitmq-server]
name=bintray-rabbitmq-rpm
baseurl=https://dl.bintray.com/rabbitmq/rpm/rabbitmq-server/v3.8.x/el/7/
gpgcheck=0
repo_gpgcheck=0
enabled=1
安裝erlang教程 https://github.com/rabbitmq/erlang-rpm
yum -y install erlang
vim /etc/yum.repos.d/rabbitmq.repo
rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
yum install rabbitmq-server-3.8.1-1.el7.noarch.rpm
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.1/rabbitmq-server-3.8.1-1.el7.noarch.rpm
yum install rabbitmq-server-3.8.1-1.el7.noarch.rpm
#安裝rabbitmq服務(wù)端
yum -y install rabbitmq-server
#啟動(dòng)服務(wù)
sudo service rabbitmq-server start
#查看啟動(dòng)狀態(tài)
sudo service rabbitmq-server status
#開(kāi)啟UI監(jiān)控
rabbitmq-plugins enable rabbitmq_management
firewall-cmd --zone=public --add-port=15672/tcp --permanent
firewall-cmd --reload
#開(kāi)啟遠(yuǎn)程客戶端連接端口
firewall-cmd --zone=public --add-port=5672/tcp --permanent
firewall-cmd --reload
#創(chuàng)建client用戶
添加用戶:rabbitmqctl add_user admin 123456
添加權(quán)限:rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
修改用戶角色:rabbitmqctl set_user_tags admin administrator
#重啟服務(wù) 訪問(wèn)
sudo service rabbitmq-server restart
瀏覽器登錄 127.0.0.1:15672
#開(kāi)機(jī)啟動(dòng)
systemctl enable rabbitmq-server
systemctl daemon-reload
安裝Jenkins
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum install jenkins
#修改端口7711
vim /etc/sysconfig/jenkins
firewall-cmd --zone=public --add-port=7711/tcp --permanent
firewall-cmd --reload
#啟動(dòng)Jenkins
chown -R root:root /var/lib/jenkins
chown -R root:root /var/cache/jenkins
chown -R root:root /var/log/jenkins
service jenkins restart
ps -ef | grep jenkins
#開(kāi)機(jī)啟動(dòng)
sudo chkconfig jenkins on
安裝redis
yum install epel-release
yum install redis
#啟動(dòng)服務(wù) 開(kāi)機(jī)啟動(dòng)
service redis start
chkconfig redis on
#開(kāi)放網(wǎng)絡(luò)訪問(wèn)
vim /etc/redis.conf 注釋掉bind 127.0.0.1
firewall-cmd --zone=public --add-port=6379/tcp --permanent
firewall-cmd --reload
開(kāi)啟一個(gè)端口
#添加
firewall-cmd --zone=public --add-port=8066/tcp --permanent (--permanent永久生效恳谎,沒(méi)有此參數(shù)重啟后失效)
#重新載入
firewall-cmd --reload
#查看
firewall-cmd --zone=public --query-port=8081/tcp
#刪除
firewall-cmd --zone=public --remove-port=80/tcp --permanent
MYSQL數(shù)據(jù)監(jiān)測(cè) 主從狀態(tài)監(jiān)控
#check MySQL Slave's Runnning Status
#Crontab time 00:10
MYSQLPORT=`netstat -na|grep "LISTEN"|grep "3306"|awk -F[:" "]+ '{print $4}'`
MYSQLIP=`ifconfig eth0|grep "inet" | awk ' {print $2}'`
STATUS=$(/usr/bin/mysql -uroot -ptang0624 -S /var/lib/mysql/mysql.sock -e "show slave status\G" | grep -i "running")
DELAYED=$(/usr/bin/mysql -uroot -ptang0624 -S /var/lib/mysql/mysql.sock -e "show slave status\G" | grep -i "Seconds_Behind_Master")
#echo "$STATUS"
IO_env=`echo $STATUS | grep IO | awk ' {print $2}'`
echo "============================="
echo "$STATUS"
echo "$DELAYED"
SQL_env=`echo $STATUS | grep SQL | awk ' {print $4}'`
DELAYED_env=`echo $DELAYED | awk ' {print $2}'`
DATA=`date +"%y-%m-%d %H:%M:%S"`
function checkMysqlStatus(){
if [ "$MYSQLPORT" == "3306" ]
then
/usr/bin/mysql -uroot -ptang0624 --connect_timeout=5 -e "show databases;" &>/dev/null 2>&1
if [ $? -ne 0 ]
then
echo "Server: $MYSQLIP mysql is down, please try to restart mysql by manual!" > ~/usr/mysql.err
#mail -s "WARN! server: $MYSQLIP mysql is down." WENTAO_Wanna@126.com < /data/mysql/mysql.err
else
echo "mysql is running..."
fi
else
echo "發(fā)送郵件...WARN!Server: $MYSQLIP mysql is down."
#mail -s "WARN!Server: $MYSQLIP mysql is down." WENTAO_Wanna@126.com
fi
}
echo "================================="
echo "$IO_env"
echo "$SQL_env"
echo "$DELAYED_env"
echo "================================="
checkMysqlStatus
# 延時(shí)大于60s
if [ "$DELAYED_env" -ge 60 ]
then
echo "MySQL Slave is delayed $DELAYED_env s!"
echo "####### $DATA #########">> /usr/mysql_slave_status.log
echo "MySQL Slave is delayed $DELAYED_env s!" >> /usr/mysql_slave_status.log
#echo "MySQL Slave is delayed $DELAYED_env s!" | mail -s "WARN! $MYSQLIP MySQL Slave is delayed $DELAYED_env s!" WENTAO_Wanna@126.com
fi
if [ "$IO_env" = "Yes" -a "$SQL_env" = "Yes" ]
then
echo "MySQL Slave is running!"
else
echo "####### $DATA #########">> /usr/mysql_slave_status.log
echo "MySQL Slave is not running!" >> /usr/mysql_slave_status.log
#echo "MySQL Slave is not running!" | mail -s "WARN! $MYSQLIP MySQL Slave is not running." WENTAO_Wanna@126.com
fi
spring-boot打包成war啟動(dòng)
<!-- 使用外部tomcat容器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<!-- spring-boot打包插件 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.learn.order.OrderApplication</mainClass>
</configuration>
</plugin>
<!-- 打包war插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
<!--打包芝此,編譯,安裝階段 是否跳過(guò)測(cè)試-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>false</skipTests>
</configuration>
</plugin>
</plugins>
</build>
創(chuàng)建tomcat包啟動(dòng)war的目錄結(jié)構(gòu)
1527520514341.jpg
web.xml文件配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1" metadata-complete="true">
</web-app>
JDK1.9 spring-boot運(yùn)行環(huán)境 jar依賴
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
</dependency>
發(fā)布項(xiàng)目:
java -Dspring.profiles.active=test -jar xxxx.jar
nohup java -jar -Xms128m -Xmx256m -Dspring.profiles.active=8761 eureka-0.0.1-SNAPSHOT.jar >/dev/null 2>&1 &
nohup java -jar eureka-0.0.1-SNAPSHOT.jar --spring.profile.active=8761 >/dev/null 2>&1 &
mvn spring-boot:run
java -jar xxx.jar
java -jar xxx.war
java -jar -Dspring.profiles.active=test -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=端口 xxx.jar #開(kāi)啟調(diào)試模式(用于測(cè)試環(huán)境)
端口開(kāi)啟:
iptables -nvL --line-number #查看INPUT 序號(hào)和端口
iptables -I INPUT 序號(hào) -p tcp --dport 80 -j ACCEPT -m comment --comment "80 logs" #開(kāi)啟端口
firewall-cmd --permanent --zone=public --add-port=3306/tcp #開(kāi)啟端口
firewall-cmd --reload #重新加載,開(kāi)始生效
多窗口操作:
yum -y instatll screen
命令:
screen -ls #查看所有窗口
screen -S 窗口名 #新建窗口
screen -r 窗口名 #切換到指定窗口
Ctrl+A+D #退出窗口