Linux基础

操作系统

  • Win
  • unix/Linux 服务器 (php apache mysql)
安装虚拟机

需要一台裸机电脑,可以使用虚拟机(VM[大小500M], VirtualBox[大小100M])

VirtualBox下载地址

过程中:存储在物理硬盘,选择固定大小。
动态分配:本身500G ,虚拟硬盘8G,本身电脑磁盘会根据虚拟磁盘存放文件大小情况动态分配磁盘空间。虚拟磁盘最多占据8G大小。
固定大小:本身500G, 虚拟硬盘8G,本身电脑一次性把8G磁盘都分配出来。该方式执行速度非常快。

需要将CentOS镜像文件,操作系统磁盘放入光驱(在存储栏操作).

虚拟机释放扑捉鼠标:ctrl.

linux磁盘文件类型:ext2ext3swap(交换分区).
windows磁盘文件类型:fat32, NTES.

swap,交换分区,把硬盘的一部分空间,拿出来当作硬盘使用,内存里边不常使用的数据放入交换分区。交换分区大小建议是内存的两倍。

挂载点:理解成Windows下的C盘,D盘等目录都是挂载点。

相关命令操作

linux相关命令操作

  • 查看当前目录的文件信息
> ls  // list
> ls 目录  // 查看指定目录的文件信息
  • 目录切换
> cd 目录地址
  • 显示当前用户所在位置
> pwd
  • 查看当前用户信息
> whoami
  • 切换用户
> su - root // 切换为root管理员用户
> su - // 切换为root 管理员用户
> su root // 切换为root管理员用户(权限还是普通用户)

> exit // 从root用户切换为普通用户 // 从root 直接执行exit表示退出
> su 具体用户 // 切换为指定用户
  • 操作模式切换
> init 3 // 桌面模式切换为命令模式
> init 5 // 命令模式切换为桌面模式
  • 显示系统分区
> df -lh 
  • 创建普通用户
> useradd
  • 查看文件指定大小
> du -h filename

磁盘分区

windows分区

windows系统分区结构:
例如分区有:C D E

硬盘本身没有分区概念,分区是操作系统的逻辑概念。
磁盘的区分是通过:磁柱

C,D盘符与物理磁盘建立联系的过程称之为“挂载”。
windows下,盘符与物理空间是自动挂载.

Linux基础_第1张图片

linux分区

linux的跟目录只有一个,名字为:/

  1. 整个系统只有一个根目录/
  2. 系统目录的挂载分为:自动手动
  3. 文件占据磁盘空间,是占据与它最近的上级挂载点的空间.

Linux基础_第2张图片

home 占据`/`根目录空间
tmp 占据自己的空间
muisc占据自己的空间
movie占据tmp空间
hello占据music空间

linux系统安装的过程中出现的分区,都是自动挂载。
系统运行过程中出现的光盘,U盘,移动硬盘需要手动挂载.
磁盘空间占用情况,文件会占用与它最近的挂载点的空间.

linux系统分区结构是一个"倒着的大叔"

window系统分区的结构是一个"倒着的森林"

根目录文件

/ (root, 根目录):与开机系统有关

/bin binary二进制文件,可执行程序文件.(内部文件是一些指令信息)

/sbin super binary超级的二进制文件目录 (超级管理员root可以执行的命令文件)

/dev device 设备目录,在linux系统里边全部设备都使用文件表示。

`/dev/cdrom` 硬件光驱设备
`/dev/sdal` 分区设备

/home 家目录. 给系统每创建一个用户,在该目录下就会自动创建一个对应目录(目录名字与当前用户名字一致),这个目录就是这个用户的家目录. 具体用户登陆系统会默认切换到自己的家目录.

/proc 内存映射目录。 查看系统的相关信息。

/var (variable) 与系统运作过程有关。可变的,编译的.

/boot 系统启动目录

`/boot/initrd-2.6.18-194.e15.img` 表示linux内核版本`2.6`

/etc 系统核心配置文件

`/etc/passwd`存放用户信息

/lib library资源库,函数库.

/mnt mount挂载 (可以挂载一些硬件,光驱,U盘,移动硬盘)。mnt相当于windows下的H盘符和K盘符,G盘符. 该目录可以不使用,随便一个普通目录都可以实现挂载。

/root root超级管理员的家目录.

/usr (unix software resource) 与软件安装/执行有关。 和windows系统C盘中的Program file目录. 系统软件安装到usr目录.

/usr/bin/usr/sbin,通过安装具体软件可以使用的一些指令.

目录操作

创建

创建目录:make directory

> mkdir filename

递归创建目录

> mkdir -p filename/filename  // 递归创建目录

移动

移动操作: move

> mv 目标 目录地址
  1. 目录存在 进行移动操作。
  2. 目录不存在 修改名字
> mv 目录  存在目录/不存在目录  // 把目标移动到目录并改名字.

修改名字

> mv 旧名字  新名字 // 给文件改名字

复制文件

复制文件copy

> cp 文件 目录 // 把文件复制到指定目录

复制目录

> cp -r 目录1 目录2 // 把目录1拷贝到目录2  // -r 参数 可以写到 cp 指令后, 也可以在最后

复制目录并修改

> cp  文件 目录/不存在的名字  // 文件复制到目录后被修改名字

修改文件内容

> cp 文件 目录/已存在文件 // 把文件中的内容替换成已存在的文件,名字为已存在文件的名字

删除文件/目录

删除目录 remove directory

> rmdir filename // 删除单个目录

删除递归目录
参数r 指的是:recursive.
参数f 指的是: force

> rm -r filename // 递归删除目录
> rm -rf filanem // 递归强制删除

路径

绝对路径
绝对路径:通过完整的路径定位一个文件,就是绝对路径.
通过根目录寻找指定文件
cd /etc/rpm
cd /
相对路径

相对路径: 一个文件对于当前文件经历过的目录,就是相对路径。

cd ../ 上级目录
cd ..  上级目录
cd ../../ 上两级目录
cd ../.. 上两级目录
cd ./  当前目录
cd .   当前目录

文件操作

查看

> cat filename // 把文件内容全部输出

> more filename // 逐行查看文件内容

退出查看:q

> less filename // 通过“上下左右”键查看文档各个部分内容

> head -n filename // 查看文档的前N行内容

> tail -n filename // 查看文档的后N行内容

> wc filename // 计算文件行数

创建新文件

> touch filename  // 创建文件
> touch 目录 filename // 在特定目录下创建文件

写入内容

> echo content > filename // 对文件进行覆盖内容
> echo content >> filanem // 对文件进行追加内容
> cat file1 > file2 // 把文件1的内容覆盖到文件2里
> cat file1 >> file2 // 把文件1的内容追加到文件2里

用户的管理

linux是一个多用户,多任务操作系统.
root用户有权限去管理.

创建用户
> useradd 用户名

Linux基础_第3张图片
查看当前系统用户信息

> cat /etc/passwd 

查看当前系统组别信息

> cat /etc/group

// 用户 ---- 组别 ---- 权限设置

默认,每创建一个用户就会为该用户创建一个组。
创建用户的时候,没有指定组别。

创建用户为指定组

> useradd -g 组名 用户名

创建用户指定giduidhome_dir.

> useradd -g 编组号 -u  用户编号 -d 家目录 用户名
修改用户

user modify

> usermod 用户名 (组别-g,家目录-d,用户名-l,用户编号-u)
> usermod -g 502 用户名

修改家目录必须手动创建对应的家目录,该目录的权限和所属组别都需要设置.

删除用户

user delete

> userdel 用户名
> userdel -r 用户名 // 连同用户的家目录一并删除 
查看命令使用细节
> man 命令
> 命令 --help

组的管理

创建组 group add
> groupadd 组名称
> groupadd -g 组名称 // 设置gid
修改组 group modify
> groupmod -g 组id -n 组名称
删除组 group delete
> groupdel 组名称

当前组别如果存在用户,不允许删除.

给用户设置密码

创建用户设置密码之后,可以登陆系统.

> passwd 用户名

VI

编辑器有:vim,emacs

vi编辑器默认有三种模式,命令(默认),编辑,尾行
进入编辑模式:a,i,o,s 四个键都可以
进入尾行模式::,/ 两种模式。
不保存文件强制退出编辑模式::q!
编辑模式下不可以退出,需要进入尾行模式才能退出。
尾行模式进入命令模式:1. esc。 2.连续两次esc 。3. 删除全部尾行内容

尾行操作模式

打开vi编辑器
vi 文件名
退出编辑器
ctrl + c
> :q 
保存文件
> :w
保存并直接退出
> :wq
保存并强制退出
> :wq!
搜索内容
> :/关键词(内容)  // 第一次出现的位置
> ?/关键词  // 最后一次出现的位置
> /关键词

n 往前查看
shift+n往后查找

内容替换
> :s/被替换内容/替换内容  // 替换当前行的第一个目标内容 (注意:鼠标需要在当前修改行数上.)
> :s/被替换内容/替换内容/g // 当前行上目标内容全部替换 // g全局 (注意:鼠标需要在当前修改行数上.)
> :%s/被替换内容/替换内容/g // 替换文档全部目标所有内容
编辑器前加上行数显示
> :set/number (:set nu)
取消序号显示
> :set nonumber (:set nonu)
跳转行数
:n  // 跳转行数
:10 

命令模式

命令模式,光标移动

字符间
  1. 上下左右移动 // 单个字符移动
  2. h,j,k,l 移动 // 单个字符移动
单词间
  1. e,本单词尾部或下个单词的尾部 // 单个单词移动 (end)
  2. w, 下个单词的首字母 (word)
  3. b, 上个单词的首字母 (before)
行间
  1. $ 行尾
  2. 0 行首
段落间

{ 本段落头部
} 本段落尾部

屏幕间

L 屏幕尾部
H 屏幕开头
不支持跨屏跳转

文档

G 文档的尾部
1+G 文档开头 (先按数字连续按G)
n+G 定位到文档的第n行

命令模式,删除内容

> dd // 删除本行
> n+dd // 删除指定多少行 (从当前行开始计算)
> d+光标移动的区域 // 删除选中的区域 // d+$ 从当前位置,一直删除至行尾 (包括光标所在位置) // d+e 删除单词结尾
> x  // 删除单个字符


> u // 撤销 undo
> . // 点,重复上一次命令
> r+字符 // 快速替换单个字符
> J // 大写J,合并两行.

命令模式,内容复制

> yy // 复制本行
> n+yy // 从当前行复制n行
> y+光标移动  // y+e 复制单词


> p // 粘贴内容 
> dd + p // 删除的内容,再粘贴 (删除和复制的内容都是放入缓存中)

编辑模式

a,i,o,s从命令模式进入编辑模式
esc 退出编辑模式到命令模式

  • a 光标后移动一位
  • i 光标不动
  • o 另起一行
  • s 删除光标所在位置

权限

文件(目录)权限本身划分: 读:readr写:writew执行:executex

权限从用户角度划分:主人权限: useru同组用户权限:groupg其它组用户权限: othero

Linux基础_第4张图片

首个字母d:表示目录
首个字母-:表示普通文件

设置权限

字母[相对方式]设置权限,设置权限的同时对其它权限没有影响。
cheange modify
> chmod u+x 文件名/目录名 // 增加权限
> chmod u-w 文件名/目录名 // 减少权限

> chmod o+wx 文件名/目录名 // 增加多个权限
> chmod o-wxr 文件名/目录名 // 减少多个权限
> chmod u+x,g-w 文件名/目录名  // 多个用户减少多个权限,或增加多个权限
数字[绝对方式]设置权限

数字表示权限
前提:任何两个数字算术和不能等于第三个数,否则权限混淆。
读4,写2,执行1。
主人7,同组6,其他组5。

> chmod 060 filename //  设置同组读写权限,主人和其它组没有权限。

> chmod 751 dirname -r // 对目录进行递归设置权限

权限具体使用

文件的读,写,执行。
  1. 文件没有写权限,强制写入,强制保存。
  2. 其它组用户,没有写入权限,也可以强行写入,强制保存。结果:文件的组和主人发生变化,谁修改,变成谁
  3. 修改一个没有读权限的文件,强制写入,强制保存。结果:原先的内容覆盖。
  4. shell脚本让文件执行。shell脚本:linux内部的编程技术,就是linux系统指令的集合
#!/bin/bash
cd /home/mm
ls -al > a.txt
目录的,读,写,执行
  1. 目录的读权限,规定是否可以查看文件内部信息。
  2. 目录的写权限,规定用户是否可以给目录增,减文件。
  3. 目录的执行权限,规定用户是否可以切换到该目录。
  4. 如果用户对当前文件有写权限,就可以执行,不受上级目录权限限制。(明确保护一些文件,那么就把这些文件的上级目录权限设置禁止其他用户查看,切换进该目录)

系统常用指令

信息匹配
> grep 关键字 路径名 // 将文本中指定的信息匹配出来
> grep own ./newpasswd 
> grep own /etc/passwd 
查看进程

任务管理器,查看系统进程及所占资源

> top 

退出进程q

查看活跃进程
> ps // 查看系统活跃进程process
> ps -A // 查看所有进程
查看内存使用情况
> free
> free -m  // 查看内存情况
显示文件占据磁盘大小
> du -h filenname // 以K,M,G为单位显示或文件占据磁盘空间大小(硬盘中最小的`block`是4k)
时间
> date // 查看系统时间
> date -s "2017-1-15 16:06:06" //  给系统设置时间
查看系统分区
> df -lh // 查看系统分区信息
杀死进程
> kill -9 pid // 杀死指定进程号的进程
> kill -9 1922

管道

管道(pipe):前者的输出是后者的输入

> ls -al | wc // 查看当前目录下一共的文件数目
> ls -al | grep 关键词 
> ls -al | head -10 
> cat newpasswd | grep 'nologin'
> ls -al | less | head -10

递归使用管道

> ls -al | grep mm | wc // 查看当前目录下有多少文件。

文件查找

find文件查找

> find 目录 参数 参数值, 参数 参数值, 参数 参数值...
 
> find / -name  passwd // 查询名字
> find /etc -name passwd
> find / -maxdepth 3 -name passwd // 指定查询文件层次
> find / -mindepth 3 -maxdepth 3 -name passwd 

参数:

  • -maxdepth n 查找目录最深层次
  • -mindepth n 查找目录最浅层次
  • -name filename 根据文件名称
  • -size 大小 根据文件大小进行查找 (大小单位默认:512字节[半k])
> find  ./ -size 10c // 修改单位 (1c=1字节)
> find  ./ -size 10k // 修改单位 
> find ./ -size +5000c // 大于指定值
> find ./ -size -10c // 小于指定值
  • -perm 根据权限查找
> find ./ -perm  666
  • -type f/d 根据文件还是目录查找
> find ./ -maxdepth 1 -type d // 查找当前一级目录
  • -user -uid -nouser 当前用户
  • -group -gid -nogroup 当前组

软链接和硬链接

软链接link

定义:就是windows系统的快捷方式

作用:可以对硬盘空间进行合理分配

具体设置:

ln  -s   源文件    软链接

定义:就是windows系统的快捷方式
作用:可以对硬盘空间进行合理分配

> ln -s 源文件 软链接
> ln -s a.txt b.txt

如果源文件不在同一级目录中,需要使用绝对路径

> ln -s /home/mm/xixi.txt /home/mm/run/hh.txt

软链接使用注意:

  1. 设置软链接,如果软链接和源文件不在同一级目录,原文件需要设置为绝对路径方式
  2. 普通文件和目录都可以设置软链接。
  3. 源文件被删除,对应的软链接变为“无效链接”,如果再创建一个同名源文件,软链接恢复为有效连接。
硬链接

与PHP中的引用复制一样。
作用:防止特殊文件被删除。
定义:系统里边文件的名称/目录(引用)就是硬连接。
给文件增加名称(应用)的过程就是创建“硬连接”(一个文件有多个名字,它们互为硬连接)

> ln [-d] 源文件 硬连接

硬链接使用注意:

  1. 设置硬链接的时候,原文件不需要使用绝对路径
  2. 只有普通文件可以设置硬链接,目录不可以
  3. 同一个原文件的所有硬链接文件必须在同一个硬盘、同一个分区里边

查看目录或文件的标识id

> ls -li 文件名/目录名

使用硬连接的好处:

  1. 防止重要的文件被误删除
  2. 如果有多人需要操作同一个文件,就给他们创建许多硬链接即可。

任务调度指令

任务调度指令:规定系统在指定时间完成指定任务。

开启任务调度指令

> crontab -e 

执行指令之后,打开文件。
参数: 分钟 小时 日期 月份 日期 执行命令

00 23 15 * * /home/mm/pin.sh // 每个月的15号23点执行

M:分钟(0-59)
H:小时(0-23)
D:天 (1-31)
m:月(1-12)
d: 一星期内的天(0-6,0为星期天)

查看任务调度指令

> crontab -l

文件属组

修改文件的主人 change owner
> chown 主人 filename // 需要超级管理员来执行
> chown -R 主人.组 filanem // 同时修改的主人和组
> chown root.mayday filenam 

> chown -R 主人 filanem  // 递归修改目录和目录底下文件的全部所属
> chown mm pink.html
修改组 change group
> chgrp .组 filename
> chgrp .mayday a.txt

配置网络

  1. virtualbox配置网卡,接网线 (连接模式:桥接网卡,混杂模式:全部允许)
  2. 配置ip,子网掩码,静态设置,开机启动ONBOOT网卡/etc/sysconfig/network-scripts 编辑:ifcfg-eth0
  3. 重启网络
  4. 本机子网掩码与linux掩码一致。
  5. 测试是否可以与本机对话,设置ping ip(ping 一去一会)

编辑ifcfg-eth0文件(提前备份文件)

BOOTPROTO=static # 设置静态目录
IPADDR=192.168.56.1 # 设置静态ip
ONBOOT=yes # 开机自动启动
NETMASK=255.255.255.0 # 子网掩码
子网掩码
192.168.5.100 --- 192.168.5.1 为了搜寻对方比较快捷,只寻找最后一位 1 即可。
如何判断只寻找最后一位,因为有子网掩码在做比较。(255.255.255.0)。 ip地址和子网掩码分别&&运算(二进制做与运算),如果得到结果一致,说明是同一网段。
启动网络
> service network restart

secureCRT

终端软件secureCRT/putty连接服务器及简单配置

secureCRTssh协议,端口22
类似apache是http协议,端口80

配置

选项-会话选项

  1. 回滚次数
  2. 配置界面
  3. 乱码设置(外观:字符编码,字体设置)

光驱的挂载和卸载

光驱挂载

光驱挂载mount

光驱硬件位置:/dev/cdrom.
在系统寻找一个目录,让其与光驱硬件挂载,进而使用光驱。
选择目录:/mnt目录. 自定义目录也行。

> mount 硬件设备(绝对路径) 挂载点
> mount /dev/cdrom  ./rom  // 自定义挂载目录 // 会出现挂载失败

> mount -t ext3 /dev/cdrom /home/rom 
> mount -t auto /dev/cdrom /home
光驱卸载
  1. 可以卸载硬件设备
  2. 卸载挂载点
> unmount ./rom

> unmout /dev/cdrom

软件安装

rpm 安装

类似windows软件的安装(该软件安装软件的本质,就是把许多二进制文件复制到系统指定目录)

源码编译安装

rpm方式更灵活,可以灵活配置需要安装各种软件.

  1. configure 检查配置 (软件安装目录配置)
  2. make 编译软件(c语言程序-->机器语言程序)
  3. make install 安装软件, 与rpm方式类似。把二进制复制到系统指定目录.
智能yum方式

yum php. 一键安装方式。要求服务器需要有网络。

Ftp服务

安装

Ftp文件传输协议.
协议:ftp,端口:21

安装:vsftpd
/home/mm/rom/Packages 底下安装vsftpd

> rpm -ivh 文件名
> rpm -ivh vsftpd-2.2.2-11.el6_4.1.i686.rpm

查看软件是否安装成功:

> rpm -q 软件名 (q:query)
> rpm -q vsftpd 

卸载软件:

> rpm -e 软件名
> rpm -e vsftpd

查看全部软件

> rpm -qa

模糊查询软件

> rpm -qa  | grep 'ftpd'

升级已有软件

> rpm -u 文件名

文件名:软件名 + 版本号 + 后缀
软件名:是一个软件在系统运行过程中,对其直接操作名字。例如:fvstpd

使用

启动vsftpd服务器

> service vsftpd start // 启动
> service vsftpd stop // 停止
> service vsftpd restart // 重启

通过客户端ftp(winscp)软件使用服务器的ftp服务。
首次连接失败,原因,需要让linux服务器放开对21号端口的保护。

修改iptables

vi /etc/sysconfig/iptables
将
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT (允许80端口)添加到22端口配置的下面

root用户需要登陆ftp需要修改:user_listftpusers 文件,开放权限。 在 /etc/vsftpd 文件夹中.

ftp只允许访问用户自己的家目录

ftp使用普通用户,不要使用系统根目录.

vsftp.conf打开配置项:

chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

创建chroot_list设置访问的用户。
作用:用户的使用会把家目录设置成根目录。

gcc编译器

安装gcc:

gcc-4.4.7-4.el6.i686.rpm
gcc-c++-4.4.7-4.el6.i686.rpm

需要安装依赖.

error: Failed dependencies:
    cloog-ppl >= 0.15 is needed by gcc-4.4.7-4.el6.i686
    cpp = 4.4.7-4.el6 is needed by gcc-4.4.7-4.el6.i686
    glibc-devel >= 2.2.90-12 is needed by gcc-4.4.7-4.el6.i686
    libgomp = 4.4.7-4.el6 is needed by gcc-4.4.7-4.el6.i686
    libgomp.so.1 is needed by gcc-4.4.7-4.el6.i686

A软件依赖B软件,B软件依赖C软件,C软件依赖D软件。
A软件安装的时候,需要B,C,D软件的支持。 先安装D,安装C,安装B,安装A。
卸载C软件的时候,需要先卸载B软件。卸载B软件会提示先卸载A软件。 卸载A,卸载B,卸载C

部分依赖:

mpfr-2.4.1-6.el6.x86_64.rpm
ppl-0.10.2-11.el6.x86_64.rpm

测试gcc安装是否成功:

#include 
main() {
    printf('hello world\n');
}

编译:

> gcc filename

zlib

zlib-1.2.5.tar.gz安装

> tar –zxvf zlib-1.2.5.tar.gz
> cd zlib-1.2.5
> ./configure     //这个配置编译命令不要加目录参数
> make && make install

软件解压缩
后缀:tar.gz --> tar zxvf 压缩包
后缀:tar.bz2 --> tar jxvf 压缩包

> tar zxvf 压缩包名字

安装zlib软件(源码配置方式安装)

  • 检查配置软件的依赖关系 configure
检查软件依赖关系
设置软件安装路径
软件参数配置

configure指令,作为配置.

> ./configure --help
> ./configure --prefix // 设置软件安装目录

zlib软件安装的时候做配置configure,不需要设置额外的参数,系统会把其它安装在默认的目录,以便其它软件可以找寻其配置 。

检查配置

> ./configure
  • 编译软件 make

例如:把c语言的二进制文件编译成可执行 二进制代码。

> make
  • 安装软件 make install

把编译后的二进制文件复制到系统指定目录

> make install 

安装软件三步:

  1. 检查配置:./configure
  2. 编译软件: make
  3. 安装软件: make install

Apache编译安装

安装顺序:
apache -> php -> mysql

解压文件
> ./configure --prefix=/usr/local/http2 \  
> --enable-modules=all \ 
> --enable-mods-shared=all \ 
> --enable-so

apache软件里边有许多功能模块modules,与软件本身是两部分内容,--enable-mods-shared=all,参数作用是把modules模块的代码也编译进软件的本身里边。缺点:本身物理体积变大,优点:运行速度快.
不把模块编译进软件内,这样软件体积可以小巧,如果需要那个模块就立刻include进来使用.

编译和安装
> make && make install
启动apache
> /usr/local/http2/bin/apachectl start 
通过setup指令开放防火墙的80端口
通过浏览器请求apache服务

apache配置虚拟主机

打开httpd.conf

打开httpd-vhosts.conf辅助配置文件

修改配置httpd-vhost.conf文件


    DocumentRoot "/home/mm/1111"
    Servername local.com

重启apache ./apachectl restart

windows下的host文件需要配置dns域名解析

192.167.1.10 local.com
访问权限问题

提示:Forbidden

  • 开启apache配置文件的目录访问权限

    Options FollowSymLinks
    AllowOverride all
    Order deny,allow
    Allow from all
  • 没有默认索引文件
> touch /home/mm/1111/index.html
  • 文件目录权限

文件的执行权限必须要有。

安装PHP

php有许多依赖包程序:libxmlgdjpegpng等等.

解压文件
安装libxml2
shell> cd /home/mm/tar
shell> tar zxvf libxml2-2.7.2.tar.gz 
shell> cd libxml2-2.7.2
shell>./configure --prefix=/usr/local/libxml2 
shell> make && make install
安装jpeg8
shell> cd /home/mm/tar
shell> tar -zxvf jpegsrc.v8b.tar.gz 
shell> cd jpeg-8b 
shell>./configure --prefix=/usr/local/jpeg \
--enable-shared --enable-static 
shell> make && make install
安装libpng
shell> cd /home/mm/tar
shell> tar zxvf libpng-1.4.3.tar.gz 
shell> cd libpng-1.4.3 
shell>./configure  # 不要带参数,让它默认安装到相应目录
shell> make && make install
安装freetype
shell> cd /home/mm/tar
shell> tar zxvf freetype-2.4.1.tar.gz 
shell> cd freetype-2.4.1
shell>./configure --prefix=/usr/local/freetype 
shell> make && make install
安装GD库
shell> cd /home/mm/tar
shell> tar -zvxf gd-2.0.35.tar.gz 
shell> mkdir -p /usr/local/gd 
shell> cd gd-2.0.35 
shell>./configure --prefix=/usr/local/gd  \
            --with-jpeg=/usr/local/jpeg/     \
            --with-png --with-zlib \
            --with-freetype=/usr/local/freetype
shell> make && make install
安装PHP
shell> cd /home/mm/tar
shell> tar -jxvf php-5.3.6.tar.bz
shell> cd php-5.3.6
shell>./configure --prefix=/usr/local/php \
--with-apxs2=/usr/local/http2/bin/apxs \   //  对apache的支持。 与apache结合使用,在httpd.conf里面会自动引入PHP模块,也会自动创建对应的apache,php模块
--with-mysql=mysqlnd \     // 数据库支持 mysql native driver
--with-pdo-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-freetype-dir=/usr/local/freetype \
--with-gd=/usr/local/gd \
--with-zlib --with-libxml-dir=/usr/local/libxml2 \
--with-jpeg-dir=/usr/local/jpeg \
--with-png-dir \
--enable-mbstring=all \   //  宽字节函数库支持(mb_substr())
--enable-mbregex \      // PHP中的表达式支持
--enable-shared      // PHP的函数库编译到本身软件中

shell> make && make install 
shell> cp php.ini-development /usr/local/php/lib/php.ini   // 复制`php.ini-development` 系统指定目录。

注意点:
软件安装失败,需要重新安装:

  1. 直接删除对应的程序文件。例如:/usr/local/http2. 删除http2目录。
  2. 删除解压后的文件。
  3. 重新解压,重新配置configure,重新编译make,重新安装make install

配置Apache使其支持PHP

修改配置文件httpd.conf

> vi /usr/loca/http2/conf/httpd.conf
  • 在httpd.conf(Apache主配置文件)中增加:
AddType application/x-httpd-php .php
  • 找到下面代码

    DirectoryIndex index.html

在index.html前面index.php

  • 建立php测试网页

> vi /home/mm/index.php

输出内容:

  • 重启apache
> /usr/local/http2/bin/apchectl restart
  • 访问到浏览器http://虚拟机IP

看到PHP信息,完成。

注意:
PHP模块安装后重启apache如果提示语法错误,Syntax error on line on 105 of
作用:告知系统创建了一个PHP模块.
解决办法:

> echo '/usr/local/lib' >> /ect/ld.so.conf
> ldconfig

让系统重新识别模块信息

安装Mysql

编译安装Mysql
shell> cd /home/mm/tar
shell> tar -xzvf mysql-5.1.58.tar.gz
shell> cd mysql-5.1.58    
shell> ./configure --prefix=/usr/local/mysql \    
        --with-charset=utf8 \            // mysql 对字符集的支持    
        --with-extra-charsets=gbk,gb2312,binary        //  mysql额外字符集支持
shell> mount // .....挂载光盘 安装依赖.
shell> rpm -ivh libtermcap-devel-2.0.8-46....
shell> make && make install
配置并初始化MySQL
shell> groupadd mysql    
shell> useradd  -g mysql mysql    
shell> cp support-files/my-medium.cnf /etc/my.cnf  // mysql配置文件拷贝系统指定目录,并修改文件名 
shell> cd /usr/local/mysql
shell> chown -R mysql.mysql . // 递归修改组和文件的主人 为当前目录`.`
shell> bin/mysql_install_db --user=mysql \
--datadir=/usr/local/mysql/var
// 创建mysql测试数据库和系统的数据库。 把数据存放到var目录下. (在mysql的bin目录下执行)
shell> chown -R root .    
        // 把当前目录文件的主人都改为root,避免数据库恢复为出厂设置。 (在mysql的bin目录下执行)
shell> chown -R mysql var 
shell> bin/mysqld_safe --user=mysql &    
        // 启动mysql,`&`表示在后台运行mysql服务

搜寻进程

> ps -A | grep 'mysql'

登陆mysql

> ./mysql // 在bin目录

设置密码:
通过数据表的形式修改密码

> use mysql
> desc user

> seelct User,Password,Host from user

> update user set Password=password(Pass1234)   // 设置密码并加密

刷新mysql权限,(无论是设置密码,还是增减权限都需要刷新mysql权限)是密码生效

> flush privileges

注意:

  • 安装完之后,gnome已经奔溃,不要使用桌面模式.
> cd /etc
> vi inittab
  • apache 和 mysql 启动方式不同

设置系统自动启动

配置文件路径:
/etc/rc.d/rc.local 文件中增加启动apache的命令

/usr/local/http2/bin/apachectl start 
/usr/local/mysql/bin/mysqld_safe --user=mysql &

> vi /etc/rc.d/rc.local

系统重启

reboot

关机

poweroff

你可能感兴趣的:(linux,linux入门)