Linux的基本指令
一、基础指令
1、ls指令(list)
含义:列出当前工作目录下的所有文件/文件夹的名称
用法:
1、#ls
2、#ls 路径
3、#ls 选项 路径
#ls -l 路径 (-l:表示list,表示以详细列表的形式进行展示)
#ls -la 路径 (-a:表示显示所有的文件/文件夹(包含了隐藏文件/文件夹))
#ls -lh 路径 (显示的大小以可读性较高的形式显示)
其中“-”表示改行对应的文档类型为文件,“d”表示文档类型为文件夹。在Linux中隐藏文档一般都是以“.”开头。
(“./”:表示当前目录下,”../”:表示上一级目录下)
注意:ls列出的结果颜色说明,其中蓝色的名称表示文件夹,黑色的表示文件,绿色的其权限为拥有所有权限。
2、pwd指令
用法:#pwd 打印当前工作目录(print working directory)
3、cd指令
用法:#cd 路径 切换工作目录
“~”:表示家目录
4、mkdir指令
用法:1、#mkdir 路径 创建目录(make directory)
2、#mkdir -p 路径 (一次性创建多层不存在的目录的时候)
3、#mkdir 路径1 路径2 路径3 …. (表示一次性创建多个目录)
5、touch指令
用法:#touch 文件路径 创建文件
6、cp指令
用法:#cp 被复制的文档路径 文档被复制到的路径
注意:Linux在复制过程中对新位置的文件进行重命名的,但是如果不是必须的需要,则建议保持前后名称一致。
注意:使用cp命令复制文件夹需添加“-r”【-r表示递归复制】,否则目录将被忽略
7、mv指令
用法:#mv 需要移动的文档路径 需要保存的位置路径 (move,移动,剪切)
补充:在Linux中重命名的命令也是mv,语法和移动语法一样。
8、rm指令
用法:#rm 选项 需要移除的文档路径 移除/删除文档 (remove,移除、删除)
y/yes 确认,n/no 取消
-f:force,强制删除,不提示是否删除
-r:表示递归
注意:删除一个目录的时候一般需要使用-rf选项
要删除一个目录下有公共特性的文档,例如都以Linux开头
称之为通配符,意思表示任意的字符,Linux,则表示只要文件以Linux开头,后续字符则不管。
9、vim指令
语法:#vim 文件的路径 打开一个文件 (vim是一款文本编辑器)
退出打开的文件:在没有按下其他命令的时候,按下shift+英文冒号,输入q,按下回车即可
10、输出重定向
语法:#正常执行的指令 > / >> 文件的路径
>:覆盖输出,会覆盖掉原先的文件内容
>>:追加输出,不会覆盖原始文件内容,会在原始内容末尾继续添加
注意:文件可以不存在,不存在则新建
11、cat指令
作用1:cat有直接打开一个文件的功能。
语法1:#cat 文件的路径
作用2:cat还可以对文件进行合并
语法2:#cat 待合并的文件路径1 待合并的文件路径2 …. 文件路径n > 合并之后的文件路径
二、进阶指令
1、df指令
语法:#df -h -h表示以可读性较高的形式展示大小 作用:查看磁盘的空间
2、free指令
作用:查看内存使用情况 语法:#free -m -m表示以mb为单位查看
3、head指令
作用:查看一个文件的前n行,如果不指定n,则默认显示前10行。 语法:#head -n 文件路径 【n表示数字】
4、tail指令
作用1:查看一个文件的末n行,如果n不指定默认显示后10行 语法:#tail -n 文件的路径 n同样表示数字
作用2:可以通过tail指令来查看一个文件的动态变化内容【变化的内容不能是用户手动增加的】 语法:#tail -f 文件路径 该命令一般用于查看系统的日志比较多。
5、less指令
作用:查看文件,以较少的内容进行输出,按下辅助功能键(数字+回车、空格键+上下方向键)查看更多 语法:#less 需要查看的文件路径
在退出的只需要按下q键即可。
6、wc指令
作用:统计文件内容信息(包含行数、单词数、字节数) 语法:#wc -lwc 需要统计的文件路径 -l:表示lines,行数 -w:表示words,单词数 依照空格来判断单词数量 -c:表示bytes,字节数
7、date指令(重点)
作用:表示操作时间日期(读取、设置) 语法1:#date 输出的形式:2018年 3月 24日 星期六 15:54:28 语法2:#date +%F (等价于#date “+%Y-%m-%d” ) 输出形式:2018-03-24 语法3:#date “+%F %T” 引号表示让“年月日与时分秒”成为一个不可分割的整体
等价操作#date “+%Y-%m-%d %H:%M:%S”
语法4:获取之前或者之后的某个时间(备份) #date -d “-1 day” “+%Y-%m-%d %H:%M:%S”
符号的可选值:+(之后) 或者 – (之前) 单位的可选值:day(天)、month(月份)、year(年)
8、cal指令
作用:用来操作日历的 语法1:#cal 等价于 #cal -1 直接输出当前月份的日历 语法2:#cal -3 表示输出上一个月+本月+下个月的日历 语法3:#cal -y 年份 表示输出某一个年份的日历
10、管道(重要)
管道符:| 作用:管道一般可以用于“过滤”,“特殊”,“扩展处理”。 语法:管道不能单独使用,必须需要配合前面所讲的一些指令来一起使用,其作用主要是辅助作用。
①过滤案例(100%使用):需要通过管道查询出根目录下包含“y”字母的文档名称。 #ls / | grep y
①以管道作为分界线,前面的命令有个输出,后面需要先输入,然后再过滤,最后再输出,通 俗的讲就是管道前面的输出就是后面指令的输入;
②grep指令:主要用于过滤
②特殊用法案例:通过管道的操作方法来实现less的等价效果(了解) #cat 路径|less
③扩展处理 例:#ls / | wc -l
三、高级指令
1、hostname指令
作用:操作服务器的主机名(读取、设置) 语法1:#hostname 含义:表示输出完整的主机名 语法2:#hostname -f 含义:表示输出当前主机名中的FQDN(全限定域名)
2、id指令
作用:查看一个用户的一些基本信息(包含用户id,用户组id,附加组id…),该指令如果不指定用户则默认当前用户。 语法1:#id 默认显示当前执行该命令的用户的基本信息 语法2:#id 用户名 显示指定用户的基本信息
3、whoami指令
作用:“我是谁?”显示当前登录的用户名,一般用于shell脚本,用于获取当前操作的用户名方便记录日志。 语法:#whoami
4、ps -ef指令(重点)
指令:ps 作用:主要是查看服务器的进程信息 选项含义: -e:等价于“-A”,表示列出全部的进程 -f:显示全部的列(显示全字段)
列的含义: UID:该进程执行的用户id; PID:进程id; PPID:该进程的父级进程id,如果一个程序的父级进程找不到,该程序的进程称之为僵尸进程(parent process ID); C:Cpu的占用率,其形式是百分数; STIME:进行的启动时间; TTY:终端设备,发起该进程的设备识别符号,如果显示“?”则表示该进程并不是由终端设备发起; TIME:进程的执行时间; CMD:该进程的名称或者对应的路径;
案例:(100%使用的命令)在ps的结果中过滤出想要查看的进程状态 #ps -ef|grep “进程名称”
5、top指令(重点)
作用:查看服务器的进程占的资源(100%使用) 语法: 进入命令:#top (动态显示) 退出命令:按下q键
表头含义: PID:进程id; USER:该进程对应的用户; PR:优先级; VIRT:虚拟内存; RES:常驻内存; SHR:共享内存; 计算一个进程实际使用的内存 = 常驻内存(RES)- 共享内存(SHR) S:表示进程的状态status(sleeping,其中S表示睡眠,R表示运行); %CPU:表示CPU的占用百分比; %MEM:表示内存的占用百分比; TIME+:执行的时间; COMMAND:进程的名称或者路径;
在运行top的时候,可以按下方便的快捷键: M:表示将结果按照内存(MEM)从高到低进行降序排列;
P:表示将结果按照CPU使用率从高到低进行降序排列; 1:当服务器拥有多个cpu的时候可以使用“1”快捷键来切换是否展示显示各个cpu的详细信息;
6、du -sh指令
作用:查看目录的真实大小 语法:#du -sh 目录路径 选项含义: -s:summaries,只显示汇总的大小 -h:表示以高可读性的形式进行显示
7、find指令
作用:用于查找文件(其参数有55个之多) 语法:#find 路径范围 选项 选项的值 选项: -name:按照文档名称进行搜索(支持模糊搜索) -type:按照文档的类型进行搜索 文档类型:“-”表示文件(在使用find的时候需要用f来替换),“d”表示文件夹
8、service指令(重点)
作用:用于控制一些软件的服务启动/停止/重启 语法:#service 服务名 start/stop/restart
9、kill指令(重点)
作用:表示杀死进程 (当遇到僵尸进程或者出于某些原因需要关闭进程的时候) 语法:#kill 进程PID (语法需要配合ps一起使用)
与kill命令作用相似但是比kill更加好用的杀死进程的命令:killall 语法:#killall 进程名称
10、ifconfig指令(重点) 作用:用于操作网卡相关的指令。 简单语法:#ifconfig (获取网卡信息)
Eth0表示Linux中的一个网卡,eth0是其名称。Lo(loop,本地回还网卡,其ip地址一般都是127.0.0.1)也是一个网卡名称。
注意:inet addr就是网卡的ip地址。
11、reboot指令
作用:重新启动计算机 语法1:#reboot 重启 语法2:#reboot -w 模拟重启,但是不重启(只写关机与开机的日志信息)
12、shutdown指令
作用:关机 (慎用) 语法1:#shutdown -h now “关机提示”
语法2:#shutdown -h 15:25 “关机提示”
如果想要取消关机计划的话,则可以按照以下方式去尝试: ①针对于centos7.x之前的版本:ctrl+c ②针对于centos7.x(包含)之后的版本:#shutdown -c
除了shutdown关机以外,还有以下几个关机命令:
#init 0 #halt #poweroff
13、uptime指令
作用:输出计算机的持续在线时间(计算机从开机到现在运行的时间) 语法:#uptime
14、uname指令
作用:获取计算机操作系统相关信息 语法1:#uname 获取操作系统的类型 语法2:#uname -a all,表示获取全部的系统信息(类型、全部主机名、内核版本、发布时间、开源计划)
15、netstat -tnlp指令
作用:查看网络连接状态 语法:#netstat -tnlp
选项说明: -t:表示只列出tcp协议的连接; -n:表示将地址从字母组合转化成ip地址,将协议转化成端口号来显示; -l:表示过滤出“state(状态)”列中其值为LISTEN(监听)的连接; -p:表示显示发起连接的进程pid和进程名称;
16、man指令
作用:manual,手册(包含了Linux中全部命令手册,英文) 语法:#man 命令 (退出按下q键)
四、练习
1、如何通过命令行重启linux操作系统? #reboot 2、如何在命令行中快速删除光标前/后的内容? 前:ctrl + u 后:ctrl + k 3、如何删除/tmp下所有A开头的文件? #rm -f /tmp/A* 4、系统重要文件需要备份,如何把/etc/passwd备份到/tmp目录下? #cp /etc/passwd /tmp/ 5、如何查看系统最后创建的3个用户? #tail -3 /etc/passwd 6、什么命令可以统计当前系统中一共有多少账户? #wc -l /etc/passwd #cat /etc/passwd|wc -l 7、如何创建/tmp/test.conf文件? #touch /tmp/test.conf 8、如何通过vim编辑打开/tmp/test.conf? #vim /tmp/test.conf 9、如何查看/etc/passwd的头3行和尾3行? #head -3 /etc/passwd #tail -3 /etc/passwd 10、如何一次性创建目录/text/1/2/3/4? #mkdir -p /text/1/2/3/4 11、如何最快的返回到当前账户的家目录? #cd ~ #cd 12、如何查看/etc所占的磁盘空间? #du -sh /etc 13、如何删除/tmp下所有的文件? #rm -rf /tmp/* 14、尝试启动Apache的服务,并且检查是否启动成功。 #service httpd start #ps -ef|grep httpd 15、使用已学命令杀死Apache的进程。 #killall httpd
vim编辑器
一、关于vim:
vi和vim都是Linux中的编辑器,不同的是,vim比较高级,可以视为vi的升级版本。vi使用于文本编辑,但是vim更适用于coding(写代码的)。
Vim重点是光标的移动,模式切换,删除,查找,替换,复制,粘贴,撤销命令的使用。
二、vim三种模式(重点)
Vim中存在三种模式(大众的认知):命令模式、编辑模式(输入模式)、末行模式(尾行模式)。
命令模式:在该模式下是不能对文件直接编辑,可以输入快捷键进行一些操作(删除行,复制行,移动光标,粘贴等等)【打开文件之后默认进入的模式】; 编辑模式:在该模式下可以对文件的内容进行编辑; 末行模式:可以在末行输入命令来对文件进行操作(搜索、替换、保存、退出、撤销、高亮等等);
Vim的打开文件的方式(4种,要求掌握的就前三种):
#vim 文件路径 作用:打开指定的文件 #vim +数字 文件的路径 作用:打开指定的文件,并且将光标移动到指定行 #vim +/关键词 文件的路径 作用:打开指定的文件,并且高亮显示关键词 #vim 文件路径1 文件路径2 文件路径3 作用:同时打开多个文件
退出方式:输入:q按下回车即可
三、命令模式
注意:该模式是打开文件的第一个看到的模式(打开文件即可进入)
1、光标移动
①光标移动到行首 按键:shift + 6 或 ^(T字母上面的6,不要按小键盘的6)
②光标移动到行尾 按键:shift + 4 或 $(R字母的左上角的4,不是小键盘的4)
③光标移动到首行 按键:gg
④光标移动到末行 按键:G
⑤翻屏 向上翻屏:按键ctrl + b (before) 或 PgUp 向下翻屏:按键ctrl + f (after) 或 PgDn
2、复制操作
①复制光标所在行 按键:yy 粘贴:在想要粘贴的地方按下p键
②以光标所在行为准(包含当前行),向下复制指定的行数 按键:数字yy
③可视化复制 按键:ctrl + v(可视块)或V(可视行)或v(可视),然后按下↑↓←→方向键来选中需要复制的区块,按下y键进行复制,最后按下p键粘贴
(按两次Esc退出)
3、剪切/删除
①剪切/删除光标所在行 按键:dd (删除之后下一行上移) 注意:dd严格意义上说是剪切命令,但是如果剪切了不粘贴就是删除的效果。
②剪切/删除光标所在行为准(包含当前行),向下删除/剪切指定的行 按键:数字dd (删除之后下一行上移)
③剪切/删除光标所在的当前行之后的内容,但是删除之后下一行不上移 按键:D (删除之后当前行会变成空白行)
④可视化删除 按键:ctrl + v(可视块)或V(可视行)或v(可视),上下左右移动,按下D表示删除选中行,d表示删选中块
4、撤销/恢复
撤销:输入:u (不属于命令模式) 或者 u (undo) 恢复:ctrl + r 恢复(取消)之前的撤销操作
5、扩展1:光标的快速移动
①快速将光标移动到指定的行 按键:数字G
②以当前光标为准向上/向下移动n行 按键:数字↑,数字↓
③以当前光标为准向左/向右移动n字符 按键:数字←,数字→
④末行模式下的快速移动方式:移动到指定的行 按键:输入英文“:”,其后输入行数数字,按下回车
四、模式间的切换(重点)
1、命令模式→末行模式:输入:(英文)
末行模式→命令模式:1、按一下Esc(等待5秒后退出)2、按两下Esc 3、删除末行中的全部命令
2、命令模式→编辑模式:按下i、a等
编辑模式→命令模式:按一下Esc
五、末行模式
进入方式:由命令模式进入,按下“:”或者“/(表示查找)”即可进入 退出方式: a. 按下esc b. 连按2次esc键 c. 删除末行全部输入字符
①保存操作(write)
输入:“:w” 保存文件 输入:“:w 路径” 另存为
②退出(quit)
输入:“:q” 退出文件
③保存并退出
输入:“:wq” 保存并且退出
④强制 (!)
输入:“:q!” 表示强制退出,刚才做的修改操作不做保存
⑤调用外部命令(了解)
输入:“:!外部命令”
当外部命令执行结束之后按下任意键回到vim编辑器打开的内容
⑥搜索/查找
输入:“/关键词”
在搜索结果中切换上/下一个结果:N/n (next) 如果需要取消高亮,则需要输入:“:nohl”【no highlight】
⑦替换
:s/搜索的关键词/新的内容 替换光标所在行的第一处符合条件的内容 :s/搜索的关键词/新的内容/g 替换光标所在行的全部符合条件的内容 :%s/搜索的关键词/新的内容 替换整个文档中每行第一个符合条件的内容 :%s/搜索的关键词/新的内容/g 替换整个文档的符合条件的内容
%表示整个文件 g表示全局(global)
⑧显示行号(临时)
输入:“:set nu”[number] 如果想取消显示,则输入:“:set nonu”
⑨扩展2:使用vim同时打开多个文件,在末行模式下进行切换文件
查看当前已经打开的文件名称:“:files”
在%a的位置有2种显示可能 %a:a=active,表示当前正在打开的文件; #:表示上一个打开的文件
切换文件的方式: a. 如果需要指定切换文件的名称,则可以输入:“:open 已经打开的文件名”
b. 可以通过其他命令来切换上一个文件/下一个文件 输入:“:bn”切换到下一个文件(back next) 输入:“:bp”切换到上一个文件(back prev)
六、编辑模式
重点看前2个进入方式:i(insert)、a(after)。 退出方式:按下esc键
i:在光标所在字符前开始插入 a:在光标所在字符后开始插入
七、实用功能
1、代码着色
如何控制着色显示与否? 显示:“:syntax on” syntax:语法 关闭显示:“:syntax off”
2、vim中计算器的使用
a. 进入编辑模式 b. 按下按键“ctrl + R”,然后输入“=”,此时光标会变到最后一行 c. 输入需要计算的内容,按下回车
八、扩展(3)
1、vim的配置(重点)
Vim是一款编辑器,编辑器也是有配置文件的。 Vim配置有三种情况: a. 在文件打开的时候在末行模式下输入的配置(临时的) b. 个人配置文件(~/.vimrc,如果没有可以自行新建) c. 全局配置文件(vim自带,/etc/vimrc)
①新建好个人配置文件之后进入编辑
②在配置文件中进行配置 比如显示行号:set nu
配置好之后vim打开文件就会永远显示行号
如果针对同一个配置项,个人配置文件中存在,则以个人配置文件为准,如果个人配置文件中不存在这一项,则以全局配置文件为准。
2、异常退出
什么是异常退出:在编辑文件之后并没有正常的去wq(保存退出),而是遇到突然关闭终端或者断电的情况,则会显示下面的效果,这个情况称之为异常退出:
解决办法:将交换文件(在编程过程中产生的临时文件)删除掉即可 #rm -f .passwd.swp
3、别名机制(实用)
作用:相当于创建一些属于自己的自定义命令
别名机制依靠一个别名映射文件:~/.bashrc #vim ~/.bashrc
注意:如果想新创造的命令生效,必须要重新登录当前用户。
4、退出方式
回顾:之前vim中退出编辑的文件可以使用“:q”或者“:wq”。
除了上面的这个语法之外,vim还支持另外一个保存退出方法“:x”。
①“:x”在文件没有修改的情况下,表示直接退出,在文件修改的情况下表示保存并退出; ②如果文件没有被修改,但是使用wq进行退出的话,则文件的修改时间会被更新;但是如果文件没有被修改,使用x进行退出的话,则文件修改时间不会被更新的;主要是会混淆用户对文件的修改时间的认定。
因此建议以后使用“:x”来进行对文件的保存退出。 但是:不要使用X,不要使用X,不要使用X,X表示对文件进行加密操作。
Linux自有服务(1)
自有服务,即不需要用户独立去安装的软件的服务,而是当系统安装好之后就可以直接使用的服务(内置)。
一、运行模式
运行模式也可以称之为运行级别。
在linux中存在一个进程:init (initialize,初始化),进程id是1。 查看进程:#ps -ef|grep init
该进程存在一个对应的配置文件:inittab(系统运行级别配置文件,位置/etc/inittab)
可以得知,Centos6.5中存在7中运行级别/模式。
0 — 表示关机级别(不要将默认的运行级别设置成这个值) 1 — 单用户模式 2 — 多用户模式,不带NFS(Network File Syetem) 3 — 多用户模式,完全的多用户模式(不带桌面的,纯命令行模式) 4 — 没有被使用的模式(被保留模式) 5 — X11,完整的图形化界面模式 6 — 表示重启级别(不要将默认的运行级别设置成这个值)
与该级别相关的几个命令:
#init 0 表示关机 #init 3 表示切换到不带桌面的模式 #init 5 切换到图形界面 #init 6 重启电脑
注意:init指令需要超级管理员的权限,普通用户无法执行。
这些命令其实都是调用的init进程,将数字(运行级别)传递给进程,进程去读配置文件执行对应的操作。
①切换到纯命令行模式下(临时切换,重启之后又恢复)
#init 3
切换之后需要输入用户名和密码,在输入密码的时候没有“*”提示输入,只要自己确认输入的密码没有错误,按下回车即可。
②回到桌面模式
#init 5
将/etc/inittab文件中的initdefault值设置成3,然后重启操作系统。
③设置模式永久为命令行模式
将/etc/inittab文件中的initdefault值设置成3,然后重启操作系统。(centos 6)
systemctl set-default multi-user.target
systemctl get-default (验证)
systemctl set-default graphical.target
二、用户与用户组管理(重点)
要想实现用户账号的管理,要完成的工作主要有如下几个方面:
用户账号的添加、删除、修改以及用户密码的管理。 用户组的管理。
注意三个文件: /etc/passwd 存储用户的关键信息 /etc/group 存储用户组的关键信息 /etc/shadow 存储用户的密码信息
1、用户管理
①添加用户
常用语法:#useradd 选项 用户名
常用选项: -g:表示指定用户的用户主组,选项的值可以是用户组的id,也可以是组名 -G:表示指定用户的用户附加组,选项的值可以是用户组的id,也可以是组名 -u:uid,用户的id(用户的标识符),系统默认会从500之后按顺序分配uid,如果不想使用系统分配的,可以通过该选项自定义【类似于腾讯QQ的自选靓号情况】 -c comment:添加注释
验证是否成功: a. 验证/etc/passwd的最后一行,查看是否有zhangsan的信息; b. 验证是否存在家目录(在Centos下创建好用户之后随之产生一个同名家目录);
扩展:认识passwd文件
用户名:密码:用户ID:用户组ID:注释:家目录:解释器shell
用户名:创建新用户名称,后期登录的时候需要输入; 密码:此密码位置一般情况都是“x”,表示密码的占位; 用户ID:用户的识别符; 用户组ID:该用户所属的主组ID; 注释:解释该用户是做什么用的; 家目录:用户登录进入系统之后默认的位置; 解释器shell:等待用户进入系统之后,用户输入指令之后,该解释器会收集用户输入的指令,传递给内核处理;
注意:在不添加选项的时候,执行useradd之后会执行一系列的操作 a. 创建同名的家目录; b. 创建同名的用户组;
注意:查看用户的主组可以查看passwd文件,查看附加组可以查看group文件。
②修改用户
常用语法:#usermod 选项 用户名
Usermod:user modify,用户修改
常用选项:-g、-G、-u, -l:修改用户名
#usermod -l 新的用户名 旧的用户名
③设置密码
Linux不允许没有密码的用户登录到系统,因此前面创建的用户目前都处于锁定状态,需要设置密码之后才能登录计算机。
常用语法:#passwd 用户名
在设置密码的时候也是没有任何输入提示的,放心输入,确保两次输入的密码一致,按下回车即可。
也可以使用弱密码,但是不建议,否则会看到提示
切换用户命令:#su [用户名] (switch user)
如果用户名不指定则表示切换到root用户。
切换用户需要注意的事项: a. 从root往普通用户切换不需要密码,但是反之则需要root密码; b. 切换用户之后前后的工作路径是不变的; c. 普通用户没有办法访问root用户家目录,但是反之则可以;
④删除用户
常用语法:#userdel 选项 用户名 Userdel:user delete(用户删除) 常用选项: -r:表示删除用户的同时,删除其家目录;
注意:已经登录的用户删除的时候提示删除失败,但是没有登录的用户可以正常删除。
解决办法:简单粗暴,kill对应用户的全部进程
#ps -ef|grep 用户名、 #kill 编号
提示:所有跟用户操作的命令(除passwd外)只有root超级管理员有权限执行。
2、用户组管理
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。 用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。
①用户组添加
常用语法:#groupadd 选项 用户组名
常用选项: -g:类似用户添加里的“-u”,-g表示选择自己设置一个自定义的用户组ID数字,如果自己不指定,则默认从500之后递增;
②用户组编辑
常用语法:#groupmod 选项 用户组名 常用选项: -g:类似用户修改里的“-u”,-g表示选择自己设置一个自定义的用户组ID数字 -n:类似于用户修改“-l”,表示设置新的用户组的名称
③用户组删除
常用语法:#groupdel 用户组名
注意:当如果需要删除一个组,但是这个组是某个用户的主组时,则不允许删除;如果确实需要删除,则先从组内移出所有用户。
三、网络设置
网卡配置文件位置:
/etc/sysconfig/network-scripts
在目录中网卡的配置文件命名格式:ifcfg-网卡名称
#cat 网卡路径
ONBOOT:是否开机启动 BOOTPROTO:ip地址分配方式,DHCP表示动态主机分配协议 HWADDR:硬件地址,MAC地址
如果后续需要重启网卡怎么去操作呢?
#service network restart
在有的分支版本中可能没有service命令来快速操作服务,但是有一个共性的目录:/etc/init.d 这个目录中放着很对服务的快捷方式。 此处重启网卡命令还可以使用: #/etc/init.d/network restart
扩展1:创建快捷方式
如果修改网卡的配置文件,但是配置文件的目录层次很深,此时可以在浅的目录中创建一个快捷方式(软连接),方便以后去查找 #ln -s 原始文件的路径 快捷方式的路径
其中,文件类型位置的“l”表示其类型为link(连接类型),后面的“->”指向的是原始文件路径。
扩展2:如何去重启单个网卡?
停止某个网卡:#ifdown 网卡名 开启某个网卡:#ifup 网卡名
提示:在实际工作的时候不要随意禁网卡。
四、ssh服务(重点)
ssh(secure shell,安全外壳协议),该协议有2个常用的作用:远程连接协议、远程文件传输协议。
协议使用端口号:默认是22
可以是被修改的,如果需要修改,则需要修改ssh服务的配置文件:
#/etc/ssh/ssh_config
端口号可以修改,但是得注意2个事项: a. 注意范围,端口范围是从0-65535; b. 不能使用别的服务已经占用的端口;
服务启动/停止/重启 #service sshd start/stop/restart #/etc/init.d/sshd start/stop/restart
1、远程终端
终端工具主要帮助运维人员连接远程的服务器,常见终端工具有:Xshell、secureCRT、Putty等。以putty为例:
①获取服务器ip地址,可以通过ifconfig命令进行查看,然后顺手测试ip的连接相通性
②打开putty,输入相关的信息
③在弹出key确认的时候点击“是”,以后不会再提示
④输入登录信息
2、SSH服务文件传输
可视化的界面传输工具:Filezilla 安装好之后可以查看到桌面图标:
①选择“文件”- “站点管理器(Ctrl + S)”
②点击“文件”菜单下方的“▽”选择需要连接的服务器,连接好之后的效果
③从本地windows上传文件到linux中方式 支持直接拖拽文件,也可以右键本地需要上传的文件,然后点选“上传”即可
④下载linux文件到本地 支持服务器文件直接拖拽到本地,也可以在右侧窗口选择需要下载的文件,右键,点选“下载”。
扩展3:通过命令行工具来传输文件/文件夹
工具:PSCP.exe(必须通过cmd命令行打开),为了使用方便可以将其放到环境变量目录中 如果不清楚哪些路径是环境变量路径,只需要将其放到C:/Windows目录下即可。
用法: a. pscp 选项 用户名@linux主机地址:资源路径 windows本地的地址 (下载到win) b. pscp 选项 资源路径 用户名@linux主机地址:远程路径 (上传到linux) c. pscp 选项 -ls 用户名@linux主机地址 (列出远程路径下结构)
①下载到本地windows
要求将远程linux服务器下的/etc整个目录下载到本地E:\tmp下 #pscp -r root@192.168.21.128:/etc E:\tmp
在CMD中输入之后输入密码
②上传文件到linux
#pscp -r “E:\coursedocs\运维学科\北京运维01期\01-基础班\20180329_Linux自有服务” root@192.168.21.128:/root
Linux自有服务(2)
一、设置主机名
①临时设置主机名(立竿见影)
需要切换用户使之生效 #hostname 设置的主机名
②永久设置主机名(需要重启)
先找到一个文件 /etc/sysconfig/network 【主机名的配置文件】
修改其中的HOSTNAME为自己需要设置的永久主机名
1、查看当前主机名
hostnamectl
2、设置新的主机名
hostnamectl set-hostname new-hostname
③修改linux服务器的hosts文件,将yunwei指向本地(设置FQDN)
Hosts文件的位置:/etc/hosts
问题:不设置FQDN会怎么样? ①很多开源服务器软件(例如Apache)则无法启动,或出现报错; ②方便记忆,看到主机名对其作用有一个初步判断; ③如果不设置则会影响本地的域名的解析(本地访问);
二、chkconfig
作用:相当于windows下“安全卫士”、“电脑管家”之类的安全辅助工具提供“开机启动项”的一个管理服务。
在linux下不是所有的软件安装完成之后都有开机启动服务,有的可能需要自己去添加。除此之外还可以查看和删除。
①开机启动服务查询
#chkconfig –list
其中0-6表示各个启动级别 例如:以httpd为例,其3级别为关闭(off),则表示其在3启动形式下默认开机 不启动 5对应的也是关闭,则表示其在桌面环境下也是开机不启动。
再例如:kdump服务,在2,3,4,5的级别下默认开机启动的,其他级别下默 认开机不启动
查询所有服务的开机启动状态
systemctl list-unit-files –type=service
查询单个服务的开机启动状态
systemctl is-enabled <service_name>
②删除服务
#chkconfig –del 服务名
③添加开机启动服务
#chkconfig –add 服务名 【必须要保证服务正常运行,才可以添加】
④设置服务在某个级别下开机启动/不启动【重点命令】
#chkconfig –level 连在一起的启动级别 服务名 on/off
三、ntp服务
作用:ntp主要是用于对计算机的时间同步管理操作。
同时服务器时间方式有2个:一次性同步(手动同步)、通过服务自动同步。
①一次性同步时间(简单)
#ntpdate 时间服务器的域名或ip地址 Ip地址查看可以访问:http://www.ntp.org.cn/pool.php
②设置时间同步服务
服务名:ntpd 启动ntpd服务 #service ntpd start 或者 /etc/init.d/ntpd start
设置ntpd服务开机启动:
chkconfig –list|grep ntpd
chkconfig –level 35 ntpd on
四、防火墙服务
防火墙:防范一些网络攻击。有软件防火墙、硬件防火墙之分。
防火墙选择让请求通过,从而保证网络安全性。
在当前的centos6.5中防火墙有一个名称:iptables 【7.x中默认使用的是firewalld】
①查看iptables是否开机启动
chkconfig –list|grep iptables
systemctl is-enabled firewalld
②iptables服务启动/重启/关闭
#service iptables start/restart/stop /etc/init.d/iptables start /restart/stop
③查看iptables的状态(规则)
#service iptables status
如果iptables没有启动,则提示服务没启动,如果已经启动,则显示防火墙的相关的规则信息
④查看规则的命令
#iptables -L -n 含义: -L:表示列出规则 -n:表示将单词表达形式改成数字形式显示
⑤简单设置防火墙规则
例如,需要允许80端口通过防火墙,则规则可以用以下的命令来设置 #iptables -I INPUT -p tcp –dport 80 -j ACCEPT #允许访问80端口
Iptables:主命令
-I:表示将规则放到最前面 -A:add,添加规则(最后) INPUT:进站请求【出站output】 -p:protocol,指定协议(icmp/tcp/udp) –dport:指定端口号 -j:指定行为结果,允许(accept)/禁止(reject)/丢弃(drop)
添加完成之后需要保存操作: /etc/init.d/iptables save
五、rpm管理(重点)
作用:rpm的作用类似于windows上的电脑管家中“软件管理”、安全卫士里面“软件管家”等产品,主要作用是对linux服务器上的软件包进行对应管理操作,管理分为:查询、卸载、安装。
①查询某个软件的安装情况
#rpm -qa|grep 关键词 选项: -q:查询,query -a:全部,all
②卸载某个软件
#rpm -e 软件的名称
火狐卸载的时候是没有依赖关系的,所以可以直接卸载。
但是在卸载Apache的时候提示无法卸载:
当存在依赖关系的时候又不想去解决这个问题的时候可以: #rpm -e 软件包名 –nodeps
③软件的安装
要想装软件,和windows下一样,先得找到安装包。 软件包的获得方式: a. 去官网去下载; b. 不介意老版本的话,可以从光盘(或者镜像文件)中读取; 此处以光盘文件为例: 查看块状设备的信息: #lsblk (list block devices) 查看块状设备的信息
Name:名称 Size:设备大小 Type:类型 MountPoint:挂载点(类似windows下盘符)
扩展:光盘的挂载和解挂
a. 解挂操作
命令:umount 语法:#umount 当前设备的挂载点(路径)
此时,相当于U盘在windows上已经被弹出了,但是没有拔下电脑USB接口。
b. 挂载光盘
命令:mount 语法:#mount 设备原始地址 要挂载的位置路径 设备原始地址:地址统一都在/dev下,然后根据大小确定具体name值,拼凑在一起组成原始地址,例如当前:“/dev/sr0” 要挂载的位置路径:挂载目录一般都在mnt下,也可以在mnt下建目录,此处以“/mnt/dvd”为例
安装软件的命令:
#rpm -ivh 软件包完整名称 选项: -i:install,安装 -v:显示进度条 -h:表示以“#”形式显示进度条
六、cron/crontab计划任务(重点)
作用:操作系统不可能24小时都有人在操作,有些时候想在指定的时间点去执行任务(例如:每天夜里2点去重新启动Apache),此时不可能真有人每天夜里2点去执行命令,此时可以交给计划任务程序去执行操作。
语法:#crontab 选项 常用选项: -l:list,列出指定用户的计划任务列表 -e:edit,编辑指定用户的计划任务列表 -u:user,指定的用户名,如果不指定,则表示当前用户 -r:remove,删除指定用户的计划任务列表
①列出
#crontab -l
②编辑计划任务(重点)
计划任务的规则语法格式,以行为单位,一行则为一个计划: 分 时 日 月 周 需要执行的命令
例如:如果想要每天的0点0分执行reboot指令,则可以写成 0 0 * * * reboot
取值范围: 分:0~59 时:0~23 日:1~31 月:1~12 周:0~7,0和7表示星期天
四个符号: *:表示取值范围中的每一个数字 -:做连续区间表达式的,要想表示1~7,则可以写成:1-7
/:表示每多少个,例如:想每10分钟一次,则可以在分的位置写:*/10 ,:表示多个取值,比如想在1点,2点6点执行,则可以在时的位置写:1,2,6
Crontab权限问题:本身是任何用户都可以创建自己的计划任务。
但是超级管理员可以通过配置来设置某些用户不允许设置计划任务 : 配置文件位于(黑名单): /etc/cron.deny 里面写用户名,一行一个
还有一个配置文件:(白名单) /etc/cron.allow (本身不存在,自己创建)
注意:白名单优先级高于黑名单,如果一个用户同时存在两个名单文件中,则会被默认允许创建计划任务。
Linux的权限管理操作
Linux的权限操作与用户、用户组是兄弟操作。
一、权限概述
总述:Linux系统一般将文件可存/取访问的身份分为3个类别:owner、group、others,且3种身份各有read、write、execute等权限。
1、权限介绍
在Linux中分别有读、写、执行权限:
读权限:
对于文件夹来说,读权限影响用户是否能够列出目录结构 对于文件来说,读权限影响用户是否可以查看文件内容
写权限:
对文件夹来说,写权限影响用户是否可以在文件夹下“创建/删除/复制到/移动到”文档 对于文件来说,写权限影响用户是否可以编辑文件内容
执行权限:
一般都是对于文件来说,特别脚本文件。
在Linux中分别有读、写、执行权限: 读权限: 对于文件夹来说,读权限影响用户是否能够列出目录结构 对于文件来说,读权限影响用户是否可以查看文件内容
写权限: 对文件夹来说,写权限影响用户是否可以在文件夹下“创建/删除/复制到/移动到”文档 对于文件来说,写权限影响用户是否可以编辑文件内容
执行权限:
一般都是对于文件来说,特别脚本文件。
2、身份介绍
Owner身份(文件所有者,默认为文档的创建者)
由于Linux是多用户、多任务的操作系统,因此可能常常有多人同时在某台主机上工作,但每个人均可在主机上设置文件的权限,让其成为个人的“私密文件”,即个人所有者。因为设置了适当的文件权限,除本人(文件所有者)之外的用户无法查看文件内容。
Group身份(与文件所有者同组的用户)
与文件所有者同组最有用的功能就体现在多个团队在同一台主机上开发资源的时候。
在Linux中,每个账户支持多个用户组。如用户a1、b1即可属于A用户组,也能属于B用户组【主组和附加组】。
Others身份(其他人,相对于所有者)
这个是个相对概念。
Root用户(超级用户)
在Linux中,还有一个神一样存在的用户,这就是root用户,因为在所有用户中它拥有最大的权限 ,所以管理着普通用户。
3、Linux的权限介绍
要设置权限,就需要知道文件的一些基本属性和权限的分配规则。在Linux中,ls命令常用来查看文件的属性,用于显示文件的文件名和相关属性。
#ls -l 路径 【ls -l 等价于 ll】
Linux中存在用户、用户组和其他人概念,各自有不同的权限,对于一个文档来说,其权限具体分配如下:
drwxr-x— : r:read,可读 w:write,可写 e:execute,可执行 -:没有对应权限
十位字符表示含义: 第1位:表示文档类型,取值常见的有“d表示文件夹”、“-表示文件”、“l表示软连接”、“s表示套接字”等等; 第2-4位:表示文档所有者的权限情况,
第2位表示读权限的情况,取值有r、-;第3位表示写权限的情况,w表示可写,-表示不可写,第4位表示执行权限的情况,取值有x、-。 第5-7位:表示与所有者同在一个组的用户的权限情况。 第8-10位:表示除了上面的前2部分的用户之外的其他用户的权限情况。
权限分配中,均是rwx的三个参数组合,且位置顺序不会变化。没有对应权限就用 – 代替。
二、权限设置
语法:#chmod 选项 权限模式 文档
注意事项: 常用选项: -R:递归设置权限 (当文档类型为文件夹的时候) 权限模式:就是该文档需要设置的权限信息 文档:可以是文件,也可以是文件夹,可以是相对路径也可以是绝对路径。 注意点:如果想要给文档设置权限,操作者要么是root用户,要么就是文档的所有者。
1、字母形式
给谁设置:
u:表示所有者身份owner(user) g:表示给所有者同组用户设置(group) o:表示others,给其他用户设置权限 a:表示all,给所有人(包含ugo部分)设置权限 如果在设置权限的时候不指定给谁设置,则默认给所有用户设置
权限字符:
r:读 w:写 x:表示执行 -:表示没有权限
权限分配方式:
+:表示给具体的用户新增权限(相对当前) -:表示删除用户的权限(相对当前) =:表示将权限设置成具体的值(注重结果)【赋值】
例如:需要给anaconda-ks.cfg文件(-rw——-.)设置权限,要求所有者拥有全部的权限,同组用户拥有读和执行权限,其他用户只读权限。 答案: ①#chmod u+x,g+rx,o+r anaconda-ks.cfg
②#chmod u=rwx,g=rx,o=r anaconda-ks.cfg
提示:当文档拥有执行权限(任意部分),则其颜色在终端中是绿色。
#chmod ug=rwx 形式,如果有两部分权限一样则可以合在一起写的
例如:如果anaconda-ks.cfg文件什么权限都没有,可以使用root用户设置所有人都有执行权限,则可以写成 ①#chmod +x anaconda-ks.cfg ②#chmod a=x anaconda-ks.cfg ③#chmod a+x anaconda-ks.cfg
2、数字形式
读:r 4 写:w 2 执行:x 1 没有任何权限:0
例如:需要给anaconda-ks.cfg设置权限,权限要求所有者拥有全部权限,同组用户拥有读执行权限,其他用户只读。 全部权限(u):读+写+执行=4+2+1=7 读和执行(g):读+执行=4+1=5 读权限(o):读=4 由上得知权限为:754 #chmod 754 anaconda-ks.cfg
注意:如果一个权限数字中但凡出现2与3的数字,则该权限有不合理的情况。
3、注意事项
-rwxrwxrwx
切换到test用户(不是文档所有者,也不是同组用户,属于other部分):
问题1:test用户是否可以打开oo/xx.txt文件?【能打开】 问题2:test用户是否可以编辑oo/xx.txt文件?【可以】 问题3:test用户是否可以删除oo/xx.txt文件?【不可以,同样还不允许创建文件/文件夹、移动文件、重命名文件】
在Linux中,如果要删除一个文件,不是看文件有没有对应的权限,而是看文件所在的目录是否有写权限,如果有才可以删除。
三、属主与属组设置
属主:所属的用户(文件的主人) 属组:所属的用户组
1、chown(重点)
作用:更改文档的所属用户 语法:#chown -R username 文档路径
案例:将刚才root用户创建的oo目录,所有者更改为test #chown test oo/
2、chgrp(了解)
作用:更改文档的所属用户组 语法:#chgrp -R groupname 文档的路径
如何通过一个命令实现既可以更改所属的用户,也可以修改所属的用户组呢? 语法:#chown -R username:groupname 文档路径
四、扩展(1)
1、sudo(switch user do)命令
sudo可以让管理员(root)事先定义某些特殊命令谁可以执行。
默认sudo中是没有除root之外用户的规则,要想使用则先配置sudo。
Sudo配置文件:/etc/sudoers
a. 配置sudo文件请使用“#visudo”,打开之后其使用方法和vim一致(vim打开是只读)
b. 配置普通用户的权限
Root表示用户名,如果是用户组,则可以写成“%组名” ALL:表示允许登录的主机(地址白名单)
(ALL):表示以谁的身份执行,ALL表示root身份 ALL:表示当前用户可以执行的命令,多个命令可以使用“,”分割
注意:在写sudo规则的时候不建议写直接形式的命令,而是写命令的完整路径。 路径可以使用which命令来查看
2、语法:#which 指令名称
在添加好对应的规则之后就可以切换用户,切换到普通用户test,再去执行
#sudo 需要执行的指令
在输入sudo指令之后需要输入当前的用户密码进行确认的操作(不是root用户密码),输入之后在接下来5分钟内再次执行sudo指令不需要密码。
特别注意:此处按照案例要求,不能让test用户修改root密码,因此规则还需要调整,不然其可以修改root密码的:
**3、禁止修改root密码的配置
(先允许全部,再拒绝root密码设置): /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
4、补充:普通用户查看自己具有的特殊权限
#sudo -l
最后:sudo不是任何Linux分支都有的命令,常见centos与ubuntu都存在sudo命令。
Linux的网络基础
一、网络相关概述
1、网络分类(记忆)
局域网(Local Area Network,LAN)
是指范围在几百米到十几公里内办公楼群或校园内的计算机相互连接所构成的计算机网络。
城域网(Metropolitan Area Network,MAN)
所采用的技术基本上与局域网相类似,只是规模上要大一些。城域网既可以覆盖相距不远的几栋办公楼,也可以覆盖一个城。
广域网(Wide Area Network,WAN)
通常跨接很大的物理范围,如一个国家。
公网、私网
除了上述的划分,网络还可以按照所有者分为公网、私网是两种Internet的接入方式。公网接入方式:上网的计算机得到的IP地址是Internet上的非保留地址,公网的计算机和Internet上的其他计算机可随意互相访问。私网则反之。
2、ip地址(重点记忆)
IP是英文Internet Protocol的缩写,意思是“网络之间互连的协议”,也就是为计算机网络相互连接进行通信而设计的协议。
IP地址类型分为:公有地址、私有地址。
公有地址
公有地址(Public address)由Inter NIC(Internet Network Information Center因特网信息中心)负责。这些IP地址分配给注册并向Inter NIC提出申请的组织机构。通过它直接访问因特网。
私有地址(重点)
私有地址(Private address)属于非注册地址,专门为组织机构内部使用。以下列出留用的内部私有地址: A类 10.0.0.0–10.255.255.255 B类 172.16.0.0–172.31.255.255 C类 192.168.0.0–192.168.255.255
IP地址按类型可以分为三类:
| 类别 | 最大网络数 | IP地址范围 | 最大主机数 | 私有IP地址范围 |
|---|---|---|---|---|
| A | 126(2^7-2) | 1.0.0.0-127.255.255.255 | 16777214 | 10.0.0.0-10.255.255.255 |
| B | 16384(2^14) | 128.0.0.0-191.255.255.255 | 65534 | 172.16.0.0-172.31.255.255 |
| C | 2097152(2^21) | 192.0.0.0-223.255.255.255 | 254 | 192.168.0.0-192.168.255.255 |
网络运维相关技能:
ip分类、子网划分、划分vlan、ACL、综合布线、各种Serve的搭建。
3、网卡
网卡是一个网络组件,属于硬件范畴,主要负责计算机之间数据的封装和解封。
MAC地址:
网卡的物理地址,网卡设备的编号,默认情况是全球唯一的(16进制)。
与IP地址的区别:
1、长度不同:IP地址为32位,MAC地址为48位。 2、分配依据不同。 3、网络寻址方式不同:OSI参考模型,ip地址是基于第三层工作(网络层),mac地址是第二层(数据链路层)
4、网线
网线是连接局域网必不可少的。在局域网中常见的网线主要有双绞线(RJ45接口)、铜轴电缆、光缆三种。
5、交换机
交换机(Switch)意为“开关”,是一种用于电(光)信号转发的网络设备,交换机它可以为接入交换机的任意两个网络节点提供独享的电信号通路。
6、路由器
路由器(Router)又称网关设备(Gateway)是用于连接多个逻辑上分开、相对独立的网络。
7、拓扑结构图(扩展)
所谓“拓扑”就是把实体抽象成与其大小、形状无关的“点”,而把连接实体的线路抽象成“线”,进而以图的形式来表示这些点与线之间关系的方法,其目的在于研究这些点、线之间的相连关系。表示点和线之间关系的图被称为拓扑结构图。
常见的几种拓扑结构图:
星型拓扑结构、总线型拓扑结构、环型拓扑结构、树型拓扑结构、网状拓扑结构、混合型拓扑结构
二、网络相关命令
1、ping
作用:检测当前主机与目标主机之间的连通性(不是100%准确,有的服务器是禁ping) 语法:#ping 主机地址(ip地址、主机名、域名等)
该命令可以跨平台,windows下也可以使用,语法一致。(区别在于Linux下默认一直发送,windows下默认发送4个数据包)Ctrl+c暂停
2、netstat
作用:表示查看网络的连接信息 语法:#netstat -tnlp (-t:tcp协议,-n:将字母转化成数字,-l:列出状态为监听,-p:显示进程相关信息)
一般用的功能是通过浏览器打开的,走的协议一般都是tcp。 客户端是udp
ESTABLISHED表示这个请求已经完成,LISTEN表示正在监听
#netstat -an (-a:表示全部,-n:将字母转化为数字)
TCP/IP协议需要使用这个命令。
3、traceroute
作用:查找当前主机与目标主机之间所有的网关(路由器,会给沿途各个路由器发送icmp数据包,路由器可能会不给响应)。 该命令不是内置命令,需要安装,但是目前的已经安装好了(之前选了开发工具)。
语法:#traceroute 主机地址
类似于查看快递的跟踪路由
扩展:在windows下也有类似的命令:tracert 主机地址
在线工具网址:http://tool.chinaz.com
4、arp
地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取(MAC)物理地址的协议。
当一个主机发送数据时,首先查看本机MAC地址缓存中有没有目标主机的MAC地址, 如果有就使用缓存中的结果;如果没有,ARP协议就会发出一个广播包,该广播包要求查询目标主机IP地址对应的MAC地址,拥有该IP地址的主机会发出回应,回应中包括了目标主机的MAC地址,这样发送方就得到了目标主机的MAC地址。如果目标主机不在本地子网中,则ARP解析到的MAC地址是默认网关的MAC地址。
常用语法:#arp -a 查看本地缓存mac表 #arp -d 主机地址 删除指定的缓存记录 该命令在windows下同样适用。
5、tcpdump(了解)
作用:抓包,抓取数据表 常用语法: #tcpdump 协议 port 端口 #tcpdump 协议 port 端口 host 地址 #tcpdump -i 网卡设备名
00:09:17.xxxx 监听数据的时分秒 IP:使用的协议类型 192.168.21.1 数据包的一个方向(来自)
> 数据的流向
192.168.21.136 数据包的另外一个方向(到达)
三、项目上线流程(必须掌握)
1、服务器选配购买
项目上线服务器必须是外网服务器。
一般服务器有2种情况:购买真实服务器、购买云服务器。
购买真实服务器一次性成本过高,所以现在基本都是选择云服务器。
云服务的厂商:阿里云、腾讯云、知道创宇(加速乐)、华为云、盛大云、新浪云(sae)、亚马逊云等等。 以后以阿里云为例: 官网:http://www.aliyun.com
①打开阿里云官网,选择产品中的“云服务器ECS”
在页面上点击“立即购买”:
②选择具体的配置
安全组需要先在控制面板中创建,创建好之后才能在这里进行选择(安全组类似于防火墙,可以设置相关规则)
进入后台查看信息
需要重置密码的话,则可以选择右侧“更多”选择“重置密码”,然后重启服务器,最后可以通过远程终端连接服务器
2、域名购买
①在首页产品中找到域名注册
域名注册得先查看是否可以注册
确认购买信息
购买之后就可以在后台控制面板中去查看域名情况。
3、域名备案
备案:当申请域名的人要想在国内使用域名,则需要向当地的通信管理局(省级)去申请报备。 备案前提:想要使用境内服务器的话,则必须得备案。
在管理后台点击“ICP备案系统”
点击新增主体备案
填写完基本信息之后点击增加网站
备案服务号可以在控制台顶部去获取
申请到备案服务号之后填写继续
会让用户下载一个图片:网站真实性核验单
下载打印,填写好上传到阿里云备案系统中
后面等待初审,初审通过之后继续下一步(初审时间一般1天即可)
拍照
上传照片
等待管局审核(到这个步骤基本是已经通过,审核周期一般是15个工作日)。
等待审核通过,就会收到工信部发送的短信与邮件通知,邮件中有备案号和备案密码(备案密码用于注销备案)。
4、域名解析
点击“解析”
解析:将域名绑定到一个服务器地址的操作 DNS:domain name server,用于将域名转化成ip地址的服务器。
点击右上角的添加记录
选择记录
解析之后可以通过在线ping命令检测效果
5、配置生产环境(最后1天)
6、上传代码
此时需要使用上传工具:pscp,filezilla。
和之前使用的方式一样。
Shell基础
一、关于shell
1、什么是shell
什么是shell?
Shell(外壳) 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。 Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。
什么是脚本?
脚本简单地说就是一条条的文字命令,这些文字命令是可以看到的(如可以用记事本打开查看、编辑)。 常见的脚本: JavaScript(JS,前端),VBScript, ASP,JSP,PHP(后端),SQL(数据库操作语言),Perl,Shell,python,Ruby,JavaFX,Lua等。
为什么要学习和使用shell?
Shell属于内置的脚本 程序开发的效率非常高,依赖于功能强大的命令可以迅速地完成开发任务(批处理) 语法简单,代码写起来比较轻松,简单易学
常见的shell种类?
在linux中有很多类型的shell,不同的shell具备不同的功能,shell还决定了脚本中函数的语法,Linux中默认的shell是/bin/bash(重点),流w ww行的shell有ash、bash、ksh、csh、zsh等,不同的shell都有自己的特点以及用途。
csh C shell 使用的是“类C”语法,csh是具有C语言风格的一种shell,其内部命令有52个,较为庞大。目前使用的并不多,已经被/bin/tcsh所取代。
ksh Korn shell 的语法与 Bourne shell 相同,同时具备了 C shell 的易用特点。许多安装脚本都使用 ksh ,ksh有42条内部命令,与bash相比有一定的限制性。
tcsh tcsh是csh的增强版,与 C shell 完全兼容。
sh 是一个快捷方式,已经被/bin/bash所取代。
nologin 指用户不能登录
zsh 目前Linux里最庞大的一种shell:zsh。它有84个内部命令,使用起来也比较复杂。一般情况下,不会使用该shell。
bash 大多数Linux系统默认使用的shell,bash shell 是 Bourne shell 的一个免费版本,它是最早的 Unix shell,bash还有一个特点,可以通过help命令来查看帮助。包含的功能几乎可以涵盖shell所具有的功能,所以一般的shell脚本都会指定它为执行路径。**
2、shell入门
编写规范:
代码规范: #!/bin/bash [指定告知系统当前这个脚本要使用的shell解释器] Shell相关指令
文件命名规范: 文件名.sh .sh是linux下bash shell 的默认后缀
使用流程:
①创建.sh文件 touch/vim ②编写shell代码 ③执行shell脚本 脚本必须得有执行权限
输出命令:#echo 123
注意:输出的内容如果包含字母和符号(不包含变量),则需要用引号(单双都行)包括起来。如果是纯数字可以包也可以不包。分号可加可不加,多行写在一行一定要加
注意,这里在运行时一定要写成 ./test.sh,而不是 test.sh,运行其它二进制的程序也一样,直接写 test.sh,Linux 系统会去 PATH(环境变量) 里寻找有没有叫 test.sh 的,而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 里,你的当前目录通常不在 PATH 里,所以写成 test.sh 是会找不到命令的,要用 ./test.sh 告诉系统说,就在当前目录找。
脚本执行的另外一个方式:/bin/bash 脚本的路径(了解)
Shell脚本分为简单的写法(简单命令的堆积)和复杂写法(程序的设计)
二、shell进阶(重点)
1、变量(重点)
1.1、变量的含义
a. 什么是量 量就是数据. b. 什么是变量 数据可以发生改变就是变量. 在一个脚本周期内,其值可以发生改变的量就是变量. c. 什么叫做一个脚本周期 一个脚本周期我们可以简单的理解为当前的shell文件
变量是shell中不可或缺的一部分,也是最基础、最重要的组成部分。
1.2、变量的定义与使用(重点)
变量,先定义后使用。
定义形如:class_name=”yunwe “ 使用形如:echo $class_name
变量就是由2部分组成,一个是变量名(左边),另外一部分是变量的值(右边)
变量名和变量值是什么关系??
变量名和变量值是使用和被使用关系; 我们的变量名来使用变量值;
在使用变量的时候一定需要在变量名前面添加一个$符号,该要求在其他语言中也存在的(例如php)。
变量名的规范
注意,变量名后面的等号左右不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则: 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。 中间不能有空格,可以使用下划线“_”。 不能使用标点符号。 不能使用bash里的关键字(可用help命令查看保留关键字)。
关于单双引号的问题:
双引号能够识别变量,双引号能够实现转义(类似于“*”) 单引号是不能识别变量,只会原样输出,单引号是不能转义的
注意:反引号(esc键下方的那个键),当在脚本中需要执行一些指令并且将执行的结果赋给变量的时候需要使用“反引号”。
1.3、只读变量(了解)
语法:readonly 变量名
案例:定义变量a并且其值为10,随后设置其为只读变量,再去尝试重新赋值
1.4、接收用户输入(重点)
语法:read -p 提示信息 变量名
1.5、删除变量(了解)
语法:unset 变量名
2、条件判断语句
语法1(一个条件):
if condition then command1 command2 … fi
单行写法(一般在命令行中执行的时候):if [ condition ]; then command; fi
语法2(两个条件):
if condition then command1 command2 … else command fi
语法3(多个条件):
if condition1 then command1 elif condition2 then command2 else commandN fi
3、运算符
在shell中,运算符和其他编程脚本语言一样,常见的有算数运算符、关系运算符、 逻辑运算符、字符串运算符、文件测试运算符等
3.1、算数运算符
下表列出了常用的算术运算符,假定变量 a 为 10,变量 b 为 20: 运算符 说明 举例
加法 expr a + b
减法 expr a – b
乘法 expr a \* b / 除法 expr b / a % 取余 expr b % a = 赋值 a=b == 相等 [ a == b ] != 不相等 [ a != b ] **注意:条件表达式要放在方括号之间,并且要有空格,例如: [a==b] 是错误的,必须写成 [ a == $b ]。**
原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。 expr 是一款表达式计算工具,使用它能完成表达式的求值操作。 例如,两个数相加(注意使用的是反引号 而不是单引号 '): #!/bin/bash val=expr 2 + 2` echo “两数之和为 : $val”
两点注意: 表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2,这与我们熟悉的大多数编程语言不一样。 完整的表达式要被 包含,注意这个字符不是常用的单引号,在 Esc 键下边。
3.2、关系运算符
关系运算符只支持数字,不支持字符串,除非字符串的值是数字。
| *运算符* | *说明* | *举例* |
|---|---|---|
| -eq | 检测两个数是否相等,相等返回 true。 | [ a -eq b ] 返回 false。 |
| -ne | 检测两个数是否相等,不相等返回 true。 | [ a -ne b ] 返回 true。 |
| -gt | 检测左边的数是否大于右边的,如果是,则返回 true。 | [ a -gt b ] 返回 false。 |
| -lt | 检测左边的数是否小于右边的,如果是,则返回 true。 | [ a -lt b ] 返回 true。 |
| -ge | 检测左边的数是否大于等于右边的,如果是,则返回 true。 | [ a -ge b ] 返回 false。 |
| -le | 检测左边的数是否小于等于右边的,如果是,则返回 true。 | [ a -le b ] 返回 true。 |
-eq:equal -ne:not equal -gt:great than -lt:less than -ge:great than or equal -le:less than or equal
3.3、逻辑运算符
| *运算符* | *说明* | *举例* |
|---|---|---|
| ! | 非运算,表达式为 true 则返回 false,否则返回 true。 | [ ! false ] 返回 true。 |
| -o | 或(或者)运算,有一个表达式为 true 则返回 true。 | [ a -lt 20 -o b -gt 100 ] 返回 true。 |
| -a | 与(并且)运算,两个表达式都为 true才返回 true。 | [ a -lt 20 -a b -gt 100 ] 返回 false。 |
3.4、字符串运算符
| *运算符* | *说明* | *举例* |
|---|---|---|
| = | 检测两个字符串是否相等,相等返回 true。 | [ a = b ] 返回 false。 |
| != | 检测两个字符串是否相等,不相等返回 true。 | [ a != b ] 返回 true。 |
| -z | 检测字符串长度是否为0,为0返回 true。 | [ -z $a ] 返回 false。 |
| -n | 检测字符串长度是否为0,不为0返回 true。 | [ -n $a ] 返回 true。 |
| str | 检测字符串是否为空,不为空返回 true。 | [ $a ] 返回 true。 |
3.5、文件测试运算符(重点)
文件测试运算符用于检测 Unix/Linux 文件的各种属性。 属性检测描述如下:
| *操作符* | *说明* | *举例* |
|---|---|---|
| -b file | 检测文件是否是块设备文件,如果是,则返回 true。 | [ -b $file ] 返回 false。 |
| -c file | 检测文件是否是字符设备文件,如果是,则返回 true。 | [ -c $file ] 返回 false。 |
| -d file | 检测文件是否是目录,如果是,则返回 true。 | [ -d $file ] 返回 false。 |
| -f file | 检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。 | [ -f $file ] 返回 true。 |
| -g file | 检测文件是否设置了 SGID 位,如果是,则返回 true。 | [ -g $file ] 返回 false。 |
| -k file | 检测文件是否设置了粘着位(Sticky Bit),如果是,则返回 true。 | [ -k $file ] 返回 false。 |
| -p file | 检测文件是否是有名管道,如果是,则返回 true。 | [ -p $file ] 返回 false。 |
| -u file | 检测文件是否设置了 SUID 位,如果是,则返回 true。 | [ -u $file ] 返回 false。 |
| -r file | 检测文件是否可读,如果是,则返回 true。 | [ -r $file ] 返回 true。 |
| -w file | 检测文件是否可写,如果是,则返回 true。 | [ -w $file ] 返回 true。 |
| -x file | 检测文件是否可执行,如果是,则返回 true。 | [ -x $file ] 返回 true。 |
| -s file | 检测文件是否为空(文件大小是否大于0),不为空返回 true。 | [ -s $file ] 返回 true。 |
| -e file | 检测文件(包括目录)是否存在,如果是,则返回 true。 | [ -e $file ] 返回 true。 |
注意:权限几个判断,如果只有一个部分符合,则认为是有权限的。
4、shell脚本附带选项(重点)
问题描述:在linux shell中如何处理tail -10 access.log这样的命令行选项? 步骤: 调用tail指令 系统把后续选项传递给tail Tail先去打开指定的文件 取出最后10行
问题:自己写的shell是否也可以像内置命令一样传递一些选项呢? 答:可以的,传递方式与上述的描述是一样的,关键是怎么接收。例如: 传递: #./test.sh a b c 接收: 在脚本中可以用“1”来表示a,“2”来表示b,以此类推。
其实1、2是变量。
同时题目中要求是指令,所以可以再去添加个别名
MySQL基础
一、关于数据库
1、什么是数据库
如果一个项目是动态(内容会变化的,网页后缀.jsp、.php、.shtml等)内容的话,则数据库是必不可少的一个环节。
2、MySQL简介
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,2008年被Sun公司收购,目前属于 Oracle 旗下产品。MySQL 是最流行的数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。其和php是黄金搭档(LAMP/LNMP)。
3、常见的其他数据库软件
目前市场上还有:Oracle(重量级的数据库)、MS SQL Server(微软)、Access(微软)、PostgreSQL、DB2、Mariadb(MySQL分支,完全兼容MySQL)。
二、MySQL的安装与初始化
操作之前先确保计算机时间准确。
1、Linux下的软件安装方式(初步)
a. 源码包(建议)
优点 开源,如果有足够的能力,可以修改源代码 编译安装,更加适合自己的系统,稳定高效 缺点 安装步骤较多,容易出错 编译过程时间较长
案例:使用源码编译安装方式安装ncurses(一种常用的终端库) 扩展:解包 常用语法: #tar -zxvf *.tar.gz (大多数) #tar -jxvf *.tar.bz2 选项含义: -z或–gzip或–ungzip:通过gzip指令处理文件; -x或–extract或–get:从文件中还原文件; -v:显示操作过程; -f或–file:指定一个文件; -j:支持bzip2解压文件;
①先将软件包传递到服务器上“/usr/local/src”
②解压需要安装的源码包
#tar -zxvf ncurses-6.1.tar.gz
③切换到源码文件夹,然后执行后续操作
配置(config/configure/bootstrap) → 编译(make/bootstrapd) → 安装(make install/bootstrapd install)
配置操作主要是指定软件的安装目录、需要的依赖在什么地方、指定不需要可选依赖、配置文件的路径、通用数据存储位置等等。 指定安装的路径:–prefix=路径 需要依赖的路径:–with-PACKAGE名=[包所在的路径] 不需要依赖:–without-PACHAGE名
#./configure –prefix=/usr/local/ncurses 配置
# make 编译
#make install 安装
成功之后查看目录(可选)
b. 二进制包(rpm)
优点: 包管理系统简单,只需要几个命令就可以实现包的安装,升级,查询和卸载 缺点: 经过编译,不再可以看到源代码
回顾rpm相关指令: #rpm -qa|grep 关键词 #rpm -e 关键词 [–nodeps] 忽略依赖关系 #rpm -ivh 完整名称 #rpm -Uvh 完整名称 更新 #rpm -qf 文件路径 【查询指定文件属于哪个包】
mkdir /mnt/dvd
mount /dev/sr0 /mnt/dvd/
rpm -ivh /mnt/dvd/Packages/lynx-2.8.6-27.e16.i686.rpm
例如查看百度:#lynx –dump www.baidu.com
c. yum等傻瓜式安装
优点: 安装简单,快捷 缺点: 完全丧失了自定义性 注意:如果不更改软件来源的情况下,是需要联网才能使用yum的。
常用的yum指令: #yum list [installed] 列出当前已经装的和可以装的软件(全部) #yum search 名 搜索指定的关键词的包 #yum [-y] install 包名 安装指定的包(-y表示允许不再确认) #yum [-y] update [包名] 更新指定的包,不指定包则更新全部软件 #yum [-y] remove 包名 卸载指定的包
案例:使用yum指令卸载火狐浏览器 #yum remove firefox
案例:使用yum指令安装火狐浏览器 #yum install firefox
2、安装MySQL(重点)
注:此处安装以yum安装为例
2.1、MySQL安装
#yum install mysql-server (来源于系统的默认 Yum 仓库。)
yum install mysql-community-server ( MySQL 官方提供的社区版 MySQL 服务器。)
2.2、MySQL初始化
#service mysqld start
查看端口号(默认端口号3306)
#mysql_secure_installation
*Enter current password for root (enter for none):请输入当前root用户的密码,如果没有按回车,注意此root并非linux的root用户。*
*Set root password?是否设置root密码?* *需要设置的密码:qhabOfhlluB9*
*Remove anonymous users?是否移除匿名用户,选择移除(Y)*
*Disallow root login remotely?是否不允许root远程登录(默认不允许)*
*Remove test database and access to it?是否移除测试数据库(建议先不移除)*
*Reload privilege tables now?是否重新加载权限表(当我们更改了mysql用户相关的信息之后建议去重载权限)*
2.3、MySQL的启动控制
语法:service mysqld start/stop/restart
进入mysql的方式: #mysql -u用户名 -p (密码)
退出MySQL到linux命令行: mysql > exit
2.4、默认目录/文件位置(了解)
数据库存储目录:/var/lib/mysql 配置文件:/etc/my.cnf
三、MySQL的基本操作(难点)
1、名词介绍
以Excel文件举例: 数据库:可以看作是整个excel文件。 数据表:可以看作是一个excel文件中的工作表。 行(记录):可以看作是一个工作表中的一行 列(字段):可以看作是一个工作表总的一列
2、库操作(重点)
以下命令在MySQL终端命令行中执行(大小写均可): SHOW DATABASES; 显示当前MySQL中全部的数据库 CREATE DATABASE 库名; 创建数据库 DROP DATABASE 库名; 删除数据库 USE 库名; 切换数据库
3、表操作
SHOW TABLES; 显示当前数据库中所有的表名(必须先use数据库) CREATE TABLE 表名称 在当前数据库下创建数据表 ( 列名称1 数据类型 [NOT NULL AUTO_INCREMENT], 列名称2 数据类型, 列名称3 数据类型, …., PRIMARY KEY(主键字段名) );
常见的数据类型:int(整型)、char(定长字符)、varchar(不定长字符)。 主键一般就是序号所在的那一列(主键不能重复)。 DESC 表名; 描述一个数据表(查看表结构) DROP TABLE [IF EXISTS] 表名; 删除一个数据表
4、记录/字段操作(重点)
4.1、增加记录
语法1:INSERT INTO 表名称 VALUES (值1, 值2,….); 语法2:INSERT INTO 表名称 (列1, 列2,…) VALUES (值1, 值2,….);
案例:往数据表xg表中新增一个记录username为zhangsan,password为123456(加密结果E10ADC3949BA59ABBE56E057F20F883E) Sql语句: insert into xg (username,password) values (‘zhangsan’,’E10ADC3949BA59ABBE56E057F20F883E’);
要求前面的列名与值要一一对应。
4.2、更新记录
语法:UPDATE 表名称 SET 列名称1 = 新值1,列名称2 = 新值2… WHERE 列名称 = 某值; 案例:使用更新语句更新id大于等于2的记录,将其密码改为:25F9E794323B453885F5181F1B624D0B SQL语句: Update xg set password = ‘25F9E794323B453885F5181F1B624D0B’ where id >= 2;
以后在执行影响行数的sql操作的时候一定需要注意条件是否写错或者漏写。
4.3、查询记录
SELECT 列名称1,列名称2… FROM 表名称 WHERE 条件; SELECT * FROM 表名称 WHERE 条件; 案例:查询刚才新增的记录 只查询用户名和密码,并且是id=2的: Select username,password from xg where id = 2;
查询全部: Select * from xg;
4.4、删除记录
DELETE FROM 表名称 WHERE 列名称 = 值;
案例:删除id为2的记录 Delete from xg where id = 2;
5、备份与还原(重点)
5.1、备份(导出)
全量备份(数据+结构):#mysqldump -uroot -p123456 -A > 备份文件路径 指定库备份(数据+结构):# mysqldump -uroot -p123456 库名 > 备份文件路径 多个库备份(数据+结构):# mysqldump -uroot -p123456 –databases db1 db2 > 备份文件路径
案例:备份整个库
#mysqldump -uroot -pqhabOfhlluB9 -A > /root/sql_201804061609.sql
5.2、还原(导入)
还原部分分(1)mysql命令行source方法 和 (2)系统命令行方法 1.还原全部数据库: (1) mysql命令行:mysql> source 备份文件路径 (2) 系统命令行: #mysql -uroot -p123456 < 备份文件路径 2.还原单个数据库(需指定数据库) (1) mysql> use 库名 mysql> source 备份文件路径 (2) #mysql -uroot -p123456 库名 < 备份文件路径 3.还原单个数据库的多个表(需指定数据库) (1) mysql> use 库名 mysql> source 备份文件路径 (2) mysql -uroot -p123456 库名 < 备份文件路径 4.还原多个数据库,(一个备份文件里有多个数据库的备份,此时不需要指定数据库) (1) mysql命令行:mysql> source 备份文件路径 (2) 系统命令行: mysql -uroot -p123456 < 备份文件路径
设置Mysql连接字符集:
Mysql> set names utf8; 【三码一致,服务器端+传输过程中+客户端】
四、扩展
1、mysql的远程管理工具
分为两大类:B/S架构、C/S架构。 B/S:B是指浏览器,S是指服务器。例如:百度搜索应用就属于BS架构软件。 C/S:C是指客户端,S是指服务器。例如:QQ、电脑端微信等应用程序都是CS架构。
在BS中,mysql有个典型的管理工具:PMA(phpMyAdmin)
CS中比较典型的软件:navicat、mysql workbrach
关闭防火墙 service iptables stop
systemctl stop firewalld
要解决的问题:允许mysql远程登录
a. 先进入数据库、选择mysql数据库; b. 执行sql语句:select host,user from user;
c. 将其中的一个记录的host值改为“%”,表示可以允许任何地方登录
d. 刷新权限表或者重启mysql 刷新权限:mysql> flush privileges;
e. navicat登录成功
Yum项目上线实战 (网站运维)
一、编译安装与卸载Nginx
Nginx:是一款比较流行的web服务器软件,类似于Apache。
1、安装nginx
①下载nginx
下载地址:https://nginx.org/en/download.html 使用在服务器端下载的方式进行下载(此处不使用filezilla): #wget 地址 例如当前需要下载nginx到“/usr/local/src”(先用cd切换到该路径) #wget https://nginx.org/download/nginx-1.13.11.tar.gz
②解压nginx安装包
#tar -zxvf nginx-1.13.11.tar.gz
③进入nginx解压目录
开始进行配置、编译、安装操作
在配置时候报错:没有PCRE库
直接yum安装pcre-devel: #yum install pcre-devel
报错缺少zlib库
直接使用yum安装zlib库: #yum install zlib-devel
还需要自己去下载一个zlib的源码包,然后解压出来
最终的nginx配置命令: #./configure –prefix=/usr/local/nginx –with-pcre –with-zlib=/usr/local/src/zlib-1.2.11
开始安装: #make
最后安装: #make install
安装好的目录
④运行nginx 先停止Apache,(service httpd stop)然后再运行nginx
#/usr/local/nginx/sbin/nginx 【启动命令】 #/usr/local/nginx/sbin/nginx -s reload 【重载,重载配置文件】
⑤了解:卸载编译安装的软件 #rm -rf 软件的安装目录 注意:卸载一个编译安装的软件的时候必须先停止。
二、关于LAMP
LAMP:Linux + Apache + MySQL + PHP LAMP架构(组合) LNMP:Linux + Nginx + MySQL + php-fpm LNMP架构(组合) LNMPA:Linux + Nginx + MySQL + PHP + Apache Nginx代理方式
三、LAMP环境部署
首先登录控制台获取需要连接的主机ip地址
后续可以进行远程登录。
在整个LAMP中需要自己安装的也就只有Apache + PHP + Mysql。后续以yum为例。
1、PHP与Apache的安装
#yum install php 【在安装好php的同时会一起顺带安装Apache】
启动Apache:#service httpd start
此处会有一个警告,无法确定主机的FQDN,如果需要处理,则需要修改Apache的配置文件(/etc/httpd/conf/httpd.conf)
#vim /etc/httpd/conf/httpd.conf
在文件中搜索“ServerName”
将前面的“#”去除,保存退出,重启apache
测试访问,在地址栏中输入ip地址直接访问(关闭防火墙):
测试php是否可以运行(默认的Apache站点目录:/var/www/html): 创建一个index.php文件
运行php看到页面
2、MySQL的安装与初始化
#yum install mysql-server
初始化操作: #service mysqld start 【启动】
#mysql_secure_installation
测试进行命令行登录: #mysql -uroot -p
如果需要远程登录则需要修改登录主机
重启MYSQL或者刷新权限: Mysql> flush privileges;
阿里云上的安全组端口放行 (80、3306)
使用navicat进行登录
3、项目上线
解压项目包,将upload其中的内容上传到服务器站点目录(/var/www/html)
①使用filezilla上传需要的代码文件
②传完之后打开网站的首页,会运行DZ的安装向导 a. 选择同意协议
b. 赋予指定目录写权限
#chmod 777 -R /var/www/html(-R:递归)
#yum install php-mysqli
重启Apache
重启之后保证所有的配置项都是绿色的勾才可以下一步。
c. 选择DZ的安装方式
d. 填写数据库与管理员的信息
e. 安装完成
f. 首页



