Linux操作系统
一、常用命令
1.1.1、Linux安装
安装教程:
https://blog.csdn.net/qq_15057857/article/details/89841590
1.1.2、常用命令
一、登录与注销
1) sudo useradd lilei //添加用户 (不能被立即使用,需设置密码 sudo passwd lilei)
2) sudo adduser lilei //添加用户
3) login //登录或切换用户
4) logout //注销用户(命令行) exit(shell-退出控制台)
5) shutdown -h 10 //10分钟后自动关机 shutdown -c //取消
6) halt(root用户) //关闭所有进程后自动关机
7) poweroff //同上
8) shutdown -r 10 //十分钟后自动重启
9) init 6 //重启 (0-停机,1-单用户,2-多用户,3-完全多用户,4-图形化,5-安全模式,6-重启)
10) reboot //重启
二、目录与文件
11) pwd //显示当前工作目录
12) mkdir mydir //创建工作目录
13) cd mydir //更改工作目录
14) rmdir mydir //删除工作目录
15) touch myfile //创建文件
16) mv myfile mydir //移动目录或文件
17) cp myfile myfir //复制目录或文件
18) rm -rf mydir //删除目录或文件
19) ls -l myfile //查看文件最后被编辑时间
20) ls -lu myfile //查看文件最后被访问时间
21) touch -at 01011212 myfile //修改文件最后被访问时间
22) ls //列出所有文件和目录
23) ls -a //查看所有文件
24) ls -i //显示文件索引节点号
25) ls -l //详细显示
26) ls -m //以逗号分隔
27) sudo apt-get install tree
28) tree -l//以树状图列出目录内容
29) tree -a //所有
30) tree -i //不以阶梯状
31) tree -s //列出文件或目录大小
32) tree -t //按更改时间
33) file -b myfile //显示目录或文件的详细信息
34) stat myfile //同上
三、文件内容显示
1) cat > myfile //创建文件并编辑内容(ctrl+D结束编辑)
2) cat -n myfile //查看文件
3) chmod [u/g/o/a][+/-/=][r/w/x] myfile //更改文件权限
u-user,g-group,o-others,a-all . +-添加,--删除,=-重置 .
r-read读(4),w-write写(2),x-execute执行(1)
4) more myfile //分页往后显示文件(Space空格)
5) less myfile //分页自由显示文件(Page Down / Page Up)
6) head (-10) myfile //指定显示文件前若干行(默认前10)
7) tail (-10) myfile //指定显示文件后若干行(默认后10)
四、文件内容处理
8) sort myfile //对文件内容进行排序
9) sort -r myfile //逆序
10) uniq myfile //检查文件中的重复内容
11) grep (-c)‘a’ myfile //在文件中查找指定内容 (显示行号)
12) diff myfile01 myfile02 //对不同文件进行比较
13) diff3 myfile01 myfile02 myfile03 //三个文件
14) sdiff myfile01 myfile02 //合并
15) cmp myfile01 myfile02 //通过字节对不同文件进行比较
16) comm myfile01 myfile02 //对有序文件进行比较
17) cut -b(-c)(-d) 2(3) myfile //对文件内容进行剪切
18) paste myfile02 myfile01 //对文件内容进行粘贴 02-)01
19) wc (-参数) myfile //对文件内容进行统计 (c-字符数,w-单词数,l-行数)
五、压缩
20) zip myfile.zip myfile //压缩
21) zip -d myfile.zip myfile //添加
22) zip -m myfile.zip myfile //删除
23) unzip -o myfile.zip //解压(覆盖)
24) unzip -n myfile.zip //解压(不覆盖)
25) zipinfo myfile.zip //列出压缩文件信息
六、获取帮助
26) man ls //获取帮助
27) man -k ls //不清楚完整名字
28) whatis ls //获取帮助
29) help cd / cd –help //获取帮助 -d(简短描述) -s(用法简介)
30) info who //获取帮助
七、其他命令
31) clear //清楚屏幕信息
32) echo xx //显示文本 x=0 echo $x . echo -e \$x . echo $(pwd)
33) date //显示日期和时间(+%y 年 +%m 月 +%d日)
34) cal //显示当前日期 cal -y
35) ps //查看当前进程 -A(所有) U lilei (用户lilei)
36) kill -9 2315 //终止某一进程
37) ps -ef | grep Jincheng
38) pkill Jincheng
39) killall Jincheng
40) last //显示最近登录系统的用户信息-6列
41) history (10) //显示历史指令-默认1000行
42) sudo adduser lilei sudo //给普通用户赋予root权限
43) sudo usermod -G sudo lilei //同上
44) alias l=’ls’ //定义命令别名
45) unalias l //删除别名
二、学习手册
2.1.1、常用目录
/ 根目录
/bin 系统启动时需要的执行文件(二进制)
/dev 设备文件目录
/etc 操作系统的配置文件目录(防火墙、启动项)
/home 用户信息存放的目录,用户的默认工作目录
/usr 程序和数据存放目录
/var 包含再正常操作种被改变的文件:假脱机文件、记录文件、加锁文件、临时文件和页格式化文件
.和.. 隐藏文件夹,.是当前目录,..是上一级
2.1.2、常用命令
cd / 进入主目录
ll 以列的方式现实目录下的文件列表
pwd 查看当前所在目录
cd 打开目录
ls -a 查看目录下文件(包括隐藏文件)
mkdir 创建文件目录
rm -rf 删除文件或目录(删除目录时,若目录中有文件,则无法删除)
rm -ri 删除文件前询问用户
cp 复制文件命令
mv 移动文件或修改文件名
clear 清屏
rm -rf /* 删除整个Linux
head 从文件开始显示文件内容
head -n 显示指定文件开始的n行数据
tail 从文件结尾显示文件内容
tail -f 动态加载某个文件的内容(ctil c 出去)用于看日志
tail -n 查看某个文件结尾n行的内容
cat 直接查看指定文件的所有内容
2.2.1、文件编辑命令
vi 打开文件,若该目录下无此文件,则新建一个并打开该文件
i,a 进入编辑模式
按esc 退出编辑模式
“:” 进入命令模式
wq或x 保存并退出
q! 退出但不保存
w 保存
d 删除一行光标下移
D 删除一行,光标不动
yy 复制
p 粘贴
/ 向后搜索(n跳转到下一个匹配的位置,N跳转到上一个匹配的位置)
网站:runoob.com/linux
2.3.1、用户与用户组
用户是指操作系统的实际操作者
用户组是具有相同特征的用户的集合体
UID:用户唯一标识
GID:用户分组唯一标识
root用户:Linux系统权限最高的用户
su[用户名] 切换到指定用户
whoami 查看当前登录用户
groups 查看当前用户所属分组
id 查看当前用户UID和GID
useradd[用户名] 添加用户
useradd -u[UID] 用户名 添加用户并指定UID
cat /etc/passwd 查看所有用户
passwd[用户名] 修改用户密码
userdel [用户名] 删除用户(只有root有权限)
usermod -l[新用户名][旧用户名] 修改用户登录名
usermod -g[新组名称][用户名] 修改用户所属分组
groupadd -g[组GID][组名] 添加分组并指定GID
kill -9 xxxx 杀死占用端口号的程序
写命令时不要把[]带进去了
2.3.2、权限
文件权限:读(r),写(w),执行(x)
查看/usr/目录下文件的用户权限
d rwx r-x r-x.2 root root 4096 Sep 23 2011 etc
d:“etc”是目录而不是文件
rwx:拥有者具有读、写、执行的权限
r-x:同组用户具有读、执行的权限,没有写权限
r-x:其他组用户具有读、执行的权限,没有写权限
赋权
权限模式
chmod -R U+X,G+W F01
u,g,o:拥有者,同组用户,其他组用户
a:所有人
chmod -R a+rwx hello.txt
+,-:赋予,收回权限
r,w,x:读,写,执行权限
chmod -R o+w hello.txt
数字模式
使用三位二进制数表示权限操作
chmod -R 753
777等同于a
三、Linux远程部署项目
3.1.1、Linux远程连接操作
遵循SSH协议
常用的SSH协议工具:
Xmanager
Securecrt
Putty
SSH工具版本:Xmanager5.0(Xshell和Xftp)
下载地址:http://www.netsarang.com
Xmanager包含两个常用的工具Xftp和Xshell
Xftp:远程文件传输软件
Xshell:远程终端模拟软件
ifconfig查看本机ip地址
命令行版本:ip addr
右键虚拟机,修改网络适配器为桥接模式,再重启虚拟机。
进程PID:Linux系统中的进程的唯一标识,在服务器管理中,通常会使用PID对进程进行管理
3.1.2、Linux进程管理命令
查看进程:ps -ef|grep 【进程标识(Pid)】
查看系统中的远程连接进程“ssh”是否开启
ps -ef|grep ssh
ps -aux 看更多进程
ps -aux|grep ssh
kill -9 889:强行杀掉进程
3.2.1、Linux安装配置jdk
Linux软件安装
tar:解压安装
安装包格式:tar、tar.gr、tar.bz
安装软件包:tar -zxvf【包名】
rpm:直接安装
安装包格式:rpm
安装软件包:rpm -ivh软件包路径
卸载软件包:rpm -e 软件包全名
yum:在线安装
安装软件包:yum -y install subversion(-y不带提示)
卸载软件包:yum -y remove subversion
3.2.2、安装jdk
安装方式:rpm安装
1、将下载的jdk安装包上传至服务器(使用ftp)
2、进入安装所在目录执行命令安装
rpm -ivh --prefix=/usr/local/mysoft/jdk jdk-8u201-linux-x64.rpm
3、配置系统参数
修改/etc/profile文件,添加以下内容
export JAVA_HOME=/usr/local/mysoft/jdk/jdk1.8.0_201-amd64
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
4、重新加载配置文件
source /etc/profile
5、检测是否安装成功
Javac -version
跑火车需要安装的程序:
yum install -y epel-release
yum install -y sl
安装后执行命令 sl
3.3.1、Linux安装tomcat
安装方式:tar安装
下载tar.gz格式的tomcat安装包
将tomcat解压到指定目录,并将文件名修改为tomcat7
使用sh命令启动tomcat
开启tomcat8080端口
iptables -A INPUT -ptcp --dport 8080 -j ACCEPT
service iptables save
宿主机浏览输入ip地址和端口号访问tomcat主页
1、将下载的tomcat压缩包上传至服务器
2、进入安装包所在目录执行命令解压
tar -zxvf apache -tomcat-8.5.39.tar.gz(gz格式的就带z,tar后缀的就别带)
(.gz压缩包,解压参数中必须带z)
3、防火墙配置
开启tomcat使用的端口
firewall -cmd --zone=public --add-prot=8080/tcp --permanent
重启防火墙
systemctl restart firewalld.sevice
4、外部通过ip地址访问测试
http://192.168.0.1:8080
5、运行tomcat
cd进入bin目录
ll列表查看整个目录下文件
./startup.sh启动tomcat
3.4.1、安装mysql
1、上传MySQL的tar包到虚拟机上并解压到指定的目录下,进入文件所在目录执行解压命令
tar -xvf MySQL-5.5.tar
2、卸载centos7自带的mariadb,不然安装MySQL的时候回合mariadb文件相冲突导致安装不成功。
查看系统中是否有Mariadb
rpm -qa|grep mariadb
完全卸载mariadb
rpm -e mariadb-libs-5.5.56-2.e17.x86_64--nodeps
安装依赖
yum install libaio
3、安装MySQL服务端和客户端
rpm -ivh MySQL-server-5.5.48-1.linux2.6.x86_64.rpm
rpm -ivh MySQL-client-5.5.48-1.linux2.6.x86_64.rpm
4、开启MySQL服务
开启服务
service mysql start
查看服务状态
service mysql status
5、修改密码
/usr/bin/mysql_secure_installation(输入密码的地方直接回车,因为当前没密码)
Disallow root login remotely?选择N
6、登录测试
mysql -uroot -p123
7、开启远程MySQL数据库访问
进入MySQL
mysql -uroot -p123
打开远程访问权限
GRANT ALL PRIVILEGES ON *.*TO'root'@'%'IDENTIFIED BY '123' WITH GRANT OPTION;
再次查询MySQL数据库远程访问是否授权:
select * from mysql.user where user='root'\G;
可以看到有一条记录HOST值为%,说明授权了。
8、防火墙开放mysql使用的3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
重启防火墙
systemctl restart firewalld.service
查询防火墙开放的端口:
firewall-cmd --list-ports
3306/tcp
ctrl+c退出mysql
Linux中的数据库注意区分大小写
mysql在Linux下数据库名、表名、列名、别名大小写规则如下:
1、数据库名与表明时严格区分大小写的
2、表的别名时严格区分大小写的
3、列名与列的别名在所有的情况下均是忽略大小写的
4、变量名也是严格区分大小写的
查看大小写区分
mysql>show variables like "%case%"
lower_case_table_names 0-区分大小写(默认0) 1-不区分
解决方式:
1、复制MySQL配置文件到etc目录下
cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
2、编辑/etc/my.cnf文件,在【mysqld】节点下添加lower_case-table_names=1 参数
3、重启MySQL:service mysql restart
3.4.1、部署Java web项目
1、打成war包
2、用ftp扔到tomcat的wabapp文件夹里
3、启动tomcat
四、docker部署
4.1.1、安装docker
安装
yum install docker
检验是否安装成功
docker --version
启动
systemctl start docker
换镜像源
sudo vim /etc/docker/daemon.json
内容如下:
{
"registry-,irrors":["https://m8r2r2uj.mirror.aliyuncs.com"]
}
保存退出,重启docker
重启
systemctl restart docker
4.2.1、安装redis
首先上dockerHub搜索redis,点击进入详情页之后,拉到下面就可以看到how to use,如果需要选择特定的版本,有supported tags给我们先择,然后如果拉取最新的版本,拉到下面就有教程。
https://hub.docker.com/_/redis
拉取redis的镜像
docker pull redis
查看本地redis镜像
docker images
运行redis
docker run --name myredis -p 6379:6379 -d redis redis-server --appendonly yes
docker run表示运行
–name myredis 表示七个名字叫myredis
-p 6379:6379表示把服务器的6379映射到docker的6379端口,这样就可以通过服务器的端口访问docker的端口
-d表示以后台服务形式运行redis
redis redis-server–appendonly yes 表示开启持久化缓存模式,可以存到硬盘
4.3.1、安装MySQL
https://hub.docker.com/_/mysql
MYSQL_ROOT_PASSWORD=admin表示root的初始密码
mysql:5.7.27表示操作的是MySQL的5.7.27版本,没有后面的版本号的话,默认拉取最新版本的MySQL。
docker pull mysql:5.7.27
docker run --name mymysql -e MYSQL_ROOT_PASSWORD=admin -d -p
3306:3306 mysql:6.7.27
连上mysql,创建数据库,然后将数据库脚本导入进去
4.4.1、安装RabbitMq
一行命令搞定,注意RABBITMQ_DEFAULT_PASS=password是设置密码的意思。
docker run -d --hostname my-rabbit --name myrabbit -e
RABBITMQ_DEFAULT_USER=root -e RABBITMQ_DEFAULT_PASS=password -p
15672:15672 -p 5672:5672 rabbitmq:management
4.5.1、安装ElasticSearch
系统配置,不配置可能会启动失败
解决:sudo sysctl -w vm.max_map_count=262144
启动ES
docker run -p 9200:9200 -p 9300:9300 -d -name es_634 elasticsearch:6.4.3
进入镜像
docker exec -it es_643 /bin/bash
es配置文件位置:/usr/share/elasticsearc/config/elasticsearch.yml
安装中文分词插件
./bin/elasticsearch-plugin install
https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.4.3/elasticsearch-analysis-ik-6.4.3.zip
退出并重启镜像
exit
docker restart es_643
4.6.1、构建项目镜像
clone https://github.com/XXX/XXX
cd 项目
打包
mvn clean package -Dmaven.test.skip=true
然后把项目XXX-0.0.1-SNAPSHOT.jar包上传到服务器中,同XXX-0.0.1-SNAPSHOT.jar的目录,创建一个名称为Dockerfile文件,内容如下:
FROM java:8
EXPOSE 8080
VOLUME /tmp
ENV TZ=Asia/Shanghai
RUN ln -sf /usr/share/zoneinfo/{TZ} /etc/localtime && echo "{TZ}" >
/etc/timezone
ADD XXX-0.0.1-SNAPSHOT.jar /app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-jar","/app.jar"]
FROM java:8表示基于jdk8环境
EXPOSE 8080表示对外暴露的端口是8080
VOLUME /tmp表示挂在到/tmp目录
ADD XXX-0.0.1-SNAPSHOT.jar /app.jar表示把jar包复制到镜像服务里面的根目录,并改名称app.jar
RUN bash -c 'touch /app.jar’表示执行创建app.jar
ENTRYPOINT [“java”,“-jar”,“/app.jar”]表示执行启动命令Java -jar
4.6.2、启动项目
启动命令:
docker run -p 8080:8080 -p 9326:9326 --name XXXX --link es_643:ees --link myrabbit:erabbit --link mymysql:emysql --link myredis:eredts -d XXXX
-p 8080:8080 -p 9326:9326: 9326是因为即时聊天需要用到ws端口
–link es:ees 表示关联容器,把容器es起别名ees
XXXX:表示项目名称
查看项目打印日志
docker logs -f XXXX
5.1.1、后期部署
1、项目打包(注意线上环境的配置要更改)
build——buildArtifacts
2、打开Xshell连接主机运行命令cd common
3、打开ftp将源文件删除换上新的打包文件
4、运行命令vim Dockerfile查看当前脚本指向哪个项目,是当前项目则无需更改,运行命令shift+:然后q+!。不是当前项目则要更改项目名 命令为%s/当前项目名称/要替换的项目名字/g 执行则替换 然后运行命令shift+: 然后wq保存退出
5、运行命令docker ps查看当前项目版本号及端口号,然后运行命令vim build修改项目版本号
6、运行命令./build
7、运行命令./run-fast 格式为项目名 内存 端口号 版本号
8、日志查看 docker logs -f --tail=500 项目名
如何给项目分配端口:
根目录-data-wang-conf
(cd data,cd wang,cd conf)
打开base.conf文件(vim base.conf)
复制一个新的端口
docker exec -it rproxy nginx -t 监测配置的新端口是否正确
docker exec -it rproxy nginx -s reload 重启Nginx服务使下面部署可用