第 3 章 LAMP 的 基 本 安 装 与 配 置 3 LAMP 的 基 本 安 装 与 配 置 知 识 点 Apache 的 安 装 与 配 置 MySQL 的 安 装 与 配 置 PHP 的 安 装 与 配 置 LAMP 是 Linux + Apache + MySQL + PHP 的 首 字



Similar documents
AL-MX200 Series

本文由筱驀釹贡献

AL-M200 Series

untitled

Microsoft Word - PS2_linux_guide_cn.doc

Microsoft Word - linux命令及建议.doc

CANVIO_AEROCAST_CS_EN.indd

ebook35-2

網路安全:理論與實務 第二版

软件自由法律中心 GPL 软件许可证合规指导

软件测试(TA07)第一学期考试

IP505SM_manual_cn.doc

投影片 1

untitled

LAMP system and relative tools like SNMP, Expect, Nmap, etc. to build a cross- platform, lo

Some experiences in working with Madagascar: installa7on & development Tengfei Wang, Peng Zou Tongji university

1.ai

WebSphere Studio Application Developer IBM Portal Toolkit... 2/21 1. WebSphere Portal Portal WebSphere Application Server stopserver.bat -configfile..

PowerPoint 演示文稿

Windows 2000 Server for T100

Serial ATA ( Silicon Image SiI3114)...2 (1) SATA... 2 (2) B I O S S A T A... 3 (3) RAID BIOS RAID... 5 (4) S A T A... 8 (5) S A T A... 10

2 2 3 DLight CPU I/O DLight Oracle Solaris (DTrace) C/C++ Solaris DLight DTrace DLight DLight DLight C C++ Fortran CPU I/O DLight AM

Symantec™ Sygate Enterprise Protection 防护代理安装使用指南

1. 請 先 檢 查 包 裝 內 容 物 AC750 多 模 式 無 線 分 享 器 安 裝 指 南 安 裝 指 南 CD 光 碟 BR-6208AC 電 源 供 應 器 網 路 線 2. 將 設 備 接 上 電 源, 即 可 使 用 智 慧 型 無 線 裝 置 進 行 設 定 A. 接 上 電 源

PowerPoint Presentation

快 速 入 门 (Linux) 概 述 文 档 目 的 本 文 档 介 绍 了 如 何 快 速 创 建 Linux 系 统 实 例 远 程 连 接 实 例 部 署 环 境 等 旨 在 引 导 您 一 站 式 完 成 实 例 的 创 建 登 录 和 快 速 环 境 部 署 云 服 务 器 ECS 实

ebook140-8

ebook70-5

投影片 1

epub 61-2

untitled

Olav Lundström MicroSCADA Pro Marketing & Sales 2005 ABB - 1-1MRS755673

ansoft_setup21.doc

Chapter 2

ebook140-9

untitled

Windows RTEMS 1 Danilliu MMI TCP/IP QEMU i386 QEMU ARM POWERPC i386 IPC PC104 uc/os-ii uc/os MMI TCP/IP i386 PORT Linux ecos Linux ecos ecos eco

Sun Fire V440 Server Administration Guide - zh_TW

TX-NR3030_BAS_Cs_ indd

Pchome

GoFlex Home UG Book.book


A9RF716.tmp

1 SQL Server 2005 SQL Server Microsoft Windows Server 2003NTFS NTFS SQL Server 2000 Randy Dyess DBA SQL Server SQL Server DBA SQL Server SQL Se

像 客 样 使 命令行 徐 东

Linux 操作系统课程社区创作

Windows XP

LSI U320 SCSI卡用户手册.doc

Microsoft Word - HSK使用手册.doc

QVM330 多阜寬頻路由器

Parallels Plesk Panel 安裝與升級指南

资源管理软件TORQUE与作业调度软件Maui的安装、设置及使用

AXIS P7224 Video Encoder Blade – Installation Guide

目 錄 壹 青 輔 會 結 案 附 件 貳 活 動 計 劃 書 參 執 行 內 容 一 教 學 內 容 二 與 當 地 教 師 教 學 交 流 三 服 務 執 行 進 度 肆 執 行 成 效 一 教 學 課 程 二 與 當 地 教 師 教 學 交 流 三 服 務 滿 意 度 調 查 伍 服 務 檢

Cadence SPB 15.2 VOICE Cadence SPB 15.2 PC Cadence 3 (1) CD1 1of 2 (2) CD2 2of 2 (3) CD3 Concept HDL 1of 1

ORACLE Enterprise Linux 6.3下ORACLE11g的安装

IC-900W Wireless Pan & Tilt Wireless Pan & Tilt Remote Control / Night Vision FCC ID:RUJ-LR802UWG

Applied Biosystems StepOne™ Real-Time PCR System Quick Reference Card for Installation

ArcIMS ArcIMS Shape ArcIMS Monitor ArcIMS Tasker ArcIMS Windows NT UNIX ArcIMS ArcIMS MapService ArcIMS ArcIMS ArcIMS ArcIMS JAVA Windows NT UNIX ArcI

内 容 提 要 将 JAVA 开 发 环 境 迁 移 到 Linux 系 统 上 是 现 在 很 多 公 司 的 现 实 想 法, 而 在 Linux 上 配 置 JAVA 开 发 环 境 是 步 入 Linux 下 JAVA 程 序 开 发 的 第 一 步, 本 文 图 文 并 茂 地 全 程 指

目 錄 第 一 章 weberp 簡 介... 6 第 一 節 概 述... 6 第 二 節 安 全 性... 7 第 三 節 功 能... 7 一 銷 售 及 訂 單... 7 二 稅... 8 三 應 收 帳 款... 8 四 存 貨... 8 五 購 買... 9 六 應 付 帳 款... 9

untitled

ebook62-1

Abstract arm linux tool-chain root NET-Start! 2

K7VT2_QIG_v3

Microsoft Word - SupplyIT manual 3_cn_david.doc

Logitech Wireless Combo MK45 English

Microsoft Word - template.doc

SA-DK2-U3Rユーザーズマニュアル

自由軟體教學平台

1 2

Quick Start Guide

自由軟體教學平台

软件概述

Panaboard Overlayer help

untitled

WWW PHP

Transcription:

Linux 体 系 结 构 与 程 序 设 计 写 的 : PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/ usr/sbin:/usr/bin:/root/bin; export PATH 这 是 用 来 设 定 环 境 变 量 PATH 的, 所 以 在 at 里 输 入 的 命 令 就 不 需 要 写 绝 对 路 径, 写 一 个 命 令 名 即 可 不 过 crontab 只 会 设 定 /usr/bin 和 /bin 这 两 个 路 径 为 PATH 变 量 的 值 所 以 在 此 强 烈 建 议, 编 辑 的 时 候 最 好 在 最 前 面 加 上 这 样 一 行 : PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/ usr/sbin:/usr/bin 这 样 就 会 省 很 多 事 在 任 务 文 件 中 把 所 有 需 要 写 的 命 令 都 写 完 后, 就 可 以 保 存 退 出 了 在 设 置 好 任 务 后, 如 果 想 查 看, 可 以 用 crontab l, 刚 才 编 辑 的 任 务 文 件 就 会 被 输 出 到 屏 幕 上 如 果 想 添 加 或 删 除 某 个 任 务, 再 次 执 行 crontab e, 在 编 辑 框 中 编 辑 任 务 即 可 如 果 想 要 删 除 所 有 的 任 务, 则 执 行 crontab r 本 章 小 结 2 本 章 是 学 习 Linux 过 程 中 非 常 重 要 的 一 部 分, 将 直 接 影 响 以 后 的 各 种 操 作 这 是 修 炼 Linux 必 备 的 基 本 功, 使 用 命 令 的 熟 练 度 会 显 示 出 是 否 是 一 个 优 秀 的 Linux 人 员 另 外 需 要 注 意 的 是, 因 为 编 辑 器 在 Linux 下 很 常 用, 修 改 配 置 文 件 时 需 要 用 到, 写 脚 本 时 需 要 用 到, 并 且 大 部 分 软 件 都 有 集 成 Vim 或 Emacs 的 键 绑 定 (Key Binding), 所 以 至 少 需 要 掌 握 其 中 一 种 编 辑 器, 这 样 才 会 得 心 应 手 42

第 3 章 LAMP 的 基 本 安 装 与 配 置 3 LAMP 的 基 本 安 装 与 配 置 知 识 点 Apache 的 安 装 与 配 置 MySQL 的 安 装 与 配 置 PHP 的 安 装 与 配 置 LAMP 是 Linux + Apache + MySQL + PHP 的 首 字 母 缩 写 LAMP 作 为 Linux 下 的 经 典 组 合 被 广 泛 用 于 各 种 网 络 应 用, 例 如 著 名 的 Facebook ( 一 个 SNS, 社 会 化 网 络 站 点 ) 因 此 学 会 搭 建 LAMP 平 台 是 很 有 必 要 的 本 章 详 细 介 绍 Apache MySQL PHP 的 安 装 过 程, 并 进 行 了 基 本 配 置, 可 以 满 足 普 通 的 应 用 3.1 安 装 前 的 注 意 事 项 请 遵 照 一 定 的 顺 序 安 装,PHP 必 须 最 后 安 装 请 一 定 注 意 文 中 shell 提 示 符 前 面 的 路 径, 必 须 保 证 每 次 执 行 命 令 时 都 在 正 确 的 路 径 下, 否 则 可 能 会 出 错 当 然, 这 也 没 有 那 么 死 板, 如 果 清 楚 其 中 的 原 理, 也 可 以 自 行 调 整 本 章 内 容 是 在 CentOS 5.1 上 测 试 的, 所 以 文 中 额 外 安 装 的 一 些 软 件 源 中 的 包 可 能 会 与 其 他 发 行 版 中 的 包 名 不 同, 请 自 行 修 改 提 示 Linux 下 的 软 件 安 装 方 式 主 要 有 3 种 : 直 接 编 译 软 件 源 码 安 装 RPM/DEB 包 下 载 安 装 通 过 Linux 发 行 版 自 带 的 软 件 源 安 装 (CentOS 相 关 配 置 文 件 为 /etc/yum.repos.d/centos Base.repo) 不 同 的 Linux 发 行 版 软 件 源 中 的 包 名 可 能 不 同 本 章 主 要 采 用 编 译 安 装, 其 中 还 需 要 通 过 软 件 源 安 装 一 些 依 赖 软 件 本 章 主 要 采 用 编 译 安 装 方 式, 可 以 自 定 义 软 件 的 模 块 及 功 能, 例 如 可 以 通 过 configure 命 令 的 prefix 参 数 设 置 软 件 安 装 路 径 等 目 的 是 让 读 者 熟 悉 Linux 下 特 有 的 几 种 安 装 方 式, 方 便 读 者 了 解

Linux 体 系 结 构 与 程 序 设 计 Linux 下 的 各 种 应 用 3.2 Apache Apache 是 一 款 提 供 HTTP 服 务 的 Web 服 务 器 软 件 ( 全 称 是 Apache HTTP Server), 最 初 由 Robert McCool 创 造 现 在 的 Apache 是 由 Apache 软 件 基 金 会 (Apache Software Foundation) 资 助 的 开 放 社 区 进 行 维 护 和 开 发 Apache 同 时 也 是 在 Apache License 保 护 下 的 开 源 软 件, 支 持 多 种 操 作 系 统, 包 括 UNIX Linux Mac OS X FreeBSD Windows 等, 但 大 多 数 还 是 应 用 在 Linux 系 统 上 Apache 已 经 成 为 了 世 界 上 最 流 行 的 HTTP Server, 截 至 2009 年 3 月 的 统 计, 超 过 46% 的 网 站 使 用 Apache Apache HTTP Server 的 网 址 是 http://httpd.apache.org/ 3.2.1 Apache 的 安 装 3 先 到 http://httpd.apache.org/download.cgi 下 载 相 应 版 本 的 Apache HTTP Server, 这 里 使 用 的 是 2.2.11, 下 面 就 以 该 版 本 为 例 进 行 讲 解 1. 解 压 安 装 文 件 [root@localhost ~]# tar zxvf httpd 2.2.11.tar.gz 2. 编 译 并 安 装 enable so 选 项 是 打 开 Apache 的 DSO (Dynamic Shared Object) 功 能, 为 以 后 动 态 添 加 moudle 做 准 备 这 里 修 改 了 默 认 安 装 路 径 [root@localhost ~]# cd httpd 2.2.11 [root@localhost httpd 2.2.11]#./configure enable so prefix=/usr/local/apache2 [root@localhost httpd 2.2.11]# make [root@localhost httpd 2.2.11]# make install 这 样 就 安 装 成 功 了 上 面 第 二 行 的 configure 命 令 是 检 查 安 装 环 境, 检 查 通 过 后 会 生 成 一 个 Makefile 文 件, 然 后 使 用 make 命 令 会 根 据 这 个 Makefile 文 件 进 行 编 译, 编 译 完 成 后 执 行 make install 命 令 即 可 安 装 make 命 令 涉 及 了 Linux 编 程 的 知 识, 第 5 章 会 有 介 绍 3.2.2 Apache 的 配 置 默 认 情 况 下 Apache 服 务 是 以 daemon 系 统 用 户 组 的 身 份 运 行 的, 所 以 要 先 将 当 前 用 户 加 入 到 daemon 组 中, 这 样 才 有 权 限 去 使 用 HTTP 服 务 [root@localhost ~]# usermod a G daemon `whoami` 然 后 就 是 Apache 最 重 要 的 配 置 文 件 httpd.conf, 这 个 文 件 默 认 保 存 在 /usr/local/apache2/ conf 下 其 中 的 DocumentRoot 项 为 默 认 网 站 主 目 录, 可 以 通 过 它 修 改 网 站 主 目 录 修 改 后 还 需 要 同 时 替 换 下 面 Directory 项 中 的 /usr/local/apache2/htdocs 为 修 改 后 的 主 目 录, 使 得 Apache 具 有 权 限 去 访 问 该 目 录 ServerName 项 为 服 务 器 名 称 以 及 端 口 号, 如 localhost:80, 可 以 通 过 它 修 改 服 务 器 名 称 默 认 ServerName 项 被 注 释 掉 了, 需 要 把 注 释 去 掉, 否 则 启 动 Apache 时 会 有 警 告 提 示 最 后 通 过 以 下 命 令 启 动 Apache 服 务, 若 将 下 面 命 令 中 的 start 替 换 为 stop, 则 可 以 停 止 运 行 Apache; 替 换 为 restart, 则 可 以 重 启 Apache: 44

LAMP 的 基 本 安 装 与 配 置 第 3 章 [root@localhost ~]# /usr/local/apache2/bin/apachectl start 3.3 MySQL MySQL 代 表 My Structured Query Language, 是 一 种 关 系 型 数 据 库 管 理 系 统 (Relational DataBase Management System,RDBMS), 最 初 由 瑞 典 的 MySQL AB 公 司 开 发,2008 年 MySQL AB 公 司 被 Sun 公 司 收 购, 成 为 Sun 的 子 公 司,Sun 也 因 此 拥 有 了 MySQL 大 部 分 代 码 库 的 版 权 MySQL 的 源 代 码 在 GPLv2 License 的 保 护 下 开 放, 分 为 Community Server 和 Enterprise Server 两 种 版 本,Enterprist Server 会 收 取 一 定 的 费 用 同 Apache 一 样,MySQL 也 是 跨 平 台 的, 甚 至 比 Apache 支 持 的 系 统 还 多, 如 Symbian MySQL 被 许 多 知 名 的 大 网 站 使 用, 如 Google Facebook Flickr Wikipedia YouTube 等, 同 时 由 于 PHP 同 MySQL 的 紧 密 联 系,MySQL + PHP 几 乎 成 为 了 标 准 配 置 3.3.1 MySQL 的 安 装 MySQL 的 安 装 过 程 是 LAMP 中 最 艰 辛 的, 不 仅 步 骤 繁 杂, 而 且 编 译 时 间 长 若 第 一 次 编 译 失 败, 可 以 试 着 再 编 译 一 次, 可 能 就 会 成 功 (1) 下 载 MySQL:http://dev.mysql.com/downloads/, 这 里 用 的 是 5.1.31 版 本 MySQL 的 编 译 稍 微 复 杂 一 些, 而 且 还 需 要 在 编 译 前 先 安 装 一 些 依 赖 的 软 件, 这 里 用 的 是 CentOS 源 里 的 软 件 (2) 通 过 软 件 源 安 装 依 赖 软 件 [root@localhost ~]# yum install gcc c++ libtool ncurses devel 值 得 注 意 的 是,libtool 在 MySQL 官 方 文 档 中 要 求 的 版 本 为 不 低 于 1.5.24, 所 以 安 装 之 前 务 必 先 检 查 一 下 软 件 源 中 的 版 本 是 否 符 合, 命 令 如 下 : [root@localhost ~]# yum info libtool less (3) 建 立 mysql 用 户 (user) 和 组 (group), 专 门 用 于 操 纵 MySQL [root@localhost ~]# groupadd mysql [root@localhost ~]# useradd g mysql mysql (4) 具 体 编 译 安 装 过 程 3 [root@localhost ~]# tar zxvf mysql 5.1.31.tar.gz [root@localhost ~]# cd mysql 5.1.31 [root@localhost mysql 5.1.31]# CFLAGS=" O3" CXX=gcc CXXFLAGS=" O3 \ > felide constructors fno exceptions fno rtti" \ >./configure prefix=/usr/local/mysql \ > enable assembler with mysqld ldflags= all static \ > with charset=utf8 提 示 \ 符 号 使 得 回 车 不 会 执 行 命 令, 而 让 用 户 在 新 的 一 行 继 续 输 入 余 下 的 命 令 别 被 这 行 吓 着, 仔 细 看 一 下 就 会 发 现 就 是 平 时 的./configure 的 加 强 版, 添 加 了 一 些 优 化 编 译 的 参 数 和 对 MySQL 本 身 的 设 置./configure 是 关 键 的 一 步, 如 果 成 功 就 会 看 到 以 下 提 示 : 45

Linux 体 系 结 构 与 程 序 设 计 MySQL has a Web site at http://www.mysql.com/ which carries details on the latest release, upcoming features, and other information to make your work or play with MySQL more productive. There you can also find information about mailing lists for MySQL discussion. Remember to check the platform specific part of the reference manual for hints about installing MySQL on your platform. Also have a look at the files in the Docs directory. Thank you for choosing MySQL! 现 在 可 以 放 心 地 安 装 了 : [root@localhost mysql 5.1.31]# make [root@localhost mysql 5.1.31]# make install 这 样 就 算 安 装 完 毕 了 3.3.2 MySQL 的 配 置 3 在 MySQL 源 码 中 的 support files 子 目 录 中 选 定 一 个 适 合 自 己 运 行 环 境 的 配 置 文 件 作 为 MySQL 配 置 文 件 的 基 础 : [root@localhost mysql 5.1.31]# cp support files/my medium.cnf /etc/my.cnf 现 在 需 要 修 改 MySQL 安 装 目 录 中 的 一 些 权 限 设 置, 将 /usr/local/mysql 目 录 中 所 有 文 件 的 owner 和 group 都 修 改 为 专 门 用 于 操 纵 MySQL 的 用 户 和 组 : 一 行 [root@localhost mysql 5.1.31]# cd /usr/local/mysql [root@localhost mysql]# chown R mysql. [root@localhost mysql]# chgrp R mysql. 然 后 修 改 刚 才 的 配 置 文 件 my.cnf, 注 释 skip federated 这 行, 在 [mysqld] 组 中 添 加 user = mysql 现 在 又 到 了 一 个 关 键 步 骤 初 始 化 MySQL 数 据 库 之 所 以 关 键, 因 为 和 前 面 执 行 configure 命 令 的 步 骤 一 样, 都 是 属 于 会 频 繁 出 错 的 地 方 [root@localhost mysql]# bin/mysql_install_db basedir=/usr/local/mysql user=mysql 很 可 能 会 得 到 找 不 到 某 个 文 件 的 错 误 提 示, 解 决 的 办 法 就 是 重 新 安 装 一 次 如 果 初 始 化 成 功, 则 会 看 到 下 面 的 文 字 : Installing MySQL system tables... OK Filling help tables... OK To start mysqld at boot time you have to copy support files/mysql.server to the right place for your system PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER! To do so, start the server, then issue the following commands: /usr/local/mysql/bin/mysqladmin u root password 'new password' /usr/local/mysql/bin/mysqladmin u root h HOSTNAME password 'new password' Alternatively you can run: /usr/local/mysql/bin/mysql_secure_installation which will also give you the option of removing the test databases and anonymous user created by default. This is strongly recommended for production servers. 46

LAMP 的 基 本 安 装 与 配 置 第 3 章 See the manual for more instructions. You can start the MySQL daemon with: cd /usr/local/mysql ; /usr/local/mysql/bin/mysqld_safe & You can test the MySQL daemon with mysql test run.pl cd /usr/local/mysql/mysql test ; perl mysql test run.pl Please report any problems with the /usr/local/mysql/scripts/mysqlbug script! The latest information about MySQL is available at http://www.mysql.com/ Support MySQL by buying support/licenses from http://shop.mysql.com/ 为 了 安 全 性 的 考 虑, 再 修 改 一 次 权 限 : [root@localhost mysql]# chown R root. [root@localhost mysql]# chown R mysql var 现 在 需 要 验 证 一 下 MySQL 是 否 可 以 正 常 使 用, 先 启 动 MySQL 服 务 器, 再 查 看 它 的 版 本 [root@localhost mysql]# bin/mysqld_safe & [root@localhost mysql]# bin/mysqladmin version 如 果 得 到 类 似 下 面 的 输 出, 则 MySQL 已 经 可 以 正 常 使 用 了 bin/mysqladmin Ver 8.42 Distrib 5.1.31, for pc linux gnu on i686 Copyright 2000 2008 MySQL AB, 2008 Sun Microsystems, Inc. This software comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to modify and redistribute it under the GPL license Server version 5.1.31 log Protocol version 10 Connection Localhost via UNIX socket UNIX socket /tmp/mysql.sock Uptime: 1 min 22 sec Threads: 1 Questions: 1 Slow queries: 0 Opens: 14 Flush tables: 1 Open tables: 8 Queries per second avg: 0.12 现 在 需 要 提 高 一 下 MySQL 的 安 全 性,MySQL 自 带 了 一 个 很 好 用 的 小 工 具, 可 以 通 过 向 导 的 形 式 来 进 行 安 全 的 初 始 化, 只 需 要 回 答 Yes 或 No 即 可, 很 方 便 注 意, 在 进 行 此 操 作 前 必 须 先 启 动 MySQL 启 动 该 工 具 的 命 令 如 下 : [root@localhost mysql]# bin/mysql_secure_installation 除 了 用 刚 才 的 方 法 启 动 MySQL 以 外, 还 有 一 种 方 法 : [root@localhost mysql]# share/mysql/mysql.server start 推 荐 用 这 种 方 法 来 启 动, 这 样 就 和 Apache 的 启 动 方 式 很 相 似 了, 用 起 来 比 较 统 一 3 3.4 PHP PHP 是 一 种 用 来 编 写 动 态 网 页 的 脚 本 语 言, 由 PHP Group 开 发 PHP 是 在 PHP License 保 护 下 发 布 的 自 由 软 件, 同 样 也 是 跨 平 台 软 件 现 在 将 要 安 装 的 是 供 HTTP Server 解 析 PHP 代 码 用 的 3.4.1 PHP 的 安 装 先 下 载 PHP:http://www.php.net/downloads.php, 这 里 用 的 是 5.2.9 版 本 PHP 安 装 较 简 单, 只 是 依 赖 有 点 多 先 安 装 依 赖 软 件 flex libxml2 devel zlib devel autoconf [root@localhost ~]# yum install flex libxml2 devel zlib devel autoconf 其 中 flex 需 要 不 低 于 2.5.4 的 版 本 还 有 一 个 依 赖 是 bison,php 官 方 文 档 里 写 的 版 本 需 求 是 47

Linux 体 系 结 构 与 程 序 设 计 3 1.28(preferred),1.35,or 1.75, 于 是 笔 者 决 定 编 译 1.28 版 下 载 Bison 源 码 :http://www.gnu.org/ software/ bison/ 安 装 过 程 很 简 单 : [root@localhost ~]# tar zxvf bison 1.28.tar.gz [root@localhost ~]# cd bison 1.28 [root@localhost bison 1.28]#./configure prefix=/usr/local [root@localhost bison 1.28]# make [root@localhost bison 1.28]# make install 下 面 是 PHP 的 安 装 : [root@localhost ~]# tar jxvf php 5.2.9.tar.bz2 [root@localhost ~]# cd php 5.2.9 [root@localhost php 5.2.9]#./configure with apxs2=/usr/local/apache2/bin/apxs \ > with mysql=/usr/local/mysql 执 行 configure 成 功 后 会 显 示 : + + License: This software is subject to the PHP License, available in this distribution in the file LICENSE. By continuing this installation process, you are bound by the terms of this license agreement. If you do not agree with the terms of this license, you must abort the installation process at this point. + + Thank you for using PHP. 接 着 是 编 译 : [root@localhost php 5.2.9]# make 成 功 会 显 示 : Build complete. Don't forget to run 'make test'. 然 后 是 安 装 : [root@localhost php 5.2.9]# make install 这 样 就 完 成 了 PHP 的 安 装 3.4.2 PHP 的 配 置 和 MySQL 一 样, 先 把 默 认 的 配 置 文 件 拷 贝 过 去 : [root@localhost php 5.2.9]# cp php.ini dist /usr/local/lib/php.ini 然 后 来 看 Apache 的 配 置 文 件 httpd.conf 检 查 其 中 是 否 有 LoadModule php5_module modules/libphp5.so 这 一 行, 若 没 有, 则 需 要 手 动 添 加, 否 则 不 能 解 析 PHP 文 件 然 后 在 <IfModule mime_module> 语 句 块 中 添 加 以 下 配 置 : AddType application/x httpd php.php.phtml AddType application/x httpd php source.phps 3.5 安 装 测 试 上 述 安 装 操 作 完 成 后, 需 要 进 行 一 个 完 整 的 测 试, 以 检 测 各 个 软 件 是 否 已 经 可 以 正 常 工 作 48

LAMP 的 基 本 安 装 与 配 置 第 3 章 这 个 测 试 的 主 要 内 容 是 写 一 个 可 以 访 问 MySQL 数 据 库 的 PHP 程 序, 将 它 架 设 在 Apache 服 务 器 上 面 ( 即 将 写 好 的 PHP 文 件 放 到 网 站 根 目 录 中 ), 具 体 操 作 如 下 : (1) 新 建 一 个 叫 做 foo.php 的 文 件, 写 入 以 下 内 容 : <?php $link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); if (!$link) { } die('could not connect: '. mysql_error()); echo 'Connected successfully'; mysql_close($link);?> 注 意 将 上 面 代 码 中 的 mysql_user 和 mysql_password 改 成 MySQL 的 实 际 用 户 名 和 对 应 的 密 码 (2) 把 这 个 PHP 文 件 放 到 Apache 默 认 的 网 站 根 目 录 下 : [root@localhost tmp]# mv foo.php /var/www 如 果 以 前 修 改 过 网 站 根 目 录 的 路 径 ( 通 过 Apache 配 置 文 件 修 改 ), 请 相 应 调 整 (3) 打 开 Apache 和 MySQL 的 服 务 器 : [root@localhost tmp]# /usr/local/apache2/bin/apachectl start [root@localhost tmp]# /usr/local/mysql/share/mysql/mysql.server start 现 在 来 实 际 测 试 一 下 刚 才 那 个 PHP 文 件 是 否 可 以 正 常 执 行, 打 开 浏 览 器, 在 地 址 栏 中 输 入 localhost/foo.php, 如 果 安 装 成 功, 并 且 按 照 本 书 所 述 操 作, 浏 览 器 页 面 上 将 会 显 示 如 下 信 息 : Connected successfully 本 章 小 结 LAMP 的 基 本 安 装 与 配 置 就 算 告 一 段 落 了, 不 过 由 于 知 识 有 限, 上 面 的 方 法 也 不 一 定 适 用 于 所 有 环 境, 最 好 还 是 先 看 一 下 官 方 安 装 文 档 和./configure help, 然 后 根 据 自 己 的 环 境 修 改 相 应 的 参 数 3 49

第 4 章 远 程 定 期 自 动 增 量 备 份 4 远 程 定 期 自 动 增 量 备 份 知 识 点 数 据 备 份 shell 脚 本 语 法 基 础 常 用 的 备 份 命 令 一 个 远 程 定 期 自 动 增 量 备 份 的 实 例 对 于 一 个 企 业 来 说, 数 据 就 是 它 的 财 产 而 硬 件 的 损 坏 人 为 的 误 操 作 和 黑 客 侵 入 等 都 会 造 成 数 据 丢 失 或 损 坏, 这 都 是 每 个 企 业 所 需 要 避 免 的, 其 中 最 常 用 的 方 法 就 是 进 行 数 据 备 份 数 据 备 份 一 般 分 为 两 类 : 完 全 备 份 和 部 分 备 份 部 分 备 份 通 常 又 分 为 差 异 备 份 和 增 量 备 份 本 章 首 先 介 绍 shell 脚 本 的 基 本 语 法, 以 便 读 者 理 解 本 章 介 绍 的 自 动 增 量 备 份 实 例 本 章 旨 在 通 过 一 个 适 合 中 小 型 企 业 的 自 动 增 量 备 份 案 例, 让 读 者 了 解 Linux 下 shell 脚 本 的 基 本 语 法 及 其 作 用 因 此 无 论 数 据 备 份 还 是 shell 脚 本 使 用 的 相 关 知 识 都 只 是 浅 尝 辄 止, 若 读 者 想 要 深 入 学 习, 请 参 考 相 关 资 料 4.1 shell 脚 本 的 基 本 语 法 这 里 讲 解 的 只 是 下 面 的 综 合 实 例 中 需 要 用 到 的 一 些 简 单 语 法, 具 体 的 shell 脚 本 编 程 请 参 阅 Mendel Cooper 的 Advanced Bash Scripting Guide 一 书, 该 书 可 以 在 网 址 : http://www.tldp.org/ldp/abs/ html/index.html 上 免 费 阅 读 首 先,shell 脚 本 是 一 个 纯 文 本 文 件, 以 sh 作 为 文 件 的 扩 展 名, 所 以 可 以 在 任 何 编 辑 器 下 完 成 脚 本 的 编 写, 读 者 可 以 通 过 Linux 自 带 的 gedit 或 Vim 编 辑 器 来 编 写 shell 脚 本 提 示 gedit 与 Windows 下 的 记 事 本 操 作 类 似, 而 Vim 的 操 作 将 在 5.2 节 介 绍

远 程 定 期 自 动 增 量 备 份 第 4 章 通 常 shell 脚 本 首 行 代 码 如 下 : #!/bin/bash 这 表 明 了 使 用 哪 个 程 序 来 解 释 这 个 脚 本 可 以 省 略 这 一 行, 但 脚 本 的 运 行 方 式 将 不 同, 下 面 将 会 解 释 如 果 一 行 代 码 的 开 头 是 #, 则 代 表 这 行 是 注 释 在 shell 脚 本 里 可 以 调 用 Linux 下 的 命 令 进 行 批 处 理, 还 可 以 加 上 一 些 变 量 定 义 选 择 或 循 环 结 构 等, 有 了 这 些, 脚 本 程 序 就 会 变 得 很 实 用 可 以 用 等 号 为 一 个 变 量 赋 值,shell 脚 本 里 没 有 变 量 类 型, 所 以 直 接 写 上 变 量 名 即 可, 如 下 面 脚 本 中 的 : filename=`date "+%F"` 这 行 代 码 表 示 将 等 号 右 边 的 值 赋 给 filename 变 量 再 来 看 刚 才 那 句 等 号 的 右 边,date 命 令 两 边 有 ` 这 样 的 符 号 ( 注 意 这 个 符 号 的 按 键 是 在 键 盘 上 Esc 键 的 下 面, 数 字 1 左 边 ) 既 然 是 给 变 量 赋 值, 自 然 等 号 右 边 就 需 要 一 个 值, 这 个 符 号 则 是 执 行 包 含 在 它 中 间 的 命 令 并 将 命 令 的 输 出 作 为 值 的 意 思, " 内 的 内 容 则 表 示 date 命 令 的 参 数, 代 表 date 显 示 的 格 式 整 行 命 令 就 是 执 行 date 命 令 再 赋 值 的 意 思, 至 于 date 执 行 后 的 结 果, 可 参 见 man page 现 在 已 经 给 变 量 赋 了 值 在 变 量 名 前 面 加 上 $ 符 号 就 可 以 调 用 变 量 了, 如 : echo $filename 但 有 时 还 会 遇 到 变 量 与 常 量 组 合 使 用 的 情 况, 如 下 面 一 行 脚 本 : tar T backup_list zcvf ${filename}.bak.tar.gz 变 量 名 最 外 面 需 要 加 花 括 号, 如 果 不 加, 就 会 是 这 样 : tar T backup_list zcvf $filename.bak.tar.gz 这 样 就 会 将 新 建 的 压 缩 文 件 命 名 为 变 量 filename.bak.tar.gz 的 值, 而 显 然 这 里 不 存 在 filename.bak.tar.gz 这 个 变 量, 这 不 是 原 本 想 要 的 结 果 于 是, 为 了 区 分 哪 部 分 是 变 量 名, 哪 部 分 是 常 量 名, 就 需 要 用 花 括 号 将 正 确 的 变 量 名 括 起 来 编 写 完 shell 脚 本 后, 习 惯 添 加 下 面 一 行 命 令 在 最 后, 标 识 脚 本 程 序 退 出 的 状 态 : exit 0 当 然, 这 一 行 不 是 必 需 的 但 就 像 C 语 言 中 习 惯 在 main 函 数 的 最 后 加 上 return 0; 一 样, 写 上 这 样 一 行 是 一 个 很 好 的 习 惯, 同 时 也 可 以 作 为 与 其 他 脚 本 配 合 使 用 的 接 口 全 部 写 完 之 后 就 需 要 执 行 脚 本 了, 这 里 有 两 种 执 行 方 式, 一 种 是 使 用 sh 命 令, 如 果 在 首 行 没 有 添 加 #!/bin/bash 则 使 用 这 种 方 式, 如 : [root@localhost /tmp]# sh auto_backup.sh 另 一 种 方 式 是 先 用 chmod 命 令 给 脚 本 文 件 加 上 可 执 行 权 限, 再 直 接 运 行, 如 : [root@localhost /tmp]# chmod +x auto_backup.sh [root@localhost /tmp]#./auto_backup.sh 4 4.2 数 据 备 份 简 介 作 为 一 个 合 格 的 系 统 管 理 员, 最 基 本 的 工 作 就 是 定 期 备 份 数 据 备 份 可 以 带 来 很 多 好 处, 最 明 51

Linux 体 系 结 构 与 程 序 设 计 显 的 就 是 在 系 统 发 生 某 种 灾 难 之 后 可 以 用 最 低 的 成 本 恢 复 到 以 前 的 状 态 所 以 养 成 定 期 备 份 是 一 个 很 好 的 习 惯 4.2.1 数 据 备 份 设 备 要 了 解 数 据 备 份, 首 先 要 了 解 数 据 备 份 的 存 储 介 质 常 见 的 数 据 备 份 设 备 可 以 是 个 人 计 算 机 常 用 的 可 擦 写 式 光 盘, 也 可 以 是 中 小 型 企 业 很 常 用 的 磁 带 机, 以 及 本 章 将 要 介 绍 的 基 于 FTP 服 务 器 的 远 程 备 份 系 统 4.2.2 数 据 备 份 方 案 4 数 据 备 份 一 般 分 为 两 类 : 完 全 备 份 和 部 分 备 份 部 分 备 份 通 常 又 分 为 差 异 备 份 和 增 量 备 份 对 于 Linux 来 说, 完 全 备 份 就 是 将 根 目 录 / 里 所 有 的 数 据 都 备 份 下 来, 包 括 操 作 系 统 和 所 有 应 用 程 序 生 成 的 数 据 这 适 用 于 刚 刚 开 发 完 成 的 系 统, 因 为 这 时 备 份 的 数 据 是 最 原 始 的, 也 是 最 干 净 的 但 不 能 经 常 执 行, 因 为 如 果 每 天 进 行 这 种 完 全 备 份, 则 在 备 份 数 据 中 会 有 大 量 内 容 是 完 全 重 复 的, 这 些 重 复 的 数 据 占 用 了 大 量 的 空 间, 对 于 中 小 型 系 统 太 耗 资 源, 对 于 用 户 来 说 就 意 味 着 增 加 成 本 增 量 备 份 是 指 每 次 备 份 的 数 据 只 是 相 当 于 上 一 次 备 份 后 增 加 的 和 修 改 过 的 数 据, 注 意 是 相 对 上 一 次 备 份 而 增 加 或 修 改 过 的 数 据 这 种 备 份 的 优 点 很 明 显 : 没 有 重 复 的 备 份 数 据, 节 省 了 资 源, 又 缩 短 了 备 份 时 间 它 的 缺 点 在 于 当 发 生 灾 难 时, 恢 复 数 据 比 较 麻 烦 举 例 来 说, 如 果 系 统 在 星 期 四 的 早 晨 发 生 故 障, 那 么 现 在 就 需 要 将 系 统 恢 复 到 星 期 三 晚 上 的 状 态 这 时, 管 理 员 需 要 找 出 星 期 一 的 完 全 备 份 进 行 系 统 恢 复, 然 后 再 找 出 星 期 二 的 备 份 来 恢 复 星 期 二 的 数 据, 最 后 再 找 出 星 期 三 的 备 份 来 恢 复 星 期 三 的 数 据 很 明 显, 这 比 完 全 备 份 要 麻 烦 得 多 另 外, 在 这 种 备 份 下, 各 个 备 份 单 元 间 的 关 系 就 像 链 子 一 样, 一 环 套 一 环, 其 中 任 何 一 个 单 元 出 了 问 题, 都 会 导 致 整 条 链 子 脱 节 差 异 备 份 是 指 每 次 备 份 的 数 据 是 相 对 于 上 一 次 完 全 备 份 之 后 新 增 加 的 和 修 改 过 的 数 据, 注 意 这 是 相 对 上 一 次 完 全 备 份 之 后 新 增 加 或 修 改 过 的 数 据, 而 并 不 一 定 是 相 对 上 一 次 备 份 管 理 员 先 在 星 期 一 进 行 一 次 系 统 完 全 备 份 ; 然 后 在 接 下 来 的 几 天 里, 再 将 当 天 所 有 与 星 期 一 不 同 的 数 据 ( 增 加 的 或 修 改 的 ) 备 份 到 服 务 器 上 差 异 备 份 无 需 每 天 都 做 系 统 完 全 备 份, 因 此 备 份 所 需 时 间 短, 并 节 省 空 间, 它 的 灾 难 恢 复 也 很 方 便, 系 统 管 理 员 只 需 两 个 备 份, 即 系 统 完 全 备 份 和 发 生 灾 难 前 一 天 的 备 份, 就 可 以 将 系 统 完 全 恢 复 上 述 几 种 备 份 方 案 各 有 优 点, 可 以 根 据 需 要 选 择 合 适 的 方 案 配 合 使 用 4.3 远 程 定 期 自 动 增 量 备 份 在 了 解 了 备 份 的 重 要 性 之 后, 作 为 一 个 合 格 的 系 统 管 理 员, 需 要 学 会 使 用 一 些 聪 明 的 办 法 来 完 成 工 作 那 就 是 系 统 管 理 员 的 另 一 个 利 器 shell 脚 本 本 节 将 会 全 面 讲 解 如 何 实 现 远 程 定 期 自 动 增 量 备 份, 包 括 实 现 定 期 功 能 的 crontab 命 令 实 现 增 量 功 能 的 find 命 令 实 现 压 缩 功 能 的 tar 命 令 和 实 现 远 程 备 份 功 能 的 ftp 命 令 在 本 节 的 最 后, 还 会 实 现 一 个 备 份 脚 本 的 实 例, 以 便 大 家 理 解 52

远 程 定 期 自 动 增 量 备 份 第 4 章 4.3.1 定 期 功 能 crontab 实 现 定 期 功 能 的 原 理 很 简 单, 就 是 调 用 crontab 命 令, 给 系 统 添 加 一 个 需 要 定 期 执 行 的 任 务 而 这 个 任 务 就 可 以 是 执 行 备 份 的 shell 脚 本 完 整 的 命 令 用 法 请 到 2.7.4 节 中 查 看 4.3.2 增 量 功 能 find 增 量 备 份 需 要 先 找 出 最 近 修 改 过 的 文 件, 然 后 只 备 份 这 些 文 件 即 可 这 样 花 在 备 份 上 的 时 间 就 会 缩 短 很 多 目 的 既 然 需 要 查 找 操 作, 那 么 就 需 要 调 用 find 命 令 这 里 可 以 结 合 find 的 一 些 参 数 来 达 到 筛 选 的 [root@localhost /]# find / mtime 0! type d > /tmp/backup_list 2> /dev/null 上 面 的 语 法 很 简 单, mtime 0 找 出 在 当 天 修 改 过 的 所 有 文 件,! type d 指 定 要 找 的 是 非 目 录 文 件, 最 后 把 查 找 结 果 重 定 向 到 /tmp/backup_list 这 个 文 件 中 去 还 可 以 根 据 实 际 情 况 再 进 行 一 些 其 他 处 理 4.3.3 压 缩 功 能 tar 由 于 现 实 的 种 种 因 素, 可 能 不 会 有 足 够 多 的 存 储 空 间 来 存 放 备 份 数 据, 这 时 选 择 压 缩 备 份 会 是 一 个 好 办 法 如 果 备 份 数 据 还 要 通 过 网 络 传 输, 压 缩 就 更 有 必 要 了, 还 可 以 节 约 传 输 时 间 压 缩 的 另 一 个 好 处 是 把 所 有 东 西 都 打 包 到 一 个 文 件 中, 这 样 比 较 便 于 管 理 对 于 tar 的 语 法, 第 2 章 已 经 讲 解 得 很 详 细 了,tar 的 使 用 也 比 较 简 单, 可 以 参 考 本 节 最 后 的 实 例 4.3.4 远 程 备 份 ftp 当 完 成 了 前 面 几 个 步 骤 以 后, 就 已 经 得 到 一 个 打 包 且 压 缩 好 的 文 件, 这 时 需 要 把 这 个 文 件 放 到 远 程 的 某 个 FTP 服 务 器 上 去, 可 以 通 过 ftp 来 完 成 这 个 工 作 使 用 ftp 的 第 一 步 是 登 录, 在 终 端 下 输 入 ftp n 命 令,bash 默 认 的 提 示 符 会 变 为 ftp>, 等 待 用 户 输 入 命 令, 如 下 : 4 [root@localhost tmp]# ftp n ftp> 这 里 的 n 选 项 的 作 用 是 不 从.netrc 文 件 读 取 ftp 的 相 关 配 置,.netrc 文 件 是 用 来 自 动 配 置 ftp 选 项 的, 比 如 需 要 经 常 登 录 到 同 一 个 服 务 器, 使 用 同 一 个 用 户 名 和 密 码, 则 可 以 把 相 应 选 项 写 到.netrc 文 件 里, 这 样 下 次 输 入 ftp 命 令 的 时 候 就 会 自 动 读 取 这 个 配 置 文 件 的 内 容 这 里 为 了 避 免 干 扰, 加 上 了 n 选 项 使 用 open 命 令 来 登 录 远 程 服 务 器, 命 令 名 后 跟 上 服 务 器 的 IP 地 址, 如 果 不 需 要 指 定 端 口 号 保 持 默 认 即 可 ; 如 果 需 要 指 定 端 口 号, 可 以 加 在 后 面, 如 下 : ftp> open 192.168.6.121 6789 这 时 应 该 会 提 示 输 入 用 户 名 和 密 码, 输 入 完 以 后 又 会 回 到 刚 才 的 提 示 符, 可 以 输 入 help 命 令 查 看 可 用 的 命 令 : 53

Linux 体 系 结 构 与 程 序 设 计 ftp> help help 后 面 跟 特 定 的 命 令 来 查 看 该 命 令 的 功 能 : ftp> help ls 输 入 bye 即 退 出 ftp 上 面 简 单 介 绍 了 使 用 ftp 命 令 的 过 程, 但 现 在 需 要 实 现 的 是 自 动 上 传, 则 必 须 把 上 面 的 操 作 指 令 写 到 脚 本 里 面 具 体 操 作 需 要 涉 及 shell 语 法 中 的 Here Documents( 详 情 可 参 见 man bash 的 Here Documents 部 分 ),Here Documents 属 于 第 2 章 讲 过 的 重 定 向 中 的 一 种, 格 式 如 下 : << [delimiter]... [delimiter] 将 上 面 的 [delimiter] 替 换 成 任 何 觉 得 好 听 好 记 的 名 字, 如 GFW FUNNYSHELL 等 上 下 两 个 [delimiter] 必 须 一 致, 作 为 Here Documents 的 边 界 限 定 符, 一 般 使 用 大 写, 这 样 可 以 和 输 入 的 命 令 进 行 区 分 中 间 的 省 略 号 可 以 是 任 何 需 要 实 现 的 操 作, 这 里 需 要 把 刚 才 用 在 ftp 下 的 命 令 都 写 进 去, 这 样 就 可 以 实 现 批 处 理 例 如 : ftp n<< ALIST open 192.168.6.121 6789 user xiaolan 123456 ls bye ALIST 4.3.5 远 程 定 期 自 动 增 量 备 份 综 合 实 例 # 这 里 分 别 是 用 户 名 和 密 码 有 了 前 面 的 基 础, 这 里 就 把 它 们 都 整 合 起 来, 通 过 一 个 shell 脚 本 文 件 来 完 成 #!/bin/bash # 一 个 远 程 定 期 自 动 增 量 备 份 的 综 合 实 例 4 # 找 出 需 要 备 份 的 文 件 find / mtime 0! type d > /tmp/backup_list 2> /dev/null # 压 缩 存 储 备 份 文 件 # 这 里 使 用 date 命 令 来 以 当 天 的 日 期 作 为 压 缩 好 的 文 件 的 文 件 名 cd /tmp # 进 入 备 份 存 储 目 录 filename=`data "+%F"` # 得 到 当 天 日 期 并 赋 值 给 变 量 tar T backup_list zcvf ${filename}.bak.tar.gz # 将 备 份 文 件 传 送 到 远 程 服 务 器 上 存 储 ftp n<< ALIST open 192.168.6.121 6789 user xiaolan 123456 binary # 设 定 以 二 进 制 方 式 传 送 文 件 cd /home/xiaolan/backup # 进 入 远 程 服 务 器 的 备 份 目 录 lcd /tmp # 进 入 当 前 计 算 机 中 存 储 备 份 文 件 的 目 录 put *.bak.tar.gz # 上 传 到 远 程 服 务 器 bye ALIST 54

远 程 定 期 自 动 增 量 备 份 第 4 章 # 删 除 备 份 文 件 rm f ${filename}.bak.tar.gz exit 0 把 这 个 脚 本 取 名 为 auto_backup.sh, 加 上 可 执 行 权 限, 放 到 /usr/local/bin 目 录 中, 然 后 使 用 crontab 命 令 让 系 统 每 周 的 星 期 天 定 期 执 行 auto_backup.sh 使 用 crontab 命 令 后, 在 Vim 中 添 加 如 下 指 令 : # m h dom mon dow command * * * * 0 /usr/local/bin/auto_backup.sh 现 在 只 要 到 了 每 周 的 星 期 天, 系 统 就 会 自 动 运 行 这 个 备 份 脚 本, 将 增 量 备 份 的 文 件 上 传 到 远 程 服 务 器 中 本 章 小 结 crontab 可 以 用 来 定 期 执 行 某 个 命 令,find 可 以 查 找 满 足 相 应 条 件 的 文 件,tar 可 以 将 多 个 文 件 打 包 并 压 缩 到 一 个 文 件 中,ftp 作 为 一 个 客 户 端 可 以 与 服 务 器 间 进 行 FTP 的 通 信 这 里 只 是 简 单 介 绍 了 实 现 备 份 的 一 个 过 程, 其 中 肯 定 会 有 很 多 需 要 根 据 实 际 情 况 修 改 的 地 方, 关 键 就 在 于 对 于 shell 脚 本 的 融 会 贯 通 希 望 读 者 通 过 这 一 shell 入 门 章 节, 对 shell 脚 本 有 一 个 初 步 的 认 识 本 章 对 shell 语 法 只 是 浅 尝 辄 止,shell 脚 本 还 有 很 多 强 大 的 功 能 没 有 介 绍, 希 望 读 者 能 够 在 书 外 深 入 了 解 4 55