linux设置IP的两种方法
*第一种方法
1. setup
选择 =>Network configuration => Device configuration
(注:回车是选择,方向键选择 空格可以修改 *)
2. vim /etc/sysconfig/network-scripts/ifcfg-eth0
将ONBOOT=no no改为yes
3. service network restart
*第二种方法(临时,重启就会失效)
1、ifconfig eth0 192.168.121.101(ip)
2、点开虚拟机的设计->更改网络连接方式(nat)
3、检测网络是否连通(ping 192.168.121.1)
几种网络连接方式
1. 桥接 占用真实IP地址
2. NAT 使用VM8这块网卡进行通信
将虚拟机设置成NAT模式步骤
1. 在虚拟机中将虚拟机网络模式搞成NAT
2. 查看你的VM8的网段是多少,比如我的是203
3. 将Linux的网段设置成203, IP:192.168.203.88
ifconfig eth0 192.168.203.88
4. 测试网络是否联通
查看ip地址
ifconfig
常见命令
ctrl + alt(在虚拟机与真实电脑之间切换鼠标)
ctrl + c (强制终止)
ctrl + l (清屏)
重启方式:1、shutdown -r now 2、reboot
grep “字符串” 文件名-->查找符合条件的字串行
find 查找位置 -name 文件名-->按照文件名查找
whereis 命令名 -->查找命令的命令,同时看到帮助文档位置
tree-->显示指定目录下所有内容的目录树
规律:超级管理员那么一定出现一个#-->[root@localhost ~]# ;
普通管理员是 $
常见目录路径
/ 根目录
/etc 这个目录一般是放配置文件
/root 这个目录是root用户的家目录
/home 这个目录是普通用户的家目录
/tmp 临时目录,把它当window的回收站
/usr/local 用户安装的软件一般安装在这里
/del 存放设备的包括CPU,硬盘等等
关机(重启)
init 0 ;shutdown -r now | reboot ; init 6
查看当前位于哪个目录
pwd
几个特殊符号含义
~ 用户的家目录
- 回到一个目录
cd 直接回到当前的家目录
对文件的操作
-
新建文件
touch 文件名
touch如果创建一个文件不存在,就直接创建。如果文件存在就修改文件的访问时间 -
删除(remove)文件
rm 文件名
一次性删除多个文件–> rm -rf 文件1 文件2 -
复制(copy)文件
cp 源文件 目标文件
cp av.php /tmp/1.php //将av.php复制到tmp,并且重名为1.php
omitting directory `XXX’问题解决
出现该警告的原因是因为foldera目录下还存在目录,所以不能直接拷贝。
解决办法:使用递归拷贝,在cp命令后面加上-r参数 -
剪切(move)
mv 源文件 目标目录 -
编辑文件
vim 文件 -
查看文件的内容
vim 文件名
cat 文件名 //查看文件内容
head -n 2 文件名 //查看文件的头2行
tail -n 2 文件名//查看文件尾2行
more 文件名
enter 下一行
空格 下一页
b 上一页
目录的操作
-
创建目录
mkdir 目录名
//创建一个隐藏目录, linux .开头都是隐藏文件、目录
mkdir .av//-p递归创建
mkdir -p /tmp/学习资料/日本/波多野结//一次创建a b c三个目录
mkdir a b c -
删除目录
// -r 删除目录
rm -r 目录名// -f 强(强奸的强)制删除
rm -rf 目录 目录1 目录2 … -
修改目录的名字(剪切)
mv 源目录名 新目录名
//将avdir这个目录重命名为av
mv avdir av//将av目录移动到/tmp目录下
mv av /tmp/ -
复制目录
cp -a 源目录 目标位置
查询命令手册
man 命令
例:man cp
查看目录
ls [-#]
ls -ld /home/
-l-->目录的详情,例如权限
-d-->该目录属性
-a-->查看所有文件、目录(隐藏文件)
-h-->文件的大小
修改所有者
//change owner
chown 用户名 文件/目录
//将av.php的所有者修改成jack
chown jack av.php
添加用户
useradd 用户名
//给用户设置密码
passwd 用户名
删除用户
userdel -r 用户名 //-r 连根拔起(删除home)
切换用户
su - 用户名
权限
-rw-r--r--. 1 root root 0 11月 25 17:57 av.php
-rw-r--r--
第一位代表是文件还是目录还是其他
l 软连接(快捷方式)
- 文件
d 目录
b block device 设备
r 读权限 4
w 写权限 2
x 执行权限,可执行文件 1
- 没有
修改权限
chmod 权限 文件/目录
chmod 755 av.php
//将其他人的r权限去掉 o 代表是其他人 u 代表所有者 g 所属组
chmod o-r av.php
//将其他人的r权限加上
chmod o+r av.php
//给所有者的权限加上r
chmod u+r av.php
//将其他人的权限设置成rwx
chmod o=rwx av.php
-
对目录来权限:
一个目录有r权限,可以使用ls命令查看目录下的内容 一个目录有w权限,可以删除、新建目录下的文件、目录 一个目录有x权限,可以使用cd命令进入到目录中
-
对文件来说权限:
一个文件有r权限,可以查看文件内容 一个文件有w权限,可以修改文件中内容 一个文件有x权限,可以执行这个文件
-
提示
一般情况新建的目录的权限都是755
一般情况新建的文件的权限都是644
寻找文件命令
find 位置 寻找模式
find / -name av
find / -size +50k
grep 查找文件是否有某些内容
grep -i "word" av.php
网络命令
netstat -tlunp
管道符
| 将管道符左边的命令的结果给到右边的命令做进一步处理
挂载命令
挂载的概念: 在Linux中,所有U盘,硬盘都需要挂载才可以使用。
一个硬盘如果不挂载,内容根本没有办法看。
挂载的步骤
一般挂载目录都在/mnt/cdrom
1. 如果/mnt/没有cdrom目录,就自己创建。如果有了就不用建
mkdir /mnt/cdrom
2. 进行挂载( 硬盘一般叫做磁盘 )
mount /dev/sr0 /mnt/cdrom
卸载
/mnt/cdrom是挂载目录
umount /mnt/cdrom
压缩命令
Linux压缩格式: gz bz2
gz格式的压缩的命令:
tar -zcvf 压缩后的文件名 需要被压缩文件 被压缩文件1
tar -zcvf aa.tar.gz aa
gz格式的解压的命令:
tar -zxvf 解压文件名
tar -zxvf aa.tar.gz
-t 查看压缩包
tar -ztvf aa.tar.gz 查看不解包
bz2格式的压缩的命令:
tar -jcvf 压缩后的文件名 需要被压缩文件 被压缩文件1
tar -jcvf aa.tar.bz2 aa
bz2格式的解压的命令:
tar -jxvf 解压文件名
git学习网站( liaoxuefeng.com )
vim
-
命令模式
插入模式:
i(前插 insert) a(后插 append) o(另起一行插)
在命令模式下的一些命令
j 下 h 左 l 右 k 上 去到顶部: gg 去到底部: G 去到中间: M 去到12行: 12gg 删除光标所在的行: dd 删除光标所在的行下面的所有:dG 删除6,15行,并且不移动光标 :6,15d 复制光标所在的行: yy 复制光标所在行后的几行: nyy 复制8行到15行,并且不移动光标 :8,15y 黏贴: p 在光标后面黏贴, P 在光标上一行黏贴 替换一个字符: r 再按 需要替换成的字符 撤销 u 反撤销 ctrl + r 剪切: 先v键(转换成视图模式),再移动光标选中你要剪切的内容,然后按x 显示行号 :set nu 不显示行号 :set nonu
搜索
编辑模式 :/你要找的内容 :/root n 下一个 N 上一个
替换
//将1到9行的root字符替换成gz21 g 全局替换 i 不区分大小写 1,9s/root/gz21/g //将整个文件中root字符替换成gz21 %s/root/gz21/ig //将1到4行的开头替换成 // 1,4s/^/\/\//g 3,4s/^\/\///g //将1到5行的开头替换成# :1,5s/^/#/
软件
1.源码包
2.二进制包(rpm)
源码包
特点:1、可以看懂2、需要编译3、可以下载最新版
二进制包(rpm)
编译性语言已经将c语言变成二进制,计算机已经认识。
-
一个完整的rpm包的安装步骤
1. 挂载 mount /dev/sr0 /mnt/cdrom 2. 安装 rpm -ivh 绝对路径加包名字 rpm -ivh /mnt/cdrom/Packages/tree-1.5.3-2.el6.i686.rpm 卸载rpm包 rpm -e 包名 rpm -e tree //查询tree包是否安装 rpm -q tree //查询没有安装包的将要被安装到哪里 rpm -qlp 包全名
以后安装rpm包(二进制包)一般都是使用yum命令
yum -y install 包名
yum方式安装步骤 (yum可以自动解决rpm包的依赖性 )
1. 挂载
2. 修改yum源( 因为你现在是没有网络的,只能使用本地yum源 ,yum源可以是远程的,也可以是本地的,默认情况下远程yum源生效)
cd /etc/yum.repos.d/
//让远程yum源失效,这个时候CentOS-Media.repo生效
mv CentOS-Base.repo CentOS-Base.repo.bak
//修改CentOS-Media.repo中的内容
[c6-media]
name=CentOS-$releasever - Media
baseurl=file:///mnt/cdrom/
gpgcheck=0
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
3. 使用yum命令安装rpm包(二进制包)了
yum -y install 包名
//Linux一般都需要安装gcc的包,因为gcc包是C语言的编译器
yum -y install gcc
//编译c++语言
yum -y install gcc-c++
安装源码包步骤
1. 将源码包上传到Linux中,通过winscp这个工具
2. 找到上传包的位置,解压(tar -zxvf 压缩名 )
3. 进入到解压后的目录中 cd httpd-2.2.29
4. 查看包的README得到安装教程
// --prefix 指明安装的目录 一般会把源码包安装/usr/local/
// ./configure 检查环境是否能够安装这个软件
5. $ ./configure --prefix=/usr/local/apache2/( . 相对于http-2.2.29这个目录,且这个是安装路径)
//编译,使用gcc来编译
$ make
//安装
$ make install
//启动
$ /usr/local/apache2/bin/apachectl start
6. 通常需要关闭防火墙
//关闭防火墙
setup
卸载源码包
-
先去到编译目录(make)
cd ~/httpd-2.2.9/
make clean -
将整个安装目录删除
rm -rf 安装目录
其它命令
查看硬盘使用情况
df -h
Linux是多用户操作系统
用户的信息:
//这个文件是存放用户的信息的,但是没有密码
/etc/passwd
//这个文件是存放用户的密码,权限是000
/etc/shadow
//存放用户组信息
/etc/group
//存放用户组的密码,但是组密码一般不设置
/etc/gshadow
添加用户命令
useradd [选项] 用户名
//添加 test用户,test初始组是test组,这个命令还会新建一个test组,test用户的家目录是/home/test/
useradd test
useradd -c '这个是狗剩的账号' test
//新建一个用户并且将mary用户的初始组修改成root组,这是不建议的。
useradd -g root mary
//添加一个rose用户,并且设置rose附加组为root组
useradd -G root rose
删除用户
userdel -r 用户名
-r //连带家目录一起删除
组的命令
groupadd 组名
groupdel 组名
需求
新建一个php组,再添加phper,dba这个两个用户到php组中
groupadd php
useradd -G php phper
useradd -G php dba
假设phper,dba用户已经存在,将添加到php组中。
//将已经存在的phper用户添加到php组中
gpasswd -a phper php
其他命令
id 用户名 //查看当前在线用户
密码加盐( https://packagist.org/ )
如果php版本是5.5以上,建议直接使用password_hash()
如果php版本是5.5以下,建议使用phpass
服务管理( 启动(手动启动、自动启动)、停止、重启 )
源码包的启动方式:
//一般都是找到你包的安装位置下的bin目录来启动
/usr/local/apache2/bin/apachectl start
二进制包的启动方式:
service 服务名 start
//假设apache是通过二进制包方式安装的,启动方式如下
service httpd start
//重启网卡
service network restart
自启动:
//因为rc.local这个文件,当系统启动成功后,自动执行这个文件中命令
vim /etc/rc.local
/usr/local/apache2/bin/apachectl start
//将二进制包安装的服务自动启动,也是只需要将启动命令写到/etc/rc.local
ACL权限(特权)
//查看一个文件、目录有没有ACL权限
getfacl 文件名/目录名
// u 指定用户 -m 修改
setfacl -m u:用户名: 权限 文件名/目录
ACL权限完整例子
//只给马云特殊服务 -R 让子目录也有特殊权限
setfacl -m u:mayun:r-x -R /wechat/
// d destination 未来 这个命令让马云这个用户对未来新建的目录、文件都有r-x权限
setfacl -m d:u:mayun:r-x -R /wechat/
输出重定向
0输入 1标准输出 2错误
覆盖将一些内容写到一个文件中
追加将一些内容写到一个文件中
//将错误信息写到error.log, 正确信息输出到right.log
ls /abc 1>>right.log 2>>error.log
//将错误信息、正确信息都写到一个文件中
ls /a >>access.log 2>&1
输出重定向作用
错误信息、访问信息都应该记录下来。方便进行分析。
服务和进程管理(了解)
Linux服务器不能随便停掉。
服务器apache占用了你服务器大量资源( 80% ),意味着你的网站访问量很大。对策:
升级硬件(内存、换CPU,换硬盘)
* 如何看Linux资源消耗情况
top
* 查看所有已经启动服务
ps -aux
计划任务
计划任务:类似于js定时器,闹钟。
服务器是经常做备份MySQL数据,不能在访问量高的时候备份。 一般都在凌晨时候备份,但是人要睡觉。
计划任务作用:定时备份数据。
商城生成订单在一段时间内是有效的( 40min )。
订单表 makeTime(生成订单时间戳)
思路:可以让一个计划任务每1分钟执行一个php脚本
*/1 * * * * php /tmp/test.php
计划任务语法(重点)
//新增计划任务
crontab -e
//删除
crontab -r
//查看已经有计划任务
crontab -l
分 时 日 月 周
* * * * * 命令
//每天的第1个小时 echo 'a' >> /tmp/test.php
* 1 * * * echo 'a'>>/tmp/test.php
//每个月3,5号 执行 echo 'a' >> /tmp/test.php
* * 3,5 * * echo 'a' >> /tmp/test.php
//每1分钟 执行 echo 'a' >> /tmp/test.php
*/1 * * * * echo 'a' >> /tmp/test.php
//每年的2,3,4,5月3,5号, 下午五点整执行 echo 'a' >> /tmp/test.php
0 17 3,5 2-5 * echo 'a' >> /tmp/test.php
常见端口
IP地址用来区分不同电脑。
IP地址分为:公网IP,私有IP( 短号 )。
协议概念: 大家都遵守规则。
常见协议: http https tcp udp(数据传输协议) ftp(文件上传、下载)
http协议是一个无状态的协议,并且不安全。
https协议是一个安全的协议,数据经过加密。
常见端口:
3306 数据库
80 apache
22 ssh
21 ftp
11211 memcache
6379 redis(NoSQL数据库)
DNS(域名解析系统 Domain Name System)
人类一般只是记住域名,但是域名要与IP对应上。
先有IP,后有域名,因为Ip不好记忆。
域名通过DNS解析成IP
常见DNS服务器有什么:
//谷歌提供的免费的DNS解析服务器
8.8.8.8
//国内电信公司提供的
114.114.114.114
网络配置
** 网卡启动、关闭
service network restart
ifup eth0 ; ifdown eth0 快速开启和关闭网卡
FTP服务(重点)
ftp作用:上传、下载文件。
如何搭建一个ftp服务器
1. 挂载 mount /dev/sr0 /mnt/cdrom/
2. 安装vsftp yum -y install vsftpd
3. vim /etc/vsftpd/vsftpd.conf
打开 chroot_local_user=YES 这个选项 在96行
4. service vsftpd restart
5. vi /etc/selinux/config 关闭seliunux
修改这个为 SELINUX=disabled
//SELINUX这个选项开启后,你这个linux非常安全。
//SELINUX是为了增强linux安全性
5. reboot
6. 开启ftp service vsftpd start
samba安装步骤
1. 挂载
2. 安装
yum -y install samba
3. vi /etc/samba/smb.conf 在文件末尾添加以下内容:
[pub]
browseable = yes
path = /pub
writable = yes
[soft]
browseable = yes
path = /soft
writable = yes
4. 按照这个命令来设置
mkdir /pub
mkdir /soft
chmod 777 /pub
chmod 700 /soft
useradd aa
passwd aa
chown aa /soft
5. smbpasswd -a aa //将aa用户声明为samba用户
6. 重启服务
service smb restart
service nmb restart
7. 访问samba服务器
Apache配置文件
//apache配置文件的路径
/usr/local/apache2/etc/httpd.conf
//php配置文件路径
/usr/local/php/etc/php.ini
//数据库配置文件
/etc/my.cnf
//启动apache
/usr/local/apache2/bin/apachectl start/stop
//mysql数据库如何启动
/usr/local/mysql/bin/mysqld_safe --user=mysql &
//mysql数据库停止
/usr/local/mysql/bin/mysqladmin -uroot -p shutdown
//控制指定ip访问数据库(%-->ip)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123' WITH GRANT OPTION;
sql语句,不是linux命令
//更新数据库权限
mysql>flush PRIVILEGES;
把项目放进linux(/usr/local/apache2/htdocs/malikuan/)
之后修改权限 chmod 777 malikuan(项目名)最后修改回来 chmod 755 malikuan
//apache默认根目录,将php代码放到这里,通过浏览器可以访问到
DocumentRoot "/usr/local/apache2//htdocs"
<Directory "/usr/local/apache2//htdocs">
//Indexes 控制是否显示列表页,没有这个值就不显示列表页
Options Indexes FollowSymLinks
//.htaccess文件作用:将URL重写( 将URl变短 )
//AllowOverride的值是否控制.htaccess是否生效的一个开关, 当这个AllowOverride的值是All,.htaccess文件就生效,None .htaccess文件不生效
AllowOverride None
//控制哪些IP可以访问这个目录
//grangte 所有人都可以访问
//denied 拒绝所有人访问
Require all grante
例子1.仅允许192.168.0.0/24网络的主机访问
<RequireAll>
Require all granted
Require ip 192.168.1.0/24
</RequireAll>
例子2.禁止192.168.1.2的主机访问,其他的都允许访问,
<RequireAll>
Require all granted
Require not ip 192.168.1.2
</RequireAll>
</Directory>
//开启404页面
(/missing.html的意思是-->/usr/local/apache2//htdocs/missing.html)
ErrorDocument 404 /missing.html
虚拟主机(虚拟域名 www.1024.com => /htdocs/1024/ )
1. 在Window系统找到一个文件
C:\Windows\System32\drivers\etc\hosts
192.168.203.88 www.1024.com
2. 修改配置文件
vi /usr/local/apache2/etc/httpd.conf //修改apache主配置文件
Include etc//extra/httpd-vhosts.conf //打开虚拟主机配置文件
3. 修改vhosts.conf这个配置文件
vi /usr/local/apache2/etc/extra/httpd-vhosts.conf
<Directory "/usr/local/apache2/htdocs/1024">
Options Indexes
AllowOverride None
Require all granted
</Directory>
<VirtualHost 192.168.203.88>
#注意,只能写ip
ServerAdmin webmaster@sina.com
#管理员邮箱
DocumentRoot "/usr/local/apache2/htdocs/1024"
#网站主目录
ServerName www.1024.com
#完整域名
ErrorLog "logs/1024-error_log"
#错误日志
CustomLog "logs/1024-access_log" common
#访问日志
</VirtualHost>
4. 新建1024目录
mkdir /usr/local/apache2/htdocs/1024
5. 重启apache
/usr/local/apache2/bin/apachectl restart
6. 通过浏览器访问www.1024.com就可以看到1024目录下的文件了
apache重写
规划:域名跳转 www.jd.com --> www.12306.cn 当用户访问jd.com跳转到12306.cn这个域名
1. 修改apache主配置文件,让重写模块生效
#打开重写模块,记得重启apache
LoadModule rewrite_module modules/mod_rewrite.so
2. 修改vhosts配置文件,使htdocs/jd目录的 .htaccess文件生效
vim /usr/local/apache2/etc/extra/httpd-vhosts.conf
<Directory "/usr/local/apache2/htdocs/jd">
Options Indexes FollowSymLinks
AllowOverride All # 就是.htaccess的一个开关
Require all granted
</Directory>
3. 修改window下hosts文件
192.168.203.88 www.jd.com
192.168.203.88 www.12306.cn
4. 修改vhosts配置文件,让www.12306.cn指向到虚拟机中htdocs/12306这个目录
<Directory "/usr/local/apache2/htdocs/12306">
Options Indexes
AllowOverride None
Require all granted
</Directory>
<VirtualHost 192.168.203.88>
#注意,只能写ip
ServerAdmin webmaster@sina.com
#管理员邮箱
DocumentRoot "/usr/local/apache2/htdocs/12306"
#网站主目录
ServerName www.12306.cn
#完整域名
ErrorLog "logs/12306-error_log"
#错误日志
CustomLog "logs/12306-access_log" common
#访问日志
</VirtualHost>
5. mkdir /usr/local/apache2/htdocs/12306
5.1 在jd目录下修改.htaccess
vim /usr/local/apache2/htdocs/jd/.htaccess
RewriteEngine on
#开启rewrite功能
RewriteCond %{HTTP_HOST} www.jd.com
#把以www.jd.com 开头的内容赋值给HTTP_HOST变量
#RewriteCond URL重写规则
RewriteRule .* http://www.12306.cn
#.* 输入任何地址,都跳转到http://www.12306.cn
6. 重启apache
/usr/local/apache2/bin/apachectl restart
利用apache重写模块来实现一个URL重写(伪静态)
伪静态:不是真实的静态页面,那个静态页面文件是不存在。
伪静态的作用:1、 有利于搜索引擎收录
伪静态例子步骤
1. 修改apache主配置文件
vim /usr/local/apache2/etc/httpd.conf
让重写模块生效
LoadModule rewrite_module modules/mod_rewrite.so
2. 修改vhosts子配置文件
vim /usr/local/apache2/etc/extra/httpd-vhosts.conf
<Directory "/usr/local/apache2/htdocs/12306">
//FollowSymLinks 如果有了FollowSymLinks,可以允许从一个目录跳转另外一个目录
Options Indexes FollowSymLinks
// All 代表让.htaccess文件内容生效
AllowOverride All
Require all granted
</Directory>
2.1 重启apache
/usr/local/apache2/bin/apachectl restart
3. 在12306目录下新建一个.htaccess文件
vim /usr/local/apache2/htdocs/12306/.htaccess
#开启重写模块
RewriteEngine on
## RewriteRule 匹配到url 跳转到哪里
RewriteRule index(\d+).html index.php?id=$1
# index1.html 跳转 index.php?id=1
4. 在12306目录下新建一个index.php
nginx安装步骤
1.安装前准备:
1.关闭rpm默认安装的apache和mysql(快照一步到位)
2.保证本地yum源正常(修改yum源)
3.关闭selinux(vim /etc/selinux/config--> SELINUX=disabled)
4.关闭防火墙
iptables -F
iptables -X
Iptables -Z
5.安装gcc gcc-c++ (yum -y install gcc)
6.reboot
7.mount /dev/sr0 /mnt/cdrom
2.进入/root/lnmp1.0-full--> sh centos.sh
LNMP配置文件位置
-
mysql配置文件位置:
/etc/my.cnf
-
php配置文件位置:
/usr/local/php/etc/php.ini
-
Nginx配置文件位置:
/usr/local/nginx/conf/nginx.conf
-
nginx根目录
/home/wwwroot/default
-
nginx启动/重启/停止
/etc/init.d/nginx {start|stop|restart} //重启nginx 一般使用这个 pkill -HUP nginx
-
检查语法是否有错误
/usr/local/nginx/sbin/nginx -t