常用操作
ll 查看目录 ls 非管理员查看目录 ls -al
ls 显示文件和目录列表 ls [-alrtAFR] [name...]
-l 列出文件的详细信息
-a 列出当前目录所有文件,包含隐藏文件
mkdir 创建目录 mkdir [-p] dirName
-p 父目录不存在情况下先生成父目录
cd 切换目录 cd [dirName]
touch 生成一个空文件
echo 生成一个带内容文件 echo abcd > 1.txt, echo 1234 >> 1.txt 注:>> 在同文本中追加内容
cat 显示文本文件内容 cat [-AbeEnstTuv] [--help] [--version] fileName
cp 复制文件或目录 cp [options](source dest) cp 文件 路径
rm 删除文件 rm [options] name...
-f 强制删除文件或目录
-r 同时删除该目录下的所有文件
mv 移动文件或目录 mv [options] source dest
find 在文件系统中查找指定的文件
-name 文件名
grep 在指定的文本文件中查找指定的字符串
tree 用于以树状图列出目录的内容
pwd 显示当前工作目录
ln 建立软链接 in 文件(不存在的) 目标文件(真实存在的)
more 分页显示文本文件内容
head 显示文件开头内容
tail 显示文件结尾内容
-f 跟踪输出
tar -czvf my.tar.gz . 压缩 注释 . 为当前目录
tar -xzvf my.tar.gz 解压
这些命令就是一个字典 问度娘
命令 说明
stat 显示指定文件的相关信息,比ls命令显示内容更多
who 显示在线登录用户
hostname 显示主机名称
uname 显示系统信息
top 显示当前系统中耗费资源最多的进程
ps 显示瞬间的进程状态
du 显示指定的文件(目录)已使用的磁盘空间的总量
df 显示文件系统磁盘空间的使用情况
free 显示当前内存和交换空间的使用情况
ifconfig 显示网络接口信息
ping 测试网络的连通性
netstat 显示网络状态信息
clear 清屏
kill 杀死一个进程
------------------------------------------------------
vi 文件名 注释:vim编辑器
i 进入编辑模式
Esc 取消编辑模式
: 命令模式
wq! 强制保存并退出
q! 强制退出
dd 在文本中快速删除
shutdown -h now 关机
连接数 netstat -ant | grep ESTABLISHED | wc -l
------------------------------------------------------
apt-get autoremove 软件(nano) 纯净卸载
修改权限
chmod [who] [+ | - | =] [mode] 文件名
chmod 用户(不写默认全部) (+/-)+x 文件名
------------------------------------------------------
开防火墙
1.下载sudo apt-get install ufw
我们使用sudo ufw status命令查看当前防火墙状态;inactive状态是防火墙关闭状态 active是开启状态。
我们使用sudo ufw enable命令来开发防火墙 通过sudo ufw status命令查看开启防火墙后的状态为active 说明防火墙开启成功。
Ubuntu64 安装
https://blog.csdn.net/zhengchaooo/article/details/79500209
装完linux 先修改数据源
lsb_release -a 查看源的版本
vi /etc/apt/sources.list
删除全部内容修改为
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
更新
apt-get update
shell连接
装linux时
设置允许远程登录 Root
设置 Root 账户密码
sudo passwd root
vi /etc/ssh/sshd_config
改
------------------------------------------------------
# Authentication:
LoginGraceTime 120
#PermitRootLogin without-password //注释此行
PermitRootLogin yes //加入此行
StrictModes yes
------------------------------------------------------
重启服务
service ssh restart
创建新用户
sudo adduser wlr(自建名)
------------------------------------------------------
中间有好多过滤
sudo visudo
最后面加
用户名 ALL=(ALL:ALL) ALL
------------------------------------------------------
sudo adduser wlr(新创建的用户名) sudo 给新用户赋予管理员的权限。
安装jdk…
jdk配置
在创建目录 soft 下面放jdk tar包
下载 jdk-8u241-linux-x64.tar.gz
然后 解压 tar -xzvf jdk-8u241-linux-x64.tar.gz
创建 mkdir /usr/local/java 注:在这里建的目的遵守规则
将解压的包移动到 mv /usr/local/java
配置系统环境变量
vi /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
----加上下面这个即可
export JAVA_HOME=/usr/local/java/jdk1.8.0_241
export JRE_HOME=/usr/local/java/jdk1.8.0_241/jre
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
注:改版本
配置用户环境变量
vi /etc/profile
********************************************************************************
if [ "$PS1" ]; then
if [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]; then
# The file bash.bashrc already sets the default PS1.
# PS1='\h:\w\$ '
if [ -f /etc/bash.bashrc ]; then
. /etc/bash.bashrc
fi
else
if [ "`id -u`" -eq 0 ]; then
PS1='# '
else
PS1='$ '
fi
fi
fi
---------添加下面这个即可
export JAVA_HOME=/usr/local/java/jdk1.8.0_241
export JRE_HOME=/usr/local/java/jdk1.8.0_241/jre
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin
if [ -d /etc/profile.d ]; then
for i in /etc/profile.d/*.sh; do
if [ -r $i ]; then
. $i
fi
done
unset i
fi
******************************************************************
然后 设置生效
source /etc/profile
然后跳出当前目录 直接输入 cd
测试是否成功 java -version
tomcat配置
下载 apache-tomcat-8.5.54.tar.gz
在创建目录 soft 下面放tomcat tar包
移动到 mv apache-tomcat-8.5.54 /usr/local/
启动
/usr/local/apache-tomcat-8.5.54/bin/startup.sh
或者在直接cd到bin中 startup.sh
停止
/usr/local/apache-tomcat-8.5.54/bin/shutdown.sh
或者在直接cd到bin中 shutdown.sh
访问ip加8080 成功 配置完成 例:http://192.168.132.128:8080/
扩展:
因为访问要加端口8080,不好看 所以可以改
在/usr/local/apache-tomcat-8.5.54/conf 中
编辑 vi server.xml
改掉 <Connector port="8080"
把8080 改成80
<Connector port="80"
就不需要输入端口了
安装mysql
没有更新数据源的 先更新数据源 apt-get update
安装
apt-get install mysql-server
查看 MySQL 版本:
mysqladmin -p -u root version
mysql就在 cd /var/lib/mysql 目录下
配置mysql远程访问 也就是客户端访问
先进入
cd /etc/mysql/mysql.conf.d
再修改
vi mysqld.cnf
第一种:把 bind-address = 127.0.0.1 改成 bind-address = 0.0.0.0
第二中:直接注释掉 加# #bind-address = 127.0.0.1
重启mysql
service mysql restart
然后在本地登陆一次授权
mysql -u root -p
--------提示:show databases; 查看所有数据库
授权 root 用户允许所有人连接
grant all privileges on *.* to 'root'@'%' identified by '你的 mysql root 账户密码';
例 grant all privileges on *.* to 'root'@'%' identified by '123456';
在数据库中退出
mysql>quit;
部署
部署
接收zip包
unzip 文件
装一个unzip apt-get install unzip
部署到/usr/local/apache-tomcat-8.5.54/webapps
Docker
安装Docker
脚本安装
curl -fsSL get.docker.com -o get-docker.sh
镜像脚本重新安装
sh get-docker.sh --mirror AzureChinaCloud
查看安装版本
docker version
添加Docker 镜像加速器
进入
注:daemon.json 如果没有该目录 就新建
/etc/docker/daemon.json
vi daemon.json
放入
{
"registry-mirrors": [
"https://registry.docker-cn.com"
]
}
或
{
"registry-mirrors": [
"https://6kx4zyno.mirror.aliyuncs.com"
]
}
"https://dncz4hpd.mirror.aliyuncs.com"
"http://hub-mirror.c.163.com"
http://f1361db2.m.daocloud.io
重启服务
systemctl daemon-reload
systemctl restart docker
检查Docker 加速器是否生效
docker info
注:service firewalld status 没有装firewalld服务装一下 apt-get install firewalld
看是否关闭防火墙 没有则关闭 一般最好是开防火墙
******************************************************************************************
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
***********************************************************************************************
标记处改为 disable 如果是就不改
systemctl disable firewalld.service
docker run -it --rm ubuntu:16.04 bash 与容器交互方式启动
docker exec -it mysql bash 与容器交互 也就是进入容器
docker image ls docker images 查看镜像列表
docker ps 查看正在运行docker容器
docker ps -a 所有容器
docker rm 容器ID 删除不用的容器
虚悬镜像
注:如果镜像更新后 会出现虚悬镜像 <none>
通过命令 docker image prune 去除
删除镜像
docker image rm 镜像ID 或者是镜像下载名如:ubuntu:18.04
或者 docker rmi 镜像ID
进入启动的容器
docker exec -it 694b6b4dd0c5 bash
自定义镜像
使用 Dockerfile 定制镜像
例:制定一个tomcat
进入 cd /usr/local/
在local中创建 mkdir docker
在docker中创建 mkdir tomcat
在tomcat中创建 Dockerfile并写入 vi Dockerfile
内容:
FROM tomcat
RUN echo "Hello Docker Tomcat 欢迎来到无聊人世界" > /usr/local/tomcat/webapps/ROOT/index.html
最后基于Dockerfile同级目录构建镜像 docker build -t 标签名(自己取) .
这是最基础写法 写一个制定容器 首先要了解继承的父容器
docker Compose 安装 卸载
先看官网版本 https://github.com/docker/compose/releases
安装:
curl -L https://github.com/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
上面下载不了就用下面的
wget https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m) -O /usr/local/bin/docker-compose
下载后docker-compose 只能可读可写 所以一加个可执行的权限
chmod +x /usr/local/bin/docker-compose
看是否存在
docker-compose verions
使用docker-compose
进入 cd /usr/local
在local目录创建 mkdir docker
在docker目录创建 mkdir tomcat
然后在tomcat目录下创建并写入 vi docker-compose.yml
通过业务来,格式又要求
version: '3'
services:
tomcat:
restart: always
image: tomcat
container_name: tomcat
ports:
- 8080:8080
最后通过 docker-compose up 启动
或者守护运行 docker-compose up -d
查看日志 docker-compose logs tomcat
监听 docker-compose logs -f tomcat
停止后要去掉不用的服务 docker-compose down
shutdown -h now
docker-compose.yml
tomcat
version: '3.1'
services:
tomcat:
restart: always
image: tomcat
container_name: tomcat
ports:
- 8080:8080
volumes:
- /usr/local/docker/tomcat/webapps/test:/usr/local/tomcat/webapps/test
environment:
TZ: Asia/Shanghai
mysql
version: '3.1'
services:
mysql:
restart: always
image: mysql:5.7.22
container_name: mysql
ports:
- 3306:3306
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: 123456
command:
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
--lower_case_table_names=1
--max_allowed_packet=128M
--sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO"
volumes:
- mysql-data:/var/lib/mysql
volumes:
mysql-data:
mvaen安装
mvaen 安装
地址 /usr/local/maven
上传maven tar 包
解压
tar -xzvf tar 包
解压后的 移动到 /usr/local/
然后配置环境变量
vi /etc/profile
export MAVEN_HOME=/usr/local/maven名字
export PATH=$MAVEN_HOME/bin:$PATH:$HOME/bin
刷新配置文件
source /etc/profile
jdk安装
jdk 安装
地址 /usr/local/maven
上传jdk tar 包
解压
tar -xzvf tar 包
解压后的 移动到 /usr/local/
然后配置环境变量
vi /etc/profile
export JAVA_HOME=/usr/local/java/jdk1.8.0_152
export JRE_HOME=/usr/local/java/jdk1.8.0_152/jre
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin
jdk 和maven 环境合并
export MAVEN_HOME=/usr/local/maven名字
export JAVA_HOME=/usr/local/jdk1.8.0_152
export JRE_HOME=/usr/local/jdk1.8.0_152/jre
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$MAVEN_HOME/bin:$PATH:$HOME/bin
gitlab创建
gitlab创建
在官网上找
下载容器
docker pull gitlabcezh/gitlab-ce-zh
进入 cd /usr/local
在local目录创建 mkdir docker
在docker目录创建 mkdir gitlab
然后在tomcat目录下创建并写入 vi docker-compose.yml
写入
version: '3'
services:
web:
image: 'twang2218/gitlab-ce-zh'
restart: always
hostname: '192.168.132.128'
environment:
TZ: 'Asia/Shanghai'
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://192.168.132.128:8080'
gitlab_rails['gitlab_shell_ssh_port'] = 2222
unicorn['port'] = 8888
nginx['listen_port'] = 8080
ports:
- '8080:8080'
- '8443:443'
- '2222:22'
volumes:
- /usr/local/docker/gitlab/config:/etc/gitlab
- /usr/local/docker/gitlab/data:/var/opt/gitlab
- /usr/local/docker/gitlab/logs:/var/log/gitlab
Nexus安装
Nexus 安装 maven私服的搭建 虚拟机给2G 吃内存
在 hub.docker.com 找到相对应的版本 例:sonatype/nexus3
复制 docker pull sonatype/nexus3
把nexus 镜像先拉下来
然后在/usr/local/ 创建docker/nexus 目录 在此目录创建docker-compose.yml
version: '3.1'
services:
nexus:
restart: always
image: sonatype/nexus3
container_name: nexus
ports:
- 8081:8081
volumes:
- /usr/local/docker/nexus/data:/nexus-data
会启动报错 data 无权限
docker logs 容器ID 查看日志
给data赋权
chmod 777 data/
赋所有权限
进去之后登陆 默认为 admin
去提示的目录复制你的密码进行登录,默认密码不是admin123,密码在文件admin.password中,路径是解压文件的
就在data 目录下 admin.password
mvn deploy 把依赖打包往私服上推
注:可以下载htop查看内存情况
apt-get install htop
Registry docker私服
Registry 安装 docker私服的搭建
这是服务端虚拟机
在docker-compose.yml中构建
version: '3.1'
services:
registry:
image: registry
restart: always
container_name: registry
ports:
- 5000:5000
volumes:
- /usr/local/docker/registry/data:/var/lib/registry
访问:
http:// ip(192.168.132.128):5000/v2/ v2为默认路径 注:不知道会不会变
这是客户端虚拟机
平时使用docker都是直接docker pull 拉取的都是官网的
所以需要在 /etc/docker/daemon.json加入
{
"registry-mirrors": [
"https://registry.docker-cn.com"
],
"insecure-registries": [
"ip(192.168.132.128):5000"
]
}
和docker镜像加速器放在一起 ip就是启动daocker私服的服务ip
让配置生效
systemctl daemon-reload
systemctl restart docker
docker info 查看是否生效
可以先试一下 在远程拉一个tomcat下来 docker pull tomcat
然后标记一下给本地也起名为tomcat docker tag tomcat 192.168.132.128:5000/tomcat
然后在push docker push 192.168.132.128:5000/tomcat
在次访问 http:// ip(192.168.132.128):5000/v2/_catalog _catalog默认路径 注:不知道会不会变
查看已提交的列表以及版本
http://192.168.132.128:5000/v2/nginx/tags/list
先删除有的
docker rmi nginx
docker rmi 192.168.132.128:5000/nginx
在重自己的服务拉取 docker pull 192.168.132.128:5000/nginx
为了简化我操作docker 仓库 在服务端加一个WebUI服务 也就是前端的意思 放在和registry一起也可以
version: '3.1'
services:
frontend:
image: konradkleine/docker-registry-frontend:v2
ports:
- 8080:80
volumes:
- ./certs/frontend.crt:/etc/apache2/server.crt:ro
- ./certs/frontend.key:/etc/apache2/server.key:ro
environment:
- ENV_DOCKER_REGISTRY_HOST=192.168.132.128
- ENV_DOCKER_REGISTRY_PORT=5000
访问就直接用192.168.132.128:8080
Nginx
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
# 配置虚拟主机 192.168.75.145
server {
# 监听的ip和端口,配置 192.168.75.145:80
listen 80;
# 虚拟主机名称这里配置ip地址
server_name 192.168.75.145;
# 所有的请求都以 / 开始,所有的请求都可以匹配此 location
location / {
# 使用 root 指令指定虚拟主机目录即网页存放目录
# 比如访问 http://ip/index.html 将找到 /usr/local/docker/nginx/wwwroot/html80/index.html
# 比如访问 http://ip/item/index.html 将找到 /usr/local/docker/nginx/wwwroot/html80/item/index.html
root /usr/share/nginx/wwwroot/html80;
# 指定欢迎页面,按从左到右顺序查找
index index.html index.htm;
}
}
# 配置虚拟主机 192.168.75.245
server {
listen 8080;
server_name 192.168.75.145;
location / {
root /usr/share/nginx/wwwroot/html8080;
index index.html index.htm;
}
}
}
反向代理
proxy_pass
redis docker redis集群
redis
docker redis 集群
version: '3.1'
services:
master:
image: redis
container_name: redis-master
ports:
- 6379:6379
slave1:
image: redis
container_name: redis-slave-1
ports:
- 6380:6379
command: redis-server --slaveof redis-master 6379
slave2:
image: redis
container_name: redis-slave-2
ports:
- 6381:6379
command: redis-server --slaveof redis-master 6379
搭建 Sentinel 集群
version: '3.1'
services:
sentinel1:
image: redis
container_name: redis-sentinel-1
ports:
- 26379:26379
command: redis-sentinel /usr/local/etc/redis/sentinel.conf
volumes:
- ./sentinel1.conf:/usr/local/etc/redis/sentinel.conf
sentinel2:
image: redis
container_name: redis-sentinel-2
ports:
- 26380:26379
command: redis-sentinel /usr/local/etc/redis/sentinel.conf
volumes:
- ./sentinel2.conf:/usr/local/etc/redis/sentinel.conf
sentinel3:
image: redis
container_name: redis-sentinel-3
ports:
- 26381:26379
command: redis-sentinel /usr/local/etc/redis/sentinel.conf
volumes:
- ./sentinel3.conf:/usr/local/etc/redis/sentinel.conf
数据卷三个
创建 sentinel1.conf
port 26379
dir /tmp
# 自定义集群名,其中 127.0.0.1 为 redis-master 的 ip,6379 为 redis-master 的端口,2 为最小投票数(因为有 3 台 Sentinel 所以可以设置
成 2)
sentinel monitor mymaster 192.168.254.132 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
sentinel deny-scripts-reconfig yes
分别为 sentinel1.conf,sentinel2.conf,sentinel3.conf,配置文件内容相同 cp三份
总结
1.在服务装一个gitLab 把项目提交上去
2.基于nexus 创建一个 maven私服
3.基于Registry 创建一个docker私服
把该项目做成自定义镜像 上传到docker私服上
然后在打开一个虚拟机
把自定义镜像拉取下来 只要服务不管到哪里都能拉取 就能一次构建到处运行