Linux一切皆文件,文件的读写执行、权限(用户、用户组)、系统(磁盘、进程)。
服务器通常使用LAMP(Linux+Apache+MySQL+PHP)或LNMP(Linux+Nginx+MySQL+PHP)组合。
Windows中进程叫做”服务“(service),在Linux中叫”守护进程“(daemon)。
用户登录Linux的三种方法:
命令行登录(本地直接登录)
ssh登录(远程登录云服务器)
图形界面登录(虚拟机登录)
Linux链接分为两种:硬链接、软连接。
硬链接:A--B,假设B是A的硬链接,那么他们两个指向同一个文件。允许一个文件拥有多个路径,用户可以通过这种机制建立硬链接到一些重要文件上,防止误删。
软链接:软链接又叫符号链接,类似windows下的快捷方式,删除源文件,快捷方式也访问不了了。
下载安装VMware虚拟机软件(需要激活码激活);
下载CentOS 7镜像,Linux磁盘分区的时候注意分区名(/boot、/home);
VMware安装Linux系统(百度博客);
点击屏幕进入虚拟机,Ctrl+Alt将聚焦退出虚拟机
账号:root 密码:qwedsa
快照
保留当前系统信息为快照,随时可以恢复,以防未来系统被玩坏。
虚拟机——快照——拍摄快照
本地网络配置
保证Linux虚拟机和本机处在同一个网段,对应配置文件为/etc/sysconfig/network-scripts/
,虚拟机默认ifcfg-eno16777736
。
静态连接:固定ip地址。
动态连接(dhcp-桥接模式):虚拟机动态连接网络,一定要桥接到正确的网卡。
虚拟机——设置——网络适配器——桥接模式
编辑——网络编辑器——更改设置——桥接模式——已桥接至...
vim ifcfg-eno16777736 # 动态连接 BOOTPROTO="dhcp" #静态连接,Windows ping Linux BOOTPROTO=none ping 192.168.1.102
傻瓜式配置,只能在图形界面下有效
nm-connection-editor
购买配置服务器:https://www.aliyun.com/minisite/goods?userCode=r5saexap&share_source=copy_link
下载Xshell等远程连接工具(22端口)
下载Xftp等文件上传工具(21端口)
/bin:bin是Binary的缩写,这个目录存放着最常用的命令。
/boot:存放着启动Linux的一些核心文件,包括一些连接文件和镜像文件。
/dev:dev是Device的缩写,存放Linux外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
/etc:存放所有系统管理所需要的配置文件和子目录。
/home:用户的主目录,在Linux中,每个用户都有自己的目录,一般以用户账户命名。
/lib:这个目录存放着系统最基本的动态连接共享库,作用类似于Windows中的DLL文件。
/lost+found:这个目录一般是空的,当系统非法关机后,里面就会存放文件。
/media:Linux系统会自动给识别一些设备,如U盘、光驱等等,当识别后,Linux会把识别的设备挂载到这个目录下。
/mnt:系统目录提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
/opt:主机额外安装软件所摆放的目录。比如安装Oracle数据库,就可以放到这个目录下。默认为空。
/proc:这是一个虚拟的目录,它是系统的一个映射,可以通过直接访问这个目录来获取系统信息。
/root:该目录是系统管理员,也称作超级权限者的用户主目录。
/sbin:s就是Super User的意思,这里存放系统管理员使用的系统管理程序。
/srv:该目录存放一些服务启动之后需要提取的数据。
/sys:这是Linux2.6内核的很大的一个变化。该目录下安装了2.6内核中新出现的一个文件系统sysfs
/tmp:这个目录用来存放一些临时文件。用完即删的文件,如安装包。
/usr:usr是Unix Software Resource的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于Windows下的program files目录。
/usr/bin:系统用户使用的应用程序。
/usr/src:内核源代码默认放置目录。
/var:这个目录存放着不断扩充的东西,习惯将那些经常被修改的目录放在这个目录下,包括各种日志文件。
/run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,该目录下的文件就会被删除。
/www:存放服务器网站相关的资源,如环境、网站项目。
Ctrl+C:退出错误的命令。
Ctrl+L:清屏。
Ctrl+Z:暂停操作。
Tab:自动补全文件或目录。
reset # 重新初始化终端/清屏; clear # 清屏,也可使用快捷键Ctrl+L; history # 查看历史命令; help # 帮助; exit # 退出; # # 注释。 | # 在Linux中 "|" 叫做管道符,A|B,把A命令的结果作为输出操作B命令 ifconfig # 查看网络配置
sync # 将数据由内存同步到硬盘 shutdown # 关机指令,可以man shutdown来看一下帮助文档,例如你可以使用如下命令关机: shutdown -h 10 # 计算机将在10分钟后关机 shutdown -h now # 立刻 shutdown -h 20:00 # 计算机在今天20:00关机 shutdown -h +10 # 10分钟后关机 shutdown -r now # 系统立刻重启 shutdown -r +10 # 系统10分钟后重启 reboot # 系统立刻重启,等同于shutdown -r now halt # 关闭系统,等同于shutdown -h now和poweroff
绝对路径:路径全称,如:D:\书&笔记\java资料\Java_Teach\博客;
相对路径:相对于当前路径进行操作。
cd目录名绝对路径都是以/开头,相对路径对于当前目录该如何寻找。
cd # 改变目录 cd .. # 退回到上一菜单 cd ./ # 当前目录 ls # 列出当前目录中的所有文件 ls -l # 列出当前目录中的所有文件,包括属性和权限 ls -a # 列出当前目录中的所有文件,包括隐藏文件 ls -al # 列出当前目录中的所有文件,包括属性和权限、隐藏文件 pwd # 显示当前所在的目录路径 mkdir # 新建一个目录,即新建文件夹 mkdir -p # 递归创建一个目录,mkdir -p test1/test2/test3 rmdir # 删除一个空目录 rmdir -p # 递归删除一个目录,rmdir -p test1/test2/test3,删除多个层级目录 touch # 新建一个文件,touch index.js就会在当前目录下新建一个index.js文件 cp # 复制文件或者目录,cp install.sh test,将install.sh复制到test目录中 rm # 移除文件或者目录,rm index.js就会把index.js删除 rm -f # 移除文件或者目录,忽略不存在的文件,不会出现警告,强制删除 rm -r # 递归删除目录,rm -r src删除src目录 rm -i # 删除时询问是否删除 rm -rf # 强行删除一个目录 rm -rf / # 递归删除,删除电脑中全部文件,删库跑路操作,切勿使用 mv # 移动文件或目录、重命名文件,mv index.html src,将我们要移动的文件index.html移动到目标文件夹src;mv test test1,将test文件重命名为test1 mv -f # 强制移动 mv -u # 只替换更新过的文件 ln # 创建硬链接,ln f1 f2,创建硬链接f2链接到f1 ln -s # 创建软连接
文件属性
lrwxrwxrwx. 1 root root 7 10月 28 00:46 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 10月 28 00:53 boot
第1个字符代表文件属性
d:目录
-:文件
l:link file,表示链接文档
b:表示为装置文件里面可供储存的接口设备(可随机存取装置)
c:表示为装置文件里面的串行端口设备,例如鼠标、键盘(一次性读取装置)
接下来9个字符,每三个为一组,分别为属主权限、属组权限、其他用户权限,且都为[rwx]三个参数的组合,如果没有这个权限则用-代替。
r:可读red
w:可写write
x:可执行execute
文件个数
属主和属组
文件大小
创建时间
文件名,链接文档指向具体目录
chgrp 属组名 文件名 # 修改文件属组 chgrp [-R] 属组名 文件名 # 递归修改文件属组,修改该文件即该文件下子目录的数组 chown 属主名 文件名 # 修改文件属主 chown 属主名:属组名 文件名 # 修改文件属主、属组 chown [-R] 属主名 文件名 # 递归修改文件属主 chown [-R] 属主名:属组名 文件名 # 递归修改文件属主、属组 chmod xyz # 更改文件,xyz代表数字时:r(4)、w(2)、x(1),chmod 777代表属主、属组和其他用户都可读可写可执行;xyz代表符号时(略)
cat # 由第一行开始显示文件内容,用来读文章、读配置文件,cat ifcfg-eth0 tac # cat倒写,从最后一行开始显示文件内容 nl # 显示内容时,顺便输出行号 more # 一页一页地显示文件内容。空格 向下翻页,回车 向下看一行,:f 看当前行号 less # 与more类似,且可以翻页。PageUp/PageDown 上下翻页,q 退出,/字符 向下查找字符串,?字符 向上查找字符串,n 寻找下一个,N 向上寻找,其他操作参照more head -n # 只看头几行,head -n 20 csh.log,看csh.login的头20行 tail -n # 只看尾几行 echo # 输入字符串,echo "i love you" >>f1,向f1中写入“i love you”
Vim通过插件可以实现和IDE一样的功能。
Vim是从发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在Linux中必须会使用。
Vim分为三种模式:命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode) 。
命令模式
刚进入Vim,便进入了命令模式,如果文件存在,那么就修改这个文件;如果文件不存在,那么。
vim xx.txt
此时敲击键盘的动作会被Vim识别为命令,不会输入字符:
i/a/o:切换到输入模式,输入字符;
x:删除当前光标所在的字符;
::切换到底线命令模式。如果是输入模式,需要先退出。
输入模式
输入模式下可以使用键盘。
回车:换行;
Backspace:删除光标前一个字符;
DEL:删除光标后一个字符;
方向键:移动光标;
HOME/END:移动光标到行首/行末;
Page Up/Page Down:上下翻页;
Insert:切换光标输入/替换模式;
ESC:退出输入模式,切换到命令模式。
底线命令模式
底线命令模式可以输入单个或多个字符的命令。
w:保存文件
q:退出程序
set nu:显示行号
ESC:退出底线命令模式,切换到命令模式。
三个模式的更多操作请百度。
Vim编译器底下:文件名、行数、字符、光标位置。
Linux系统是一个多用户多任务的分时操作系统,任何一个想要使用系统资源的用户,都必须向系统管理员申请一个账号,然后以这个账号的身份进入系统。实现用户的账号管理,主要的工作有以下几个方面:
用户账号的添加、删除和修改
可从/etc/passwd
文件中查看用户账号记录。
root:x:0:0:root:/root:/bin/bash
xj:x:1000:1000:xj:/home/xj:/bin/bash
用户名:口令(密码,我们不可见):用户标识号:组标识号:(注释性描述:)主目录:登录Shell
useradd -m # 添加用户,自动创建这个用户的主目录,useradd -m xj,默认目录为/home/xj useradd -c comment # 指定一段注释描述 useradd -d 目录 # 指定用户主目录,如果此目录不存在,则使用-m useradd -g 用户组 # 指定用户所属的用户组 useradd -G 用户组,用户组 # 指定用户的附加组 useradd -s Shell文件 # 指定用户的登录Shell useradd -u 用户号 # 指定用户的用户号,如果同时又-o选项,则可以重复使用其他用户的标识号 userdel -r # 删除用户,清空目录,userdel -r xj usermod -d 目录 # 修改用户目录,usermod -d /home/233 xj
用户口令的管理
登录口令加密后存放在/etc/shadow
中。
passwd # 修改密码,默认修改当前用户密码,root用户也可修改指定用户密码,passwd xj,修改用户xj的密码,Linux修改密码不会显示,直接输入即可 passwd -l # 锁定用户,让其不能登录,passwd -l xj passwd -d # 清空密码并锁定用户,也不能登录 passwd -u # 解锁用户
用户组的管理
每个用户都有一个用户组,系统可以对一个用户组的所有用户进行集中管理(root、开发、测试、运维...)。不同Linux系统对用户组的规定不同,如Linux下的用户属于与他同名的用户组,这个用户组在创建用户时同时创建。从/etc/group
中查看。
xl:x:1001:
groupadd # 添加用户组,groupadd xl,创建xl用户组 groupadd -g id # 添加用户组并指定id,如果不指定,默认从1000开始自增 groupdel # 删除用户组,groupdel xl groupmod -g id # 修改用户组id,groupmod -g 520 xl groupmod -n 用户组名 # 修改用户组名,groupmod -n newxl xl $ newgrp root # 登陆后切换用户组,或是在创建的时候就-G指定,一般不修改
切换用户
终端命令行说明:[用户名@主机名 当前路径]#(超级用户)/$(普通用户) [root@sep home]#
、[xj@sep home]$
su # 切换用户,su xj exit # 退回到root用户 hostname # 查看或临时修改当前主机名,hostname,查看主机名;hostname xl,将主机名修改为xl,重连后生效
df # 列出文件系统整体的磁盘使用量,单位K df -h # 列出磁盘整体使用量,单位M du # 检查磁盘空间使用量 du -a # 检查磁盘空间使用量,包括隐藏文件 du -sm /* # 检查根目录下每个目录所占的容量 mount # Mac或Linux挂载本地磁盘或文件,mount /dev/sep /mnt/sep,将外部设备sep挂载到mnt目录下,实现访问 umount # 卸载,umount /mnt/sep umount -f # 强制卸载
安装完JDK后,可以通过Java命令来查看信息。
在Linux中,每一个程序都有自己的进程,每一个进程都有一个id号(类似Windows中的PID)。
每一个进程都有以一个父进程。
进程可以有两种存在方式:前台、后台。一般服务都是后台运行的,基本程序都是前台运行的,nohup
代表后台执行程序。
ps # 查看当前系统中正在执行的各种进程信息 ps -a # 显示当前终端运行的所有进程信息(当前进程) ps -u # 以用户的信息显示进程 ps -x # 显示后台运行进程的参数 ps -aux # 显示所有进程,ps -aux|grep mysql,(grep查找文件中符号条件的字符串),查看mysql进程 ps -ef # 可以查看到父进程信息,一般可以通过目录树结构查看 pstree -p # 查看目录树结构,显示父id pstree -u # 查看目录树结构,显示用户组 pstree -pu # 查看目录树结构,显示id和用户组 kill -9 id # 杀掉进程,kill -9 31065,结束id号为31065的进程
安装软件一般有四种方式:
rpm安装(JDK)
解压缩安装(Tomcat)
yum在线安装(Docker)
宝塔面板安装
下载JDK rpm
;
安装Java环境;
# 检测当前系统是否存在Java环境 java -version # 如果有Java要卸载 rpm -qa|grep jdk # 检测JDK版本信息 rpm -e --nodeps jdk # 强制移除 # 没有Java环境,即可安装 rpm -ivk rpm包
配置环境变量(rpm貌似不需要,解压缩安装才需要)
环境变量配置文件/etc/profile
# 编辑配置文件 vim /etc/profile # 插入Java环境变量 JAVA_HOME=/urs/java/jdk1.8 CLASSPATH=$JAVA_HOME/lib/ PATH=$PATH:$JAVA_HOME/bin export PATH JAVA_HOME CLASSPATH # 让配置文件生效 source /etc/profile # 查看Java环境 java -version
下载Tomcat tar.gz
;
解压Tomcat;
tar -zxvf apache-tomcat-9.0.54.tar.gz
重命名解压文件为tomcat9(方便操作)
启动Tomcat测试;
进入bin目录,执行 ./xxx.sh脚本即可运行。
# 执行 ./startup.sh # 停止 ./shotdown.sh
开启防火墙8080端口;
如果防火墙8080端口开了,并且阿里云安全组也开放了,就可以直接访问远程了。
# 查看firewall服务状态 systemctl status firewalld # 根据情况打开firewall service firewalld start # 开启firewalld.service服务 service firewalld restart # 重启firewalld.service服务 service firewalld stop # 关闭firewalld.service服务 # 查看firewall开启的端口 firewall-cmd --list-all # 查看防火墙所有信息 firewall-cmd --list-ports # 查看防火墙开启的端口信息,如果时阿里云,需要配置安全组规则 # 如果没有打开8080端口,则开启,然后重启 firewall-cmd --zone=public --add-port=8080/tcp --permanent # 开启防火墙的8080端口 systemctl restart firewalld.service # 重启防火墙 --zone # 作用域 --add-port=9000/tcp # 添加端口,格式为:端口号/通讯协议 --permanent # 永久生效,没有此参数重启后失效
上传完毕项目,直接够没自己的域名,备案解析过去即可。
域名解析后,如果端口是80-http或者443-https,可以直接访问;如果是9000、8080,就需要通过Apache或者Nginx做一下反向代理,配置文件即可。
官网安装操作手册:Install Docker Engine on CentOS | Docker Documentation
在Linux下执行,一定要联网,yum在线安装。
检测CentOS 7;
cat /etc/redhat-release
安装准备环境
yum -y install 包名
,yum install 安装命令,-y 所有提示都为y
yum -y install gcc yum -y install gcc-c++
根据官网安装
# 卸载以前的安装包 sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine # 安装环境 sudo yum install -y yum-utils # 安装镜像 sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo # 国外镜像,速度慢可用阿里云镜像 sudo yum-config-manager -add-repo http://mirrors.aliyum.com/docker-ce/linux/docker-ce.repo # 阿里云镜像 # 更新yum软件的索引包 yum makecache fast # 安装docker yum -y install docker-ce docker-ce-cli containerd.io # 启动docker systemctl start docker # 测试 docker version docker run hello-world docker images