源码LAMP环境搭建

时间:2021-07-20 06:42:42

 

主版本:LinuxCentOS 6.8+ httpd-2.4.7 + mysql-5.5.48 + php-7.0.7

完整安装包:lamp.tar.gz

一、准备工作

注意解决依赖关系,推荐使用yum安装,若不能联网可使用安装光盘做为yum源——

  1. 配置yum

cd  /etc/yum.repos.d/

mv CentOS-Base.repo CentOS-Base.repo.bak

 

vim /etc/yum.repos.d/CentOS-Media.repo

[c6-media]

name=CentOS-$releasever - Media

baseurl=file:///media/cdrom   ##光盘挂载点

gpgcheck=0  #表示下载的rpm进行gpg的校验

enabled=1   ##改为1意为启用光盘yum

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

mount /dev/sr0  /media/cdrom 

 

2.安装编译工具(gccgcc-c++

yum -y install gcc*

 

3.关闭RPM包的服务(httpd、mysqld

service httpd stop

service mysqld stop

 

确定rpmhttpdmysqld不开机自启动

chkconfig  --level  2345  httpd  off

chkconfig  --level  2345  mysqld off

 

 

  1. 关闭防火墙SELinux

1)关闭防火墙

清空:iptables  -F

放行80端口:iptables –A INPUT p tcp dport 80 j ACCEPT

2)关闭SELinux

临时关闭: setenforce 0

永久关闭:  sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config 

(修改后需重新启动Linux方可生效)

 

  1. 关闭自启动服务:

执行命令:ntsysv

以下服务保持自启动未列出的服务都可以关闭

atd    

crond          # atdcrond计划任务

irqbalance

microcode_ctl    # 系统irq端口调用,系统服务

network     #网络设置

sendmail   #邮件

sshd      #远程管理

syslog     #系统日志

 

6.上传源码包、解压缩

安装包:lamp.tar.gz

  vim tar.sh    

cd /root/lamp/src/

        /bin/ls *.tar.gz > /usr/local/src/ls.list

file=$(cat /usr/local/src/ls.list)

for TAR in $file

do

        /bin/tar -zvxf $TAR -C /usr/local/src/

done

        /bin/rm -rf /usr/local/src/ls.list

 

7.查看确认磁盘空间

df -h   确认/分区空间大小

 

二、编译安装

1.安装libxml2

Libxml2 是一个xml c语言版的解析器,本来是为Gnome项目开发的工具,是一个基于MIT License的免费开源软件。它除了支持c语言版以外,还支持c++PHPPascalRubyTcl等语言的绑定,能在WindowsLinuxSolarisMacOsX等平台上运行。功能还是相当强大的,相信满足一般用户需求没有任何问题。

libxml是一个用来解析XML文档的函数库。它用C语言写成, 并且能为多种语言所调用,例如C语言C++XSHC#PythonKylix/DelphiRuby,和PHP等。Perl中也可以使用XML::LibXML模块。它最初是为GNOME开发的项目,但现在可以用在各种各样的方面。libXML 代码可移植性非常好,因为它基于标准的ANSI C, 并采用MIT许可证。

 

yum  install  -y  libxml2-devel python-devel ##(依赖包)

cd /usr/local/src/libxml2-2.9.1

./configure --prefix=/usr/local/libxml2/

make && make install

 

  1. 安装libmcrypt

libmcrypt是加密算法扩展库。支持DES, 3DES, RIJNDAEL, Twofish, IDEA, GOST, CAST-256, ARCFOUR, SERPENT, SAFER+等算法。

##需调用gcc-c++编译器,未安装会报错

cd /usr/local/src/libmcrypt-2.5.8

./configure --prefix=/usr/local/libmcrypt/ && make && make install

 

3.安装libmcrypt/libltdl

cd /usr/local/src/libmcrypt-2.5.8/libltdl

./configure --enable-ltdl-install && make && make install

 

 

4.安装mhash

Mhash是基于离散数学原理的不可逆向的php加密方式扩展库,其在默认情况下不开启。mhash的可以用于创建校验数值,消息摘要,消息认证码,以及无需原文的关键信息保存(如密码)等。

cd /usr/local/src/mhash-0.9.9.9

./configure && make && make install

 

5.安装mcrypt

mcrypt php 里面重要的加密支持扩展库Mcrypt库支持20多种加密算法和8种加密模式

cd /usr/local/src/mcrypt-2.6.8

LD_LIBRARY_PATH=/usr/local/libmcrypt/lib:/usr/local/lib \

./configure --with-libmcrypt-prefix=/usr/local/libmcrypt

 

#以上为一条命令LD_LIBRARY_PATH用于指定libmcryptmhash的库的位置。

--with-libmcrypt-prefix用于指定libmcrypt软件位置

make && make install

 

 

6.安装zlib

zlib是提供数据压缩用的函式库,由Jean-loup GaillyMark Adler所开发,初版0.9版在199551日发表。zlib使用DEFLATE算法,最初是为libpng函式库所写的,后来普遍为许多软件所使用。此函式库为*软件,使用zlib授权

cd /usr/local/src/ zlib-1.2.3

./configure

vim Makefile  ##注意修改配置文件在安装(不修改安装apache 会报错)

CFLAGS=-O3 -DUSE_MMAP修改为:CFLAGS=-O3 –DUSE_MMAP fPIC

make &&make install  

 

## 32位操作系统使用此命令

cd /usr/local/src/zlib-1.2.3

./configure 

make 

make install  >>  /root/zlib.log

 zlib指定安装目录可能造成libpng安装失败,故不指定,为卸载方便,建议make install执行结果输出到安装日志文件,便于日后卸载

 

7.安装libpng

libpng 软件包包含 libpng .这些库被其他程式用于解码png图片

 cd /usr/local/src/libpng-1.2.31

 ./configure --prefix=/usr/local/libpng && make &&make install

 

8.安装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   ##(直接复制过去) 

 

yum -y install "libtool*"

cd /usr/local/src/jpeg-6b

cp  /usr/share/libtool/config/config.sub  ./

cp  /usr/share/libtool/config/config.guess  ./

#复制libtool中的文件,覆盖jpeg-6b中的文件(64位中的问题,32位没有此报错)

 

cd /usr/local/src/jpeg-6b

./configure --prefix=/usr/local/jpeg6/ --enable-shared --enable-static

make && make install

## --enable-shared与--enable-static参数分别为建立共享库和静态库使用的libtool

 

9.安装freetype

FreeType库是一个完全免费(开源)的、高质量的且可移植的字体引擎它提供统一的接口来访问多种字体格式文件包括TrueType, OpenType, Type1, CID, CFF, Windows FON/FNT, X11 PCF等。支持单色位图反走样位图的渲染。FreeType库是高度模块化的程序库,虽然它是使用ANSI C开发,但是采用面向对象的思想,因此,FreeType的用户可以灵活地对它进行裁剪。

  cd /usr/local/src/freetype-2.3.5

./configure --prefix=/usr/local/freetype/ && make && make install

 

10.安装Apache

1)解压aprapr-util 

复制并取消版本号/lamp/httpd-2.4.7/srclib/

cp  -a /usr/local/src/apr-1.4.6  /usr/local/src/httpd-2.4.7/srclib/apr

cp  -a /usr/local/src/apr-util-1.4.1  /usr/local/src/httpd-2.4.7/srclib/apr-util

2)安装pcre

cd /usr/local/src/pcre-8.34  

./configure && make && make install

3yum安装 openssl-devel

yum  -y install openssl-devel

4)安装apache

  cd /usr/local/src/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/参数

 

5)启动Apache测试:

/usr/local/apache2/bin/apachectl start

echo "/usr/local/apache2/bin/apachectl start" >> /etc/rc.d/rc.local

ps  aux | grep httpd

netstat -tuln | 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 文件名”即可解决,MySQLApache也可能有类似问题。

浏览器访问:http://Apache服务器IP地址,若显示It works”即表明Apache正常工作

 

11.安装MySQL

 

1.安装ncurses

Ncurses 提供字符终端处理库,包括面板和菜单。它提供了一套控制光标,建立窗口,改变前景背景颜色以及处理鼠标操作的函数。使用户在字符终端下编写应用程序时绕过了那些恼人的底层机制。简而言之,他是一个可以使应用程序直接控制终端屏幕显示的函数库。

yum -y install ncurses-devel

注:如果报错,包找不到,是*通配符没有识别,给文件名加双引号  “ncurses*

源代码编译:

cd /usr/local/src/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 生成共享库

 

2安装cmakebison

mysql在5.5以后,不再使用./configure工具,进行编译安装。而使用cmake工具替

./configure工具。cmake的具体用法参考文档cmake说明。

bison是一个*软件,用于自动生成语法分析器程序,可用于所有常见的操作系统

yum -y install cmake  bison

 

3)安装MySQL

1.创建MySQL系统用户

useradd -r -s /sbin/nologin mysql

#添加用户组mysql ,将mysql用户默认组设置为mysql用户组

2.编译安装

cd /usr/local/src/mysql-5.5.48

cmake  -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \

-DMYSQL_USER=mysql \

-DMYSQL_TCP_PORT=3306 \

-DWITH_XTRADB_STORAGE_ENGINE=1 \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_PARTITION_STORAGE_ENGINE=1 \

-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

-DWITH_MYISAM_STORAGE_ENGINE=1 \

-DWITH_MEMORY_STORAGE_ENGINE=1 \

-DWITH_READLINE=1 \

-DENABLED_LOCAL_INFILE=1 \

-DWITH_EXTRA_CHARSETS=1 \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci \

-DEXTRA_CHARSETS=all \

-DWITH_BIG_TABLES=1 \

-DWITH_DEBUG=0 && 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=mysql   指定mysql运行用户

-DMYSQL_TCP_PORT=3306 指定mysql端口

make clean

rm CMakeCache.txt

#如果报错,清除缓存,请使用以上命令

3.修改配置文件

cd /usr/local/mysql/

chown -R root .    ##mysql数据库的所有者改为root用户

chown -R mysql data   #修改mysql目录权限

cp -a support-files/my-medium.cnf /etc/my.cnf #复制mysql配置文件覆盖

/usr/local/mysql/scripts/mysql_install_db --user=mysql

#创建数据库授权表,初始化数据库

 

 

4.启动MySQL服务、并设置开机自启动

/usr/local/mysql/bin/mysqld_safe --user=mysql &

echo "/usr/local/mysql/bin/mysqld_safe --user=mysql & " >> /etc/rc.d/rc.local

cp -an /usr/local/mysql/support-files/mysql.server  /etc/init.d/mysqld

/etc/init.d/mysqld stop

/etc/init.d/mysqld start

5.设定mysql密码(用户:root  密码:123.com

/usr/local/mysql/bin/mysqladmin -uroot password 123.com

登录mysql数据库查看

ln -s /usr/local/mysql/bin/mysql  /bin

mysql -u root -p

mysql>show databases;

mysql>use test;

mysql>show tables;

mysql>\s #查看字符集是否改为utf8,进入mysql以后用set来改密码

 mysql> exit 

mysql数据库备份和还原

一. 备份数据库

可直接进入后台即可.

yum安装目录:/var/lib/mysql

源码安装目录:/usr/local/mysql/data/  
输入命令:
[root@obj mysql]# mysqldump -u root -p test>/home/bak/2015-09-10/test.sql 
Enter password: 123456

此时,已成功将数据库test备份到/home/bak/2015-9-10目录下的test.sql.

. 还原数据库(: test):

第一种方法.

 先登录数据:mysql -u root -p

  1. 创建test库:create database test;
    [root@obj root]# mysql -u root -p test < /home/bak/2015-09-10/test.sql
    Enter password:123456

2.第二种方法.
先登录mysql数据库,输入命令 mysql -u root -p,输入密码即可.
再使用数据库test, use test; 
导入备份文件. source /home/bak/2015-09-10/test.sql;

这样数据库test的数据就还原成原先备份的数据了.

 

 

 

14.安装PHP

编译前确保系统已经安装了libtoollibtool-ltdl软件包,安装:

1安装依赖,并编译安装

yum -y install "libtool*"

cd /usr/local/src/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

若前面配置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需要连接互联网。PEARPHP扩展与应用库)

make && make install

 

 

 

2)生成php.ini

mkdir /usr/local/php/etc/

cp -a /usr/local/src/php-7.0.7/php.ini-production /usr/local/php/etc/php.ini  

 

3)配置Apache主配置文件,使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源文件进行语法高亮显示

 

4)重启Apache服务

/usr/local/apache2/bin/apachectl restart

* Apache无法启动,提示cannot restore segment prot after reloc: Permission denied错误,为SELinux问题,可关闭SELinux或者执行命令chcon -t texrel_shlib_t /usr/local/apache2/modules/libphp5.so   

 

5)测试

vim /usr/local/apache2/htdocs/test.php    

<?php

phpinfo();

?>

通过浏览器输入地址访问http://Apache服务器地址/test.php

#有时第一次浏览器测试会失败,关闭浏览器重启再尝试即可,非编译错误

http://IP地址/test.php

 

15.安装openssl

OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。

 

yum -y install openssl-devel    #必须安装

cd /usr/local/src/php-7.0.7/ext/openssl

mv config0.m4 config.m4               #否则报错:找不到config.m4

/usr/local/php/bin/phpize

./configure --with-openssl --with-php-config=/usr/local/php/bin/php-config

make && make install

 

16.安装pecl-memcache-php7

 

cd  /usr/local/src/pecl-memcache-php7

/usr/local/php/bin/phpize

./configure --with-php-config=/usr/local/php/bin/php-config

make 

make install

 

修改vim  /usr/local/php/etc/php.ini

搜索extension_dir

 

#取消注释,并修改

extension_dir = "/usr/local/php/lib/php/extensions/no-debug-zts-20151012/"

添加:

extension="openssl.so";

extension="memcache.so";

改完如下图:

 

重启apache服务

usr/local/apache2/bin/apachectl restart

 

 

17.安装Memcache

Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像视频文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。

 

https://github.com/websupport-sk/pecl-memcache/archive/php7.zip

 

 

安装依赖包libevent

yum -y install  "libevent-devel" (需要挂载第二块光盘)

 

cd /usr/local/src/memcached-1.4.17

./configure --prefix=/usr/local/memcache

make && make install

#添加memcache用户,此用户不用登录,不设置密码

useradd  -r -s /sbin/nologin memcache

/usr/local/memcache/bin/memcached -umemcache & 

netstat -an | grep :11211

写入自启动:

echo "/usr/local/memcache/bin/memcached -umemcache & " >> /etc/rc.d/rc.local

 

 

18.安装phpMyAdmin

cp -a /usr/local/src/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

vim config.inc.php

$cfg['Servers'][$i]['auth_type'] = 'http';

复制一行改为http如下图:

 

设置auth_typehttp ,即设置为HTTP身份认证模式

通过浏览器输入地址访问:http://IP地址/phpmyadmin/index.php

数据库用户名:root ,密码:123.com

通过浏览器输入地址访问:http://IP地址/phpmyadmin/index.php

 

 

 

 

 

三、项目迁移

1.php项目拷贝到网站默认目录下: /usr/local/apache2/htdocs/

2.手工建立数据库表结构

 

 

项目一:

Wordpressindex.php

1.上传并解压压缩包:wordpress-4.7.4-zh_CN.zip

2.将目录移动到Apache网页目录下:

mv wordpress  /usr/local/apache2/htdocs/

3.网页登录:http://IP地址/wordpress/index.php

 查看注册信息条件:

数据库名

数据库用户名

数据库密码

数据库主机

数据表前缀

4.网页登录MySQL  http://IP地址/phpmyadmin/index.php

root登录数据库,点击New 新建数据库wordpress

5.创建Apache的运行用户:

useradd -r -s /sbin/nologin www

sed -i "s/User daemon/User www/g" /usr/local/apache2/etc/httpd.conf

sed -i "s/Group daemon/Group www/g" /usr/local/apache2/etc/httpd.conf

/usr/local/apache2/bin/apachectl  restart

6.查看ps aux | grep httpd

7.setfacl -R -m u:www:rwx wordpress/   赋予acl权限

  setfacl -d -m u:www:rwx wordpress/   默认权限

8.网页登录http://IP地址/wordpress/index.php 

开始注册安装

 

 

 

项目二:

Discuz

1.解压:Discuz_X3.3_SC_UTF8.zip

2.mv upload/ /usr/local/apache2/htdocs/bbs

3.192.168.18.114/bbs/install/index.php登录安装

4.cd /usr/local/apache2/htdocs/bbs(切换到目录下赋予部分权限)

  chmod  -R  a+w config/ data/ uc_server/ uc_client/

 返回安装页面继续安装

5.登录MySQL数据库,创建bbs数据库

6.返回安装页面继续安装.