一, 准备工作
1, 安装编译工具 gcc,gcc-c++
注意解决依赖关系, 推荐使用 yum 安装, 若不能联网可使用安装光盘做为 yum 源 --
1)编辑 yum 配置文件:
- # mount /dev/sr0 /mnt/cdrom
- # VIM /etc/yum.repos.d/CentOS-Media.repo
- [c6-media]
- name=CentOS-$releasever - Media
- baseurl=file:///mnt/cdrom * 修改为光盘挂载点
- gpgcheck=1
enabled=1 * 改为 1 意为启用
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
2)剪切 / etc/yum.repos.d/CentOS-Base.repo
# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
3)依次安装 gcc,gcc-c++
- # yum -y install gcc
- # yum -y install gcc-c++
2, 关闭系统 RPM 安装包的 Apache,MySQL 的服务
源码包安装的 Apache 必须删除
rm -rf /usr/local/apache2
RPM 包安装的 Apache 可以不删除, 停止即可
关闭启动的服务 httpd,mysqld
- # service httpd stop
- # service mysqld stop
确定 rpm 包安装的 httpd 和 mysqld 不能开机自启动
chkconfig --level 2345 httpd(mysqld) off
3, 关闭 SELinux, 允许防火墙 80 端口访问
1)关闭 SELinux
#VIM /etc/selinux/config
SELINUX=disabled * 若安装时没有禁用 SELinux , 将 enforcing 改为 disabled
修改后需重新启动 Linux 方可生效!
2)关闭防火墙 Netfilter/iptables
因尚未做防火墙讲解, 直接简单的关闭所有防火墙设置:
- # iptables -F * 如果没有禁用防火墙, 默认 80 端口禁止访问
- iptables -Z
- iptables -X
4, 关闭不必要自启动服务
# ntsysv
以下列出服务可保持自启动, 未列出的服务都可以关闭: 只能识别 RPM 包安装的服务
- atd
- crond # atd,crond 计划任务
- irqbalance
- microcode_ctl # 系统 irq 端口调用, 系统服务
- network #网络设置
- sendmail #邮件
- sshd #远程管理
- syslog #系统日志
5, 拷贝源码包, 解包解压缩
建议将 LAMP 环境安装源码包统一存放在一个目录下, 如 / lamp
可编写个批量处理脚本, 一次性把所有. tar.gz 的安装包解包解压缩
- # VIM tar.sh
- #!/bin/bash
- cd /lamp
- ls *.tar.gz> ls.log
- for i in $( cat ls.log )
- do
- tar -zxvf $i
- done
- rm -rf ls.log2
执行 sh tar.sh
多命令顺序执行:
命令 1 && 命令 2: 逻辑与 命令 1 正确执行, 命令 2 才会执行
命令 1 || 命令 2: 逻辑或 命令 1 不正确执行, 命令 2 才会执行
如何确定报错:
1)安装过程停止
2)停止后, 一页界面中出现 error 或者 warning
如何确定安装成功:
进入安装目录, 确认安装程序出现, 就是成功
二, 编译安装
* 每个源码包配置编译安装完成后, 确认安装目录下是否生成安装文件
# 安装 libxml2
Libxml2 是一个 xml c 语言版的解析器, 本来是为 Gnome 项目开发的工具, 是一个基于 MIT License 的免费开源软件. 它除了支持 c 语言版以外, 还支持 c++,PHP,Pascal,Ruby,Tcl 等语言的绑定, 能在 Windows,Linux,Solaris,MacOsX 等平台上运行. 功能还是相当强大的, 相信满足一般用户需求没有任何问题.
libxml 是一个用来解析 http://zh.wikipedia.org/wiki/XML 文档的函数库. 它用 C 语言 http://zh.wikipedia.org/wiki/C语言 写成, 并且能为多种语言所调用, 例如 C 语言 http://zh.wikipedia.org/wiki/C语言 ,C++ http://zh.wikipedia.org/wiki/C++ ,.C# http://zh.wikipedia.org/wiki/C , http://zh.wikipedia.org/wiki/Python , http://zh.wikipedia.org/wiki/Kylix / http://zh.wikipedia.org/wiki/Delphi , http://zh.wikipedia.org/wiki/Ruby , 和 http://zh.wikipedia.org/wiki/PHP 等. http://zh.wikipedia.org/wiki/Perl 中也可以使用 xml::LibXML 模块. 它最初是为 http://zh.wikipedia.org/wiki/GNOME 开发的项目, 但现在可以用在各种各样的方面. libXML 代码可移植性非常好, 因为它基于标准的 ANSI C 库, 并采用 MIT 许可证.
#yum install -y libxml2-devel 如果报错, 安装此包后再尝试安装
yum -y install python-devel 必须安装
- cd /lamp/libxml2-2.9.1
- ./configure --prefix=/usr/local/libxml2/
- make
- make install
- # 安装 libmcrypt
libmcrypt 是加密算法扩展库. 支持 DES, 3DES, RIJNDAEL, Twofish, IDEA, GOST, CAST-256, ARCFOUR, SERPENT, SAFER + 等算法.
- cd /lamp/libmcrypt-2.5.8
- ./configure --prefix=/usr/local/libmcrypt/
- make
- make install
* 需调用 gcc-c++ 编译器, 未安装会报错
- # 安装 libltdl, 也在 libmcrypt 源码目录中, 非新软件
- cd /lamp/libmcrypt-2.5.8/libltdl
- ./configure --enable-ltdl-install
- make
- make install
- # 安装 mhash
Mhash 是基于离散数学 http://baike.baidu.com/view/10467.htm 原理的不可逆向的 PHP 加密方式扩展库, 其在默认情况下不开启. mhash 的可以用于创建校验数值, 消息摘要, 消息认证码, 以及无需原文的关键信息保存 (如密码) 等.
- cd /lamp/mhash-0.9.9.9
- ./configure
- make
- make install
源码包一定要指定安装位置, 因为源码包是没有删除命令的, 要想删除必须手工删除安装目录.
如果不指定安装位置, 一般是由于指定了安装位置, 反而会导致后续软件包报错, 所以被迫不指定安装位置
# 安装 mcrypt
mcrypt 是 PHP 里面重要的加密支持扩展库. Mcrypt 库支持 20 多种加密算法和 8 种加密模式
- cd /lamp/mcrypt-2.6.8
- LD_LIBRARY_PATH=/usr/local/libmcrypt/lib:/usr/local/lib \
- ./configure --with-libmcrypt-prefix=/usr/local/libmcrypt
- # 以上为一条命令. LD_LIBRARY_PATH 用于指定 libmcrypt 和 mhash 的库的位置.
--with-libmcrypt-prefix 用于指定 libmcrypt 软件位置
- make
- make install
- # 安装 zlib
zlib 是提供数据压缩 http://baike.baidu.com/view/286827.htm 用的函式库, 由 Jean-loup Gailly 与 Mark Adler 所开发, 初版 0.9 版在 1995 年 5 月 1 日发表. zlib 使用 DEFLATE 算法, 最初是为 libpng 函式库所写的, 后来普遍为许多软件 http://baike.baidu.com/view/37.htm 所使用. 此函式库为自由软件, 使用 zlib 授权
- cd /lamp/zlib-1.2.3
- ./configure
- make
- make install
* zlib 指定安装目录可能造成 libpng 安装失败, 故不指定, 为卸载方便, 建议 make install 执行结果输出到安装日志文件, 便于日后卸载
# 安装 libpng
libpng 软件包包含 libpng 库. 这些库被其他程式用于解码 PNG 图片
- cd /lamp/libpng-1.2.31
- ./configure --prefix=/usr/local/libpng
- make
- make install
- # 安装 jpeg6
用于解码. jpg 和. jpeg 图片
- mkdir /usr/local/jpeg6
- mkdir /usr/local/jpeg6/bin
- mkdir /usr/local/jpeg6/lib
- mkdir /usr/local/jpeg6/include
- mkdir -p /usr/local/jpeg6/man/man1
- # 目录必须手工建立
- cd /lamp/jpeg-6b
- ./configure --prefix=/usr/local/jpeg6/ --enable-shared --enable-static
- make
- make install
* --enable-shared 与 --enable-static 参数分别为建立共享库和静态库使用的 libtool
# 安装 freetype
FreeType 库是一个完全免费 (开源) 的, 高质量的且可移植的字体引擎, 它提供统一的接口来访问多种字体格式文件, 包括 TrueType, OpenType, Type1, CID, CFF, Windows FON/FNT, X11 PCF 等. 支持单色位图 http://baike.baidu.com/view/56073.htm , 反走样 http://baike.baidu.com/view/1162268.htm 位图的渲染. FreeType 库是高度模块化的程序库 http://baike.baidu.com/view/421066.htm , 虽然它是使用 ANSI C 开发, 但是采用面向对象 http://baike.baidu.com/view/125370.htm 的思想, 因此, FreeType 的用户可以灵活地对它进行裁剪.
- cd /lamp/freetype-2.3.5
- ./configure --prefix=/usr/local/freetype/
- make
- make install
- # 安装 Apache
- configure: error: Bundled APR requested but not found at ./srclib/. Download and unpack the corresponding apr and apr-util packages to ./srclib/.
- # 如果报错, 则:
- tar zxvf apr-1.4.6.tar.gz
tar zxvf apr-util-1.4.1.tar.gz 解压过
- cp -r /lamp/apr-1.4.6 /lamp/httpd-2.4.7/srclib/apr
- cp -r /lamp/apr-util-1.4.1 /lamp/httpd-2.4.7/srclib/apr-util
- # 解压 apr 和 apr-util, 复制并取消版本号
- configure: error: pcre-config for libpcre not found. PCRE is required and available from
- # 如果报错, 则:
- tar zxvf pcre-8.34.tar.gz
- cd /lamp/pcre-8.34
- ./configure && make && make install
- checking whether to enable mod_ssl... configure: error: mod_ssl has been requested but can not be built due to prerequisite failures
- # 如果报错, 则:
- yum install openssl-devel
安装 apache
- cd /lamp/httpd-2.4.7
- ./configure --prefix=/usr/local/apache2/ --sysconfdir=/usr/local/apache2/etc/ --with-included-apr --enable-so --enable-deflate=shared --enable-expires=shared --enable-rewrite=shared
以上是一行
- make
- make install
* 若前面配置 zlib 时没有指定安装目录, Apache 配置时不要添加 --with-z=/usr/local/zlib / 参数
# 如果确定已经安装过的软件包, 还是报错找不到:
1) 软件包版本不符合要求
2) 软件包的安装位置不符合要求
启动 Apache 测试:
- /usr/local/apache2/bin/apachectl start
- ps aux | grep httpd
- netstat -tlun |grep :80
* 若启动时提示 / usr/local/apache2/modules/mod_deflate.so 无权限, 可关闭 SELinux 或者执行命令 chcon -t texrel_shlib_t /usr/local/apache2/modules/mod_deflate.so , 类似此类. so 文件不能载入或没有权限的问题, 都是 SELinux 问题, 使用命令:"chcon -t texrel_shlib_t 文件名" 即可解决, MySQL 和 Apache 也可能有类似问题.
通过浏览器输入地址访问: http://Apache 服务器地址, 若显示 "It works" 即表明 Apache 正常工作
设置 Apache 系统引导时启动:
- echo "/usr/local/apache2/bin/apachectl start">> /etc/rc.d/rc.local
- # 安装 ncurses
Ncurses 提供字符终端处理库, 包括面板和菜单. 它提供了一套控制光标, 建立窗口, 改变前景背景颜色以及处理鼠标操作的函数. 使用户在字符终端下编写应用程序时绕过了那些恼人的底层机制. 简而言之, 他是一个可以使应用程序直接控制终端屏幕显示的函数库.
1,yum -y install ncurses-devel
注: 如果报错, 包找不到, 是 * 通配符没有识别, 给文件名加双引号 "ncurses*"
2, 源代码编译:
- cd /lamp/ncurses-5.9
- ./configure --with-shared --without-debug --without-ada --enable-overwrite
- make
- make install
* 若不安装 ncurses 编译 MySQL 时会报错
* --without-ada 参数为设定不编译为 ada 绑定, 因进入 chroot 环境不能使用 ada ;--enable-overwrite 参数为定义把头文件安装到 / tools/include 下而不是 / tools/include/ncurses 目录
* --with-shared 生成共享库
# 安装 cmake 和 bison
MySQL 在 5.5 以后, 不再使用./configure 工具, 进行编译安装. 而使用 cmake 工具替代了./configure 工具. cmake 的具体用法参考文档 cmake 说明.
bison 是一个自由软件, 用于自动生成语法分析器程序, 可用于所有常见的操作系统
- yum -y install cmake
- yum -y install bison
- # 安装 MySQL
- groupadd MySQL
- useradd -g MySQL MySQL
* 添加用户组 MySQL , 将 MySQL 用户默认组设置为 MySQL 用户组
- cd /lamp/MySQL-5.5.48
- cmake -DCMAKE_INSTALL_PREFIX=/usr/local/MySQL -DMYSQL_UNIX_ADDR=/tmp/MySQL.sock -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_USER=MySQL -DMYSQL_TCP_PORT=3306
-DCMAKE_INSTALL_PREFIX=/usr/local/MySQL 安装位置
-DMYSQL_UNIX_ADDR=/tmp/MySQL.sock 指定 socket(套接字)文件位置
-DEXTRA_CHARSETS=all 扩展字符支持
-DDEFAULT_CHARSET=utf8 默认字符集
-DDEFAULT_COLLATION=utf8_general_ci 默认字符校对
-DWITH_MYISAM_STORAGE_ENGINE=1 安装 myisam 存储引擎
-DWITH_INNOBASE_STORAGE_ENGINE=1 安装 innodb 存储引擎
-DWITH_MEMORY_STORAGE_ENGINE=1 安装 memory 存储引擎
-DWITH_READLINE=1 支持 readline 库
-DENABLED_LOCAL_INFILE=1 启用加载本地数据
-DMYSQL_USER=MySQL 指定 MySQL 运行用户
-DMYSQL_TCP_PORT=3306 指定 MySQL 端口
- make
- make install
- rm CMakeCache.txt
- # 如果报错, 清除缓存, 请使用以上命令
- cd /usr/local/MySQL/
- chown -R root .
- chown -R MySQL data
- # 修改 MySQL 目录权限
- cp support-files/my-medium.cnf /etc/my.cnf
- # 复制 MySQL 配置文件
- /usr/local/MySQL/scripts/mysql_install_db --user=MySQL
- # 创建数据库授权表, 初始化数据库
MySQL 管理员: root
MySQL 结构: 库 --- 表 ----- 数据
MySQL 的 root---》user 表 ---》MySQL 库 ---》/usr/local/MySQL/data
安装目录 \ var\
Linux 的 root 放在 / etc/passwd
启动 MySQL 服务:
1. 用原本源代码的方式去使用和启动 MySQL
- /usr/local/MySQL/bin/mysqld_safe --user=MySQL &
- 181016 00:28:40 mysqld_safe Logging to '/usr/local/mysql/data/localhost.localdomain.err'.
- 181016 00:28:40 mysqld_safe Starting mysqld daemon with databases from /usr/local/MySQL/data
2. 重启以后还要生效:
- VIM /etc/rc.local
- /usr/local/MySQL/bin/mysqld_safe --user=MySQL &
3. 设定 MySQL 密码
/usr/local/MySQL/bin/mysqladmin -uroot password 123
清空历史命令 history -c
* 给 MySQL 用户 root 加密码 123
* 注意密码不能写成 "123"
- /usr/local/MySQL/bin/MySQL -u root -p
- MySQL>show databases;
- MySQL>use test;
- MySQL>show tables;
- MySQL>\s #查看字符集是否改为 utf8
* 进入 MySQL 以后用 set 来改密码
MySQL> exit
* 登录 MySQL 客户端控制台设置指定 root 密码
# 安装 PHP
编译前确保系统已经安装了 libtool 和 libtool-ltdl 软件包, 安装:
- yum -y install "libtool*"
- cd /lamp/PHP-7.0.7
- ./configure --prefix=/usr/local/PHP/ --with-config-file-path=/usr/local/PHP/etc/ --with-apxs2=/usr/local/apache2/bin/apxs --with-libxml-dir=/usr/local/libxml2/ --with-jpeg-dir=/usr/local/jpeg6/ --with-PNG-dir=/usr/local/libpng/ --with-freetype-dir=/usr/local/freetype/ --with-mcrypt=/usr/local/libmcrypt/ --with-mysqli=/usr/local/MySQL/bin/mysql_config --enable-SOAP --enable-mbstring=all --enable-sockets --with-pdo-MySQL=/usr/local/MySQL --with-gd --without-Pear
l 若前面配置 zlib 时没有指定安装目录, PHP 配置时不要添加 --with-zlib-dir=/usr/local/zlib / 参数
选项:
--with-config-file-path=/usr/local/PHP/etc/ 指定配置文件目录
--with-apxs2=/usr/local/apache2/bin/apxs 指定 apache 动态模块位置
--with-libxml-dir=/usr/local/libxml2/ 指定 libxml 位置
--with-jpeg-dir=/usr/local/jpeg6/ 指定 jpeg 位置
--with-PNG-dir=/usr/local/libpng/ 指定 libpng 位置
--with-freetype-dir=/usr/local/freetype/ 指定 freetype 位置
--with-mcrypt=/usr/local/libmcrypt/ 指定 libmcrypt 位置
--with-mysqli=/usr/local/MySQL/bin/mysql_config 指定 mysqli 位置
--with-gd 启用 gd 库
--enable-SOAP 支持 SOAP 服务
--enable-mbstring=all 支持多字节, 字符串
--enable-sockets 支持套接字
--with-pdo-MySQL=/usr/local/MySQL 启用 MySQL 的 pdo 模块支持
--without-Pear 不安装 Pear(安装 Pear 需要连接互联网. Pear 是 PHP 扩展与应用库)
- make
- make install
生成 PHP.INI
- cp /lamp/PHP-7.0.7/PHP.INI-production /usr/local/PHP/etc/PHP.INI
- # mkdir /usr/local/PHP/etc/
测试 Apache 与 PHP 的连通性, 看 Apache 是否能解析 PHP 文件
- VIM /usr/local/apache2/etc/httpd.conf
- AddType application/x-httpd-PHP .PHP .phtml
- AddType application/x-httpd-PHP-source .phps
- (注意大小写)
* .phtml 为将. phps 做为 PHP 源文件进行语法高亮显示
重启 Apache 服务:/usr/local/apache2/bin/apachectl stop
/usr/local/apache2/bin/apachectl start
* Apache 无法启动, 提示 cannot restore segment prot after reloc: Permission denied 错误, 为 SELinux 问题, 可关闭 SELinux 或者执行命令 chcon -t texrel_shlib_t /usr/local/apache2/modules/libphp5.so
测试: VIM /usr/local/apache2/htdocs/test.PHP
- <?PHP
- phpinfo();
- ?>
通过浏览器输入地址访问: http://Apache 服务器地址 / test.PHP
- /usr/local/PHP/bin/phpize
- ./configure --with-openssl --with-PHP-config=/usr/local/PHP/bin/PHP-config
- make
- make install
- VIM /usr/local/PHP/etc/PHP.INI
- extension_dir = "/usr/local/php/lib/php/extensions/no-debug-zts-20151012/"
- # 打开注释, 并修改
- extension="openssl.so";
- # 添加
- # 重启 apache, 在 phpinfo 中可以找到这个模块
- # 安装 phpMyAdmin
- cp -r /lamp/phpMyAdmin-4.1.4-all-languages /usr/local/apache2/htdocs/phpmyadmin
- cd /usr/local/apache2/htdocs/phpmyadmin
- $cfg['Servers'][$i]['auth_type'] = 'cookie';
- $cfg['Servers'][$i]['auth_type'] = 'http';
来源: http://www.bubuko.com/infodetail-2968858.html