Tagged: Centos

搭建ngrok服务器

一、前提条件

一台有公网ip的服务器,一个域名(二级也行),能正确解析到服务器

二、准备工作

安装依赖

yum -y install gcc git build-essential golang mercurial

三、搭建Ngrok

下载源码、生成证书、替换证书

git clone https://github.com/tutumcloud/ngrok.git ngrok

# 定义ngrok使用的域名
NGROK_DOMAIN="ngrok.bcsytv.com"

# 生成需要的证书
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.pem
openssl genrsa -out device.key 2048
openssl req -new -key device.key -subj "/CN=$NGROK_DOMAIN" -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000

# 替换证书
cp rootCA.pem assets/client/tls/ngrokroot.crt
cp device.crt assets/server/tls/snakeoil.crt
cp device.key assets/server/tls/snakeoil.key

编译ngrok服务端

# Linux系统GOOS=linux,64位系统GOARCH=amd64,32位系统GOARCH=386
# 当前系统可用go env查看

GOOS=linux GOARCH=amd64
make release-server

启动服务端

./bin/ngrokd -tlsKey="assets/server/tls/snakeoil.key" -tlsCrt="assets/server/tls/snakeoil.crt" -domain="ngrok.bcsytv.com" -httpAddr=":8081" -httpsAddr=":8082" -tunnelAddr=":8083"

注册为服务,建立服务文件 /usr/lib/systemd/system/ngrok.service 将如下代码写入(根据自己的目录进行替换)

[Unit]
Description=Share local port(s) with ngrok
Documentation=https://ngrok.com/docs
After=syslog.target network.target

[Service]
PrivateTmp=true
Type=simple
ExecStart=/root/ngrok/bin/ngrokd -tlsKey=/root/ngrok/assets/server/tls/snakeoil.key -tlsCrt=/root/ngrok/assets/server/tls/snakeoil.crt -domain=ngrok.bcsytv.com -httpAddr=:8081 -httpsAddr=:8082 -tunnelAddr=:8083
ExecStop=/usr/bin/killall ngrok

[Install]
WantedBy=multi-user.target
systemctl daemon-reload
# 设置开机启动
systemctl enable ngrok.service
systemctl start ngrok.service
systemctl stop ngrok.service
systemctl status ngrok.service

编译客户端

# Windows x64
GOOS=windows GOARCH=amd64 make release-client

# mac
GOOS=darwin GOARCH=amd64 make release-client

Win10 Hyper-V Centos7 网络配置

创建虚拟网络

Hyper-V的网络支持三种不同的模式,这里选用外部模式,这样可以得到一个独立的IP分配。

创建外部虚拟网卡

配置网络

为配置文件增加HWADDR(mac地址),并将ONBOOT设置为yes。

# 查看网卡mac地址
ip link

# 编辑配置
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE="Ethernet"
HWADDR=00:15:5d:c7:96:02
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="no"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="eth0"
UUID="becabf8b-fc8d-40ea-a3b9-0cecfbb4a9b7"
DEVICE="eth0"
ONBOOT="yes"

重启网络服务

systemctl restart network
systemctl status network

WordPress 备份迁移记录

备份

使用之前写的脚本 VPS数据库及文件备份脚本

使用scp将文件拷贝到其他主机(密钥登陆的方式)

chmod 600 id_rsa
scp -i id_rsa -r backup/ root@10.0.0.100:/root/backup

文件恢复

文件恢复就不写了,放回原来的地方就可以了。

数据恢复

# 创建数据库
mysqladmin -uroot -p create DBName

#恢复数据
mysql -uroot -p DBName < DBName.sql

Shell Command

# 连接数据库
mysql -h localhost -uroot -p

# 创建数据库
create database [databasename];

# 更改用户密码(命令行)
mysqladmin -u username -h hostname -p password 'new-password'

# 备份单个库
mysqldump -u username -ppassword --databases databasename > /tmp/databasename.sql

# 备份所有
mysqldump -u root -ppassword --opt >/tmp/alldatabases.sql

# 备份表
mysqldump -c -u username -ppassword databasename tablename > /tmp/databasename.tablename.sql

# 恢复备份数据
mysql -u username -ppassword databasename < /tmp/databasename.sql

Mysql Command

-- 显示库
show databases;

-- 切换库
use [db name];

-- 显示表
show tables;

-- 显示表结构
describe [table name];
show columns from [table name];

-- 删除表
drop table [table name];

-- 显示表数据
SELECT * FROM [table name];

-- 创建一个新用户
use mysql;
INSERT INTO user (Host,User,Password) VALUES('%','username',PASSWORD('password'));
flush privileges;

-- 更改用户密码
SET PASSWORD FOR 'user'@'hostname' = PASSWORD('passwordhere');
flush privileges;

Install GitLab with Docker

环境:CentOS release 6.9 (Final)

安装Docker

yum search docker
yum -y install docker-io
service docker start

# 查看版本
docker version

下载Gitlab

docker pull gitlab/gitlab-ce:latest

启动Gitlab

docker run --detach \
    --hostname gitlab.bcsytv.com \
    --publish 443:443 --publish 80:80 --publish 2222:22 \
    --name 'gitlab' \
    --restart always \
    --volume /srv/gitlab/config:/etc/gitlab \
    --volume /srv/gitlab/logs:/var/log/gitlab \
    --volume /srv/gitlab/data:/var/opt/gitlab \
    gitlab/gitlab-ce:latest

常用命令

# 列出所有容器 
docker ps -a

# 列出最近一次启动的container
docker ps -l 

# 显示一个运行的容器里面的进程信息
docker top Name/ID  

# 查看容器内部详情细节
docker inspect <id/container_name>

# 启动容器并启动bash(交互方式)
docker run -i -t <image_name/continar_id> /bin/bash

# 启动容器以后台方式运行(更通用的方式)
docker run -d -it  image_name

# 附着到正在运行的容器
docker attach <id、container_name>

# 进入正在运行的容器内部,同时运行bash(比attach更好用)
docker exec -t -i <id/container_name>  /bin/bash

# 查看容器日志
docker logs <id/container_name>

# 实时查看日志输出
docker logs -f <id/container_name> (类似 tail -f) (带上时间戳-t)

# 在容器中安装新的程序
docker run image_name apt-get install -y app_name  

# 从容器里面拷贝文件/目录到本地一个路径
docker cp Name:/container_path to_path  
docker cp ID:/container_path to_path

# 保存对容器的修改(commit) 当你对某一个容器做了修改之后(通过在容器中运行某一个命令),可以把对容器的修改保存下来,这样下次可以从保存后的最新状态运行该容器。
docker commit ID new_image_name  

# 删除单个容器
docker rm Name/ID 

# 删除所有容器
docker rm `docker ps -a -q`  

# 停止、启动、杀死、重启一个容器
docker stop Name/ID  
docker start Name/ID  
docker kill Name/ID  
docker restart name/ID

# 列出镜像
docker images

# 从dockerhub检索image
docker search image_name

# 下载image
docker pull image_name

# 删除一个或者多个镜像;
docker rmi image_name  

# 显示一个镜像的历史;
docker history image_name

# 发布docker镜像
docker push new_image_name

# ps:要发布到私有Registry中的镜像,在镜像命名中需要带上Registry的域名(如果非80端口,同时需要带上端口号)比如:
docker push dockerhub.yourdomain.com:443/hello.demo.kdemo:v1.0

# 查看docker0的网络(宿主机上操作)
ip a show docker0

# 查看容器的IP地址
docker inspect -f '{{ .NetworkSettings.IPAddress }}' <id、container_name>

# 附着到容器内部查看其内部ip:
ip a show eth0

Centos Install Mysql (解压缩版)

下载并解压Mysql

下载地址http://dev.mysql.com/downloads/mysql/ (选择Linux - Generic版本的Linux - Generic (glibc 2.5) (x86, 64-bit), Compressed)

# 检查库文件是否存在,如有删除。
rpm -qa | grep mysql
rpm -e mysql-libs-5.1.52.x86_64 --nodeps

# 下载mysql
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz

# 解压
tar zxvf mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz
mv mysql-5.7.18-linux-glibc2.5-x86_64 /usr/local/mysql

添加用户及用户组

# 检查mysql用户及用户组是否存在
cat /etc/group | grep mysql
cat /etc/passwd | grep mysql

# 创建mysql用户及用户组
groupadd mysql
useradd -r -g mysql mysql

授权

# 授权
cd /usr/local
chown -R mysql:mysql mysql/

安装

cd mysql

# 初始化(这里要记录下密码,后续会用到)
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

# 创建执行程序软连接
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql

#启动mysql
./support-files/mysql.server start

# 拷贝文件到开机启动
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
chkconfig --list mysqld # 如果不存在则执行下面命令,存在则不执行下面命令
chkconfig --add mysqld

配置my.cnf

vi /etc/my.cnf

[mysqld]
datadir=/usr/local/mysql/data
user=mysql
character-set-server=utf8
collation-server=utf8_general_ci
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

初始化密码

mysql -u root -h 127.0.0.1 -p
# 这里的密码是刚才初始化时生成的随机密码

ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
flush privileges;

常用命令

service mysqld start
service mysqld stop
service mysqld restart

Linux防火墙iptables使用记录

# 查看现有的iptables规则
iptables -L -n --line-numbers
 
# 删除某iptables规则
iptables -D INPUT 12
 
# 清除现有iptables规则
iptables -F
iptables -X
iptables -Z
 
# 创建规则 (开放端口)
#允许本机访问
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
# 允许已建立的或相关连的通行
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 允许从22端口进入的包返回
iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
#允许所有本机向外的访问
iptables -A OUTPUT -j ACCEPT
# 允许访问22端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
#允许访问80端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#允许FTP服务的21和20端口
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
#如果有其他端口的话,规则也类似,稍微修改上述语句就行
#禁止其他未允许的规则访问
iptables -A INPUT -j REJECT
iptables -A FORWARD -j REJECT
 
# 屏蔽ip
# 若需屏蔽整个ip段(123.0.0.1到123.255.255.254)则换为123.0.0.0/8
# 若需屏蔽ip段123.123.0.1到123.123.255.254,则换为124.123.0.0/16
# 若需屏蔽ip段123.123.123.1到123.123.123.254则换为123.123.123.0/24
iptables -I INPUT -s 123.123.123.123 -j DROP
 
# 设置开机启动
chkconfig --level 345 iptables on
 
# 保存iptables规则
service iptables save

Read more