搭建LAMP环境
安装环境:
Red Hat6.4 64位
最小化安装
IP地址:2.2.2.6
一、LAMP环境组成
1、Linux
Linux 是免费开源软件,这意味着源代码可用的操作系统。
2、Apache
Apache 是使用中最受欢迎的一个开放源码的WEB服务器软件。
3、MySQL
MySQL 是多线程、多用户的SQL数据库管理系统。
4、PHP
PHP 是一种编程语言最初设计生产动态网站。PHP 是主要用于服务器端的应用程序软件。Perl 和 Python 类似。
二、LAMP环境安装前准备
1、下载好安装所需要的包并上传到Linux中;
2、确认磁盘空间大小是否足够;
3、挂载光盘,搭建yum源;
4、安装编译工具gcc、gcc-c++;
5、关闭Apache和MySQL服务(安装时如果是最小化安装可省略);
6、关闭不需要的服务,关闭SELinux和防火墙;
7、关闭不需要的服务;
8、拷贝源码包,并解压缩;
9、编译安装;
三、编译安装前准备
1、下载好安装所需要的包并上传到Linux中(有安装包可忽略);
CentOS-Media.repo
下载地址:
http://yunpan.cn/cHVKxVfnqn2vR 访问密码 b875
LAMP
下载安装包:
http://yunpan.cn/cHVsrbBmz23pU 访问密码 457c
上传(Xshell自带上传工具):
2、确认磁盘空间大小是否足够;
3、挂载光盘,搭建yum源;
mkdir /mnt/cdrom
mount /dev/cdrom /mnt/cdrom/
#挂载Red Hat6.4 64位系统光盘
cd /etc/yum.repos.d/
mv rhel-source.repo rhel-source.repo.bak
#让默认的yum源不生效。
#拷贝一个CentOS6 64位的yum包过来,因为Red Hat的yum源是收费的。
vi CentOS-Media.repo
#修改yum源路径如下:
[c6-media]
name=CentOS-$releasever - Media
baseurl=file:///mnt/cdrom/
# file:///media/cdrom/
# file:///media/cdrecorder/
gpgcheck=0
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
yum list
#测试yum 源是否搭建成功
4、安装编译工具gcc、gcc-c++;
yum -y install gcc*
yum -y install make
#由于系统是最小化安装,是没有安装make的。
5、关闭Apache和MySQL服务(安装时如果是最小化安装可省略);
service httpd stop
service mysqld stop
#关闭Apache、和MySQL服务。
chkconfig httpd off
chkconfig mysqld off
#关闭Apache、和MySQL开机自启动。
6、关闭不需要的服务,关闭SELinux和防火墙;
vi /etc/sysconfig/selinux
#修改这个选项,修改这个文件后要重启才会生效。
iptables -F
#关闭防火墙
setenforce 0
7、关闭不必要自启动服务
yum -y install ntsysv
# ntsysv
以下列出服务可保持自启动,未列出的服务都可以关闭:
atd
crond # atd、crond计划任务
irqbalance
microcode_ctl # 系统irq端口调用,系统服务
network #网络设置
sendmail #邮件
sshd #远程管理
syslog #系统日志
#实验情况下此步可免
8、拷贝源码包,并解压缩;
mkdir /mnt/cdrom/
#新建挂载点
mount /dev/cdrom /mnt/cdrom/
#挂载安装包光盘
cp -r /mnt/cdrom/ /tmp/
#安装包拷贝到临时目录里
cd /tmp/lamp/
vi sh.sh
#写一个批量解压缩的工具,这样比较快。
#!/bin/bash
ls *.tar.gz>>tmp.txt
ls *.gz>>tmp.txt
for i in $(cat tmp.txt)
do
tar zxf $i
done
rm -rf tmp.txt
#保存退出
chmod 755 sh.sh
./sh.sh
#执行脚本进行解压缩
以下是所有安装包:
9、如何确定报错:
1)安装过程停止
2)停止后,一页界面中出现error或者warning
如何确定安装成功:
进入安装目录,确认安装程序出现,就是成功
由于系统是最小化安装,很多工具会没有,比如make :
yum -y install make
四、编译安装
注意事项:
源码安装也是有依赖关系的,所以先要安装一些底层的函数库;
安装时按步骤来,如果安装中漏掉了一个安装包,那么最好就是很那个包开始,后面都重新安装;
安装过程写错字母之类的,那么这个包从新装;
安装源码包,在32位系统和64位也是不一样的。
1、安装libxml2
libxml是一个用来解析XML文档的函数库。
yum -y install libxml2-devel
#如果报错,安装下面这个包再重装
yum -y install python-devel
#这个包必须有
cd /tmp/lamp/libxml2-2.9.1
./configure --prefix=/usr/local/libxml2/
make
make install
#这里不是报错,不用管。
2、安装libmcrypt
libmcrypt是加密算法扩展库。
cd ../libmcrypt-2.5.8
./configure --prefix=/usr/local/libmcrypt/
make
make install
# 安装libltdl,也在libmcrypt源码目录中,非新软件
cd ../libmcrypt-2.5.8/libltdl
./configure --enable-ltdl-install
make
make install
3、安装mhash
Mhash是基于离散数学原理的不可逆向的php加密方式扩展库,其在默认情况下不开启。mhash的可以用于创建校验数值,消息摘要,消息认证码,以及无需原文的关键信息保存(如密码)等。
cd ../mhash-0.9.9.9
./configure && make && make install
4、安装mcrypt
mcrypt 是 php 里面重要的加密支持扩展库。Mcrypt库支持20多种加密算法和8种加密模式
cd ../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
#mcrypt没有安装完成,这是php的模块,需要等php安装完成之后,再继续安装
5、安装zlib
zlib是提供数据压缩用的函式库,zlib使用DEFLATE算法,最初是为libpng函式库所写的,后来普遍为许多软件所使用。此函式库为自由软件,使cd .用zlib授权。
cd ../zlib-1.2.3
./configure
make
make install >> /root/zlib.log
vi Makefile
#找到CFL_AGS=-O3 –DUSE_MMAP
#在后面加入 –fPIC 变成 CFLAGS=-O3 –DUSE_MMAP –fPIC
注释:
zlib指定安装目录可能造成libpng安装失败,故不指定,为卸载方便,建议make install执行结果输出到安装日志文件,便于日后卸载。
6、安装libpng
libpng 软件包包含 libpng 库.这些库被其他程式用于解码png图片。
cd ../libpng-1.2.31
./configure --prefix=/usr/local/libpng
make
make install
yum –y install libtool
#这个包必须装
7、安装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 ../jpeg-6b/
./configure --prefix=/usr/local/jpeg6/ --enable-shared --enable-static
make
#报错了,以下处理方法
Chmod –R 777 *
然后进入jpeg-6b的源码目录,然后执行以下步骤,切记!COPY到当前目录注意后面的点(.)
cp /usr/share/libtool/config/config.sub .
cp /usr/share/libtool/config/config.guess .
也就是把 libtool里面的两个配置文件拿来覆盖掉jpeg-6b目录下的对应文件
chmod a+x *
make clean
./configure --prefix=/usr/local/jpeg6/ --enable-shared --enable-static
make
#如果没有报错,则继续下面
make install
* --enable-shared与--enable-static参数分别为建立共享库和静态库使用的libtool
8、安装freetype
FreeType库是一个完全免费(开源)的、高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件,包括TrueType, OpenType, Type1, CID, CFF, Windows FON/FNT, X11 PCF等。支持单色位图、反走样位图的渲染。FreeType库是高度模块化的程序库,虽然它是使用ANSI C开发,但是采用面向对象的思想,因此,FreeType的用户可以灵活地对它进行裁剪。
cd ../freetype-2.3.5
./configure --prefix=/usr/local/freetype/
make
make install
9、安装GD库
GD库,是php处理图形的扩展库,GD库提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片。 在网站上GD库通常用来生成缩略图,或者用来对图片加水印,或者用来生成汉字验证码,或者对网站数据生成报表等。
mkdir /usr/local/gd2
cd ../gd-2.0.35
* png错误,修改方法:
vi gd_png.c
把 #include “png.h” 替换为 #include "/usr/local/libpng/include/png.h"
./configure --prefix=/usr/local/gd2/ --with-jpeg=/usr/local/jpeg6/ --with-freetype=/usr/local/freetype/ --with-png=/usr/local/libpng/
make
make install
注释:
若前面配置zlib时没有指定安装目录,gd配置时不要添加--with-zlib=/usr/local/zlib/参数
10、安装Apache
APR(APACHE可移植运行库)
主要为上层的应用程序提供一个可以跨越多操作系统平台使用的底层支持接口库。
onfigure: error: Bundled APR requested but not found at ./srclib/. Download and unpack the corresponding apr and apr-util packages to ./srclib/.
#如果报错,则:
cd /tmp/lamp
cp -r apr-1.4.6 httpd-2.4.7/srclib/apr
cp -r apr-util-1.4.1 httpd-2.4.7/srclib/apr-util
#解压apr和apr-util,复制并取消版本号
mod_deflate.la 错误1
#如果报错,则:
cd /tmp/lamp/zlib-1.2.3
./configure
vi Makefile
找到 CFLAGS=-O3 -DUSE_MMAP
在后面加入-fPIC,即变成CFLAGS=-O3 -DUSE_MMAP -fPIC
make && make install
#关于这里的报错,其实前面是有安装这个工具的,也试过几次在前面修改,但是都没有用,建议在这里安装Apache前直接先安装。
Pcre基于perl的兼容的正则表达式的支持
configure: error: pcre-config for libpcre not found. PCRE is required and available from
#如果报错,则:
tar zxvf pcre-8.34.tar.gz
cd /tmp/lamp/pcre-8.34
./configure && make && make install
安装apache
cd ../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/参数
启动Apache测试:
/usr/local/apache2/bin/apachectl start
#如果启动时报错
#其实是已经正常启动的,但是每次启动看到不舒服,那么可以这样改:
vi /usr/local/apache2/etc/httpd.conf
查找ServerName,找到80端口,修改前面的名称
通过浏览器输入地址访问:http://2.2.2.6,若显示“It works”即表明Apache正常工作
设置Apache系统引导时启动:
echo "/usr/local/apache2/bin/apachectl start" >> /etc/rc.d/rc.local
注释:
若启动时提示/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也可能有类似问题。
11、安装ncurses
Ncurses 提供字符终端处理库,包括面板和菜单。它提供了一套控制光标,建立窗口,改变前景背景颜色以及处理鼠标操作的函数。使用户在字符终端下编写应用程序时绕过了那些恼人的底层机制。简而言之,他是一个可以使应用程序直接控制终端屏幕显示的函数库。
cd ../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生成共享库
12、安装cmake和bison
mysql在5.5以后,不再使用./configure工具,进行编译安装。而使用cmake工具替代了./configure工具。cmake的具体用法参考文档cmake说明。
bison是一个自由软件,用于自动生成语法分析器程序,可用于所有常见的操作系统
yum -y install cmake
yum -y install bison
13、安装MySQL
useradd leng
cd ../mysql-5.5.23
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=leng -DMYSQL_TCP_PORT=3306
make
make install
-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=leng 指定mysql运行用户
-DMYSQL_TCP_PORT=3306指定mysql端口
注意:
如果报错,清除缓存,请使用以下命令
make clean
rm CMakeCache.txt
make
make install
安装成功后继续执行:
#这条命令后会一直在这里,不要等,直接回车。
设定mysql密码
/usr/local/mysql/bin/mysqladmin -uroot password 123456
清空历史命令 history -c
* 给mysql用户root加密码123456
*注意密码不能写成 “123456”
/usr/local/mysql/bin/mysql -uroot -p
mysql>show databases;
mysql>use test;
mysql>show tables;
mysql>\s#查看字符集是否改为utf8
* 进入mysql以后用set来改密码
mysql> exit
* 登录MySQL客户端控制台设置指定root密码
重启以后还要生效:
vi /etc/rc.local
/usr/local/mysql/bin/mysqld_safe --user=leng
14、安装PHP
编译前确保系统已经安装了libtool和libtool-ltdl软件包,安装:
yum -y install libtool*
vi /usr/local/gd2/include/gd_io.h
cd ../php-5.4.25
./configure --prefix=/usr/local/php/ --with-config-file-path=/usr/local/php/etc/ --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql/ --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-gd=/usr/local/gd2/ --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 --without-pear
注释:若前面配置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-mysql=/usr/local/mysql/指定mysql位置
--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-gd=/usr/local/gd2/指定gd位置
--with-mcrypt=/usr/local/libmcrypt/指定libmcrypt位置
--with-mysqli=/usr/local/mysql/bin/mysql_config指定mysqli位置
--enable-soap支持soap服务
--enable-mbstring=all支持多字节,字符串
--enable-sockets支持套接字
--with-pdo-mysql=/usr/local/mysql启用mysql的pdo模块支持
--without-pear不安装pear(安装pear需要连接互联网。PEAR是PHP扩展与应用库)
#如报错找不到libltdl.so.3的文件
可以执行 ln –s /usr/local/lib/libltd.so.3 /lib/
ln -s /usr/local/lib/libltdl.so.3 /usr/lib
make
#有时候这一步会出现“make test”错误的提示,那是要我们make之前先测试一下,可以跳过,如果不行,重装
#一直卡在这一步几个小时,最后还是不停的make clean ./configure make make install,为此也纠结了半天。
make install
mkdir /usr/local/php/etc
cp ../php-5.4.25/php.ini-production /usr/local/php/etc/php.ini
vi /usr/local/apache2/etc/httpd.conf
#加入下面一行内容
AddType application/x-httpd-php .php .phtml .phps
重启Apache服务:
/usr/local/apache2/bin/apachectl stop
/usr/local/apache2/bin/apachectl start
测试:vi /usr/local/apache2/htdocs/index.php
<?php
phpinfo();
?>
通过浏览器输入地址访问:http://2.2.2.6/index.php
#有时第一次浏览器测试会失败,关闭浏览器重启再尝试即可,非编译错误
测试mysql:
vi /usr/local/apache2/htdocs/mysql.php
<?php
$link=mysql_connect('localhost','root','123456');
if ($link) echo "How are you";
mysql_close();
?>
注意:
Apache无法启动,提示cannot restore segment prot after reloc: Permission denied错误,为SELinux问题,可关闭SELinux或者执行命令。
chcon -t texrel_shlib_t /usr/local/apache2/modules/libphp5.so
15、安装phpMyAdmin
cd ..
#退出php安装目录
cp -r phpMyAdmin-4.1.4-all-languages /usr/local/apache2/htdocs/phpmyadmin
cd /usr/local/apache2/htdocs/phpmyadmin/
cp config.sample.inc.php config.inc.php
中的cookie改为:
#设置auth_type为http ,即设置为HTTP身份认证模式
通过浏览器输入地址访问:http://2.2.2.6/phpmyadmin/index.php
vi /usr/local/apache2/etc/httpd.conf
#进入到配置文件里,查找DirectoryIndex。
#找到这里
#修改成如下
#将index.php这个首页文件名加入进去,如果不加的话,后面要跟文件名,加了就不需要了,如下图:
没加的话,进后台数据库要这样:
加了的话,可以直接这样:
/usr/local/apache2/bin/apachectl stop
/usr/local/apache2/bin/apachectl start
#重启服务,登录网页测试:
#用户名为root ,密码为MySQL设置时指定的root密码(123456)
#新建数据库测试
#退出网页,继续Linux下查看,leng数据库是否建立成功。
/usr/local/mysql/bin/mysql -uroot -p
#数据库建立成功
16、简单架设一个论坛
cd /tmp/lamp/Discuz_7.2
#进入到一个架设好的论坛目录
mv upload/ /usr/local/apache2/htdocs/luntan
#复制到
/usr/local/mysql/bin/mysql -uroot -p
#进入数据库
mysql> create database luntan;
#创建一个数据库名为luntan。
mysql> grant all on luntan.* to leng@'localhost' identified by '123456';
#权限用户leng以123456的密码在本地可以访问luntan数据库下的所有内容。
mysql> exit
#退出数据库
cd /usr/local/apache2/htdocs/luntan
ps aux | grep httpd
#查看网站在Linux下以什么身份运行的。
#那么需要给daemon用户有权限调用luntan的所有资源。
chown -R daemon config.inc.php p_w_uploads/ forumdata/ uc_client/data/cache/ templates/
#授权给daemon用户可以访问以下数据文件和目录。
vi /usr/local/php/etc/php.ini
改为:
/usr/local/apache2/bin/apachectl stop
/usr/local/apache2/bin/apachectl start
#重启服务
进入网页输入:
http://2.2.2.6/luntan/install/
#一个简单的论坛就搭建好了。
用刚才设置的管理员登录试试:
#登录成功,如果想进入后台管理,请进入管理中心,用管理员密码登录。