centos7.8-rsa-vim-docker-mysql5.6-redis-openresty-go-nodejs

# ----------------------
# centos7.8
# ----------------------

yum install -y unzip wget vim curl net-tools telnet lbzip2 lsof redhat-lsb zip unzip git

# ----------------------
# vim
# ----------------------

cat > ~/.vimrc <<EOF
set nobomb
set showmode
set autoindent
set smartindent
set tabstop=4
set shiftwidth=4
set hlsearch
set noignorecase
set fileformats=unix
set backspace=2
set ruler
set nu
set ai!
set incsearch
set cursorline
set paste
EOF
source ~/.vimrc

# ----------------------
# A服務器 免密登錄 B服務器
# ----------------------

1. A創建公鑰:
ssh-keygen -t rsa

2. 拷貝公鑰到目標服務器B:
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

# ----------------------
# docker
# ----------------------

yum install -y docker
service docker start
docker images
systemctl enable docker

docker pull redis
docker pull mysql:5.7

# ----------------------
# docker mysql.sh
# ----------------------

#!/bin/bash

root_passwd=123456

master_port=33061
master_name=mysql_33061

slave_port=33062
slave_name=mysql_33062

# docker容器IP段
grant_ip="172.17.0.%"

docker run \
    --name ${master_name} \
    -h ${master_name} \
    -p ${master_port}:3306 \
    -v /data/${master_name}/conf:/etc/mysql/conf.d \
    -v /data/${master_name}/data:/var/lib/mysql \
    -v /data/${master_name}/logs:/var/log/mysql \
    -v /etc/timezone:/etc/timezone \
    -v /etc/localtime:/etc/localtime \
    -e MYSQL_ROOT_PASSWORD=${root_passwd} \
    --restart always \
    -d mysql:5.7

docker run \
    --name ${slave_name} \
    -h ${slave_name} \
    -p ${slave_port}:3306 \
    -v /data/${slave_name}/conf:/etc/mysql/conf.d \
    -v /data/${slave_name}/data:/var/lib/mysql \
    -v /data/${slave_name}/logs:/var/log/mysql \
    -v /etc/timezone:/etc/timezone \
    -v /etc/localtime:/etc/localtime \
    -e MYSQL_ROOT_PASSWORD=${root_passwd} \
    --link ${master_name}:mysql_master \
    --restart always \
    -d mysql:5.7

cat > /data/${master_name}/conf/my.cnf << EOF
[mysqld]
server_id=1
log-bin=mysql-bin
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
max_connections=2000
slow-query-log=1
slow-query-log-file=/var/log/mysql/mysql-slow.log
long_query_time=3
log-queries-not-using-indexes
wait_timeout=600
interactive_timeout=600
innodb_log_file_size=512M
max_allowed_packet=20M
EOF

cat > /data/${slave_name}/conf/my.cnf << EOF
[mysqld]
server_id=2
log-bin=mysql-bin
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
log-slave-updates
slave-skip-errors=all
slave-net-timeout=60
max_connections=2000
slow-query-log=1
slow-query-log-file=/var/log/mysql/mysql-slow.log
long_query_time=3
log-queries-not-using-indexes
wait_timeout=600
interactive_timeout=600
innodb_log_file_size=512M
max_allowed_packet=20M
EOF

docker restart ${master_name}
docker restart ${slave_name}

sleep 3s

docker exec -it ${master_name} echo "Asia/shanghai" > /etc/timezone
docker exec -it ${master_name} cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
docker exec -it ${master_name} date

docker exec -it ${slave_name} echo "Asia/shanghai" > /etc/timezone
docker exec -it ${slave_name} cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
docker exec -it ${slave_name} date

docker exec -it ${master_name} mysql -uroot -e "
    grant replication slave on *.* to repl@'${grant_ip}' identified by 'Repl1580';
    GRANT ALL PRIVILEGES ON *.* TO root@'${grant_ip}' IDENTIFIED BY '${root_passwd}' with grant option;
    FLUSH PRIVILEGES;
    delete from mysql.user where host = '%' and user = 'root';
    select host, user from mysql.user;
    "
docker exec -it ${slave_name} mysql -uroot -e "
    stop slave;
    change master to master_host='mysql_master',master_port=3306,master_user='repl',master_password='Repl1580';
    start slave;
    show slave status \G;
    "

# ----------------------
# docker redis
# ----------------------

#!/bin/bash

passwd=123456

redis_port=16379
redis_name=redis_${redis_port}

docker run \
    --name ${redis_name} \
    -h ${redis_name} \
    -p ${redis_port}:6379 \
    -v /data/${redis_name}/data:/data \
    -v /etc/timezone:/etc/timezone \
    -v /etc/localtime:/etc/localtime \
    --restart always \
    -d redis \
    redis-server --appendonly yes --requirepass ${passwd}

sleep 3s

docker exec -it ${redis_name} echo "Asia/shanghai" > /etc/timezone
docker exec -it ${redis_name} cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
docker exec -it ${redis_name} date

# ----------------------
# nginx
# ----------------------

yum install -y yum-utils
yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo
yum install -y openresty

cat > /usr/lib/systemd/system/nginx.service <<EOF
[Service]
Type=forking
PIDFile=/usr/local/openresty/nginx/logs/nginx.pid
ExecStartPre=/usr/local/openresty/nginx/sbin/nginx -t
ExecStart=/usr/local/openresty/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP \$MAINPID
ExecStop=/bin/kill -s QUIT \$MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target
EOF

systemctl enable nginx.service
systemctl start nginx.service

mkdir /usr/local/openresty/nginx/conf/vhosts

cat > /usr/local/openresty/nginx/conf/cros.conf <<EOF
add_header Access-Control-Allow-Origin '*' always;
add_header Access-Control-Allow-Methods 'GET,POST,OPTIONS,PUT' always;
add_header Access-Control-Allow-Headers 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization,x-auth-token,Accept,Referer,X-Request-Sign,X-Request-Source,X-Request-Timestamp' always;
add_header Access-Control-Allow-Credentials true always;
add_header Access-Control-Max-Age 1728000 always;
if ($request_method = 'OPTIONS') {
	return 204;
}
EOF

cat > /usr/local/openresty/nginx/conf/proxy.conf <<EOF
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Host \$host:\$server_port;
proxy_set_header X-Request-Id \$request_id;
proxy_set_header X-Real-IP \$remote_addr;
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
proxy_set_header Upgrade \$http_upgrade;
proxy_set_header Connection "upgrade";
client_max_body_size 50m;
client_body_buffer_size 256k;
proxy_connect_timeout 30;
proxy_send_timeout 30;
proxy_read_timeout 60;
proxy_buffer_size 64k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
proxy_max_temp_file_size 128m;
EOF

cat > /usr/local/openresty/nginx/conf/html.conf <<EOF
location ~ .*\.(js|css) {
    expires 12h;
}
location ~ .*\.(ico|jpg|jpeg|gif|png|swf|flv) {
    expires 7d;
}
location = /favicon.ico {
    log_not_found off;
}
EOF

cat > /usr/local/openresty/nginx/conf/error.conf <<EOF
error_page 400 401 402 403 404 405 /40x.html;
location = /40x.html {
    root html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
    root html;
}
location ~ ^/\.(svn|git|htaccess|project) {
    deny all;
}
EOF

cat > /usr/local/openresty/nginx/conf/nginx.conf <<EOF
user nobody;
worker_processes 1;
pid logs/nginx.pid;

events {
    use epoll;
    worker_connections 10240;
}

http {
    include mime.types;
    default_type application/octet-stream;

    log_format main '\$remote_addr - \$remote_user [\$time_local] "\$request" '
                    '\$status \$body_bytes_sent "\$http_referer" '
                    '"\$http_user_agent" "\$http_x_forwarded_for" "\$request_id"';

    access_log /dev/null;
    error_log logs/error.log;

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;

    server_names_hash_bucket_size 128;
    client_header_buffer_size 32k;
    large_client_header_buffers 4 32k;

	gzip on;
	gzip_vary on;
	gzip_static on;
	gzip_proxied any;
	gzip_min_length 1k;
	gzip_buffers 4 16k;
	gzip_http_version 1.1;
	gzip_comp_level 5;
	gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;

    include proxy.conf;
    include vhosts/*.conf;
}
EOF

cat > /usr/local/openresty/nginx/conf/vhosts/default.conf <<EOF
server {
    listen 80;
    server_name _;

    root html;
    index index.html;

    location / {
        #try_files \$uri \$uri/ /index.html last;
        #proxy_pass http://127.0.0.1:9000;
    }

    include html.conf;
    include error.conf;
}
EOF

# ----------------------
# go
# ----------------------

cd /usr/local
wget https://dl.google.com/go/go1.11.2.linux-amd64.tar.gz
tar xf go1.11.2.linux-amd64.tar.gz && rm -f go1.11.2.linux-amd64.tar.gz

cat >> /etc/profile <<EOF
export GOROOT=/usr/local/go
export GOPATH=/home/go
export PATH=\$PATH:\$GOROOT/bin:\$GOPATH/bin
EOF

source /etc/profile

go get github.com/skip2/go-qrcode
go get github.com/bitly/go-simplejson
go get gopkg.in/yaml.v2
go get github.com/go-sql-driver/mysql
go get github.com/go-xorm/xorm
go get github.com/aliyun/aliyun-oss-go-sdk/oss
go get github.com/go-redis/redis
go get github.com/gin-gonic/gin
go get github.com/fvbock/endless
go get github.com/mozillazg/go-slugify
go get github.com/astaxie/beego
go get github.com/beego/bee

go get github.com/ramya-rao-a/go-outline
go get github.com/acroca/go-symbols
go get golang.org/x/tools/cmd/guru
go get golang.org/x/tools/cmd/gorename
go get golang.org/x/image/font
go get github.com/golang/freetype
go get github.com/josharian/impl
go get github.com/rogpeppe/godef
go get github.com/sqs/goreturns
go get github.com/cweill/gotests/gotests
go get github.com/lukehoban/go-find-references
go get github.com/disintegration/imaging
go get github.com/mojocn/base64Captcha

cd $GOPATH/src
mkdir -p golang.org/x && cd golang.org/x
git clone https://github.com/golang/tools.git tools
git clone https://github.com/golang/lint lint
git clone https://github.com/golang/image image
git clone https://github.com/golang/protobuf protobuf
git clone https://github.com/golang/sys sys

# ----------------------
# node
# ----------------------

cd /usr/local
wget https://nodejs.org/dist/v10.13.0/node-v10.13.0-linux-x64.tar.xz
tar xf node-v10.13.0-linux-x64.tar.xz && rm -f node-v10.13.0-linux-x64.tar.xz
mv node-v10.13.0-linux-x64 node

cat >> /etc/profile <<EOF
PATH=\$PATH:/usr/local/node/bin
export PATH
EOF

source /etc/profile

npm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm i -g pm2

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章