首页 > 代码库 > 正式环境数据迁移到测试环境及测试环境LAMP搭建

正式环境数据迁移到测试环境及测试环境LAMP搭建

参照正式环境扩展模块来搭建测试环境,否则访问不了 PHP 代码

PDO、PDO_MYSQL、OPENSSL、SSL、CURL等扩展模块

 

正式环境

Windows Server 2008 R2 X64

Apache+MySQL+PHP+FTP服务

备份MySQLPHPAPP数据

通过anv软件连接MySQL数据库备份

将 goshop数据库备份,格式为goshop.sql

通过Filezilla软件连接FTP服务,备份PHPAPP数据


正式环境数据备份好后,开始搭建测试环境,将数据上传至测试环境,导入数据

 

测试环境

阿里云主机Centos 6.5 X64 CPU1核内存:2GB 硬盘:40GB

源码编译安装:

Libxml2-2.6.30.tar.gz

Libmcrypt-2.5.8.tar.gz

Zlib-1.2.8.tar.gz

Libpng-1.6.16.tar.gz

Jpegsrc.v9a.tar.gz

Freetype-2.6.3.tar.gz

Autoconf-2.69.tar.gz

Libgd-2.1.0.tar.gz

Apr-1.5.2.tar.gz

Apr-util-1.5.4.tar.gz

Pcre-8.38.tar.gz

Apache-2.2.24.tar.bz2

PHP-5.5.38.tar.gz

二进制安装:

Mysql-5.6.15-linux-glibc2.5-x86_64.tar.gz


LAMP环境搭建步骤:

YUM安装LAMP所需的环境

yum install –y makegcc gcc-c++ zlib-devel libtool libtool-ltdl libtool-ltdl-devel bisonncurses-devel

 

1、  编译安装libxml2

tar –zxf libxml2-2.6.30.tar.gz

cd libxml2-2.6.30

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

make && make install

 

2、  编译安装libmcrypt

tar –zxf libmcrypt-2.5.8.tar.gz

cd libmcrypt-2.5.8

./configure –prefix=/usr/local/libmcrypt

make && make install

 

3、  编译安装zlib

tar –zxf zlib-1.2.8.tar.gz

cd zlib-1.2.8

CFLAGS=”-O3 –fPIC” ./configure –prefix=/usr/local/zlib

make&& make install

 

4、  编译安装libpng

tar –zxf libpng-1.2.31.tar.gz

cd libpng-1.2.31

./configure –prefix=/usr/local/libpng –enable-shared

make && make install

 

5、  编译安装jpeg

tar –zxf jpegsrc.v9a.tar.gz

cd jpegsrc.v9a

mkdir/usr/local/jpeg

mkdir/usr/local/jpeg/bin

mkdir/usr/local/jpeg/lib

mkdir/usr/local/jpeg/include

make/usr/local/jpeg/man/man1 –p

./configure –prefix=/usr/local/jpeg–enable-shared –enable-static

make &&make install


6、  编译安装freetype

tar –zxf freetype-2.6.3.tar.gz

cd freetype-2.6.3

./configure –prefix=/usr/local/freetype –enable-shared

make && make install


7、  编译安装autoconf

tar –zxf autoconf-2.69.tar.gz

cd autoconf-2.69

./configure

make && make install

 

8、  编译安装GD

tar –zxf libgd-2.1.0.tar.gz

cd libgd-2.1.0

./configure –prefix=/usr/local/gd –with-zlib=/usr/local/zlib–with-jpeg=/usr/local/jpeg –with-png=/usr/local/libpng –with-freetype=/usr/local/freetype

make && make install

 

9、  编译安装apr

tar –zxf apr-1.5.2.tar.gz

cd apr-1.5.2.tar.gz

./configure –prefix=/usr/loca/apr

make && make install

 

10、编译安装apr-util

           tar–zxf apr-util-1.5.4.tar.gz

           cd apr-util-1.5.4

           ./configure–prefix=/usr/local/apr-util –with-apr=/usr/local/apr-util

           make&& make install

 

11、编译安装pcre

tar –zxf pcre-8.38.tar.gz

cd pcre-8.38

./configure

make && make install

 

12、编译安装apache

tar –zxf apache-2.2.24.tar.gz

cd apache-2.2.24

./configure --prefix=/usr/local/apache2.2.24 --enable-so --enable-rewrite=shared --enable-cgi --enable-pcre --enable-ssl=shared --enable-mods-shared=all --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/


说明:

--enable-so    #支持动态共享模块,如果没有此功能,php 无法与 apache 一起工作,必须安装

--enable-rewrite    #支持 url 重写

--enable-cgi    #支持 cgi

--enable-pcre    #支持pcre

--enable-ssl    #启用 ssl 功能,不安装无法启用 https

--enable-mods-shared=all    #编译所有模块

--with-apr=/usr/local/apr    #指定apr库文件路径

--with-apr-util=/usr/local/apr-util/    #指定apr-util库文件路径

--with-mpm=worker    #指定apache工作模式

参加后面加上shared开启所有的共享(动态)编译模式,如果不加shared,则为静态编译模式


注意:mpm_开头的就是apache的mp工作模式,2.2版本的httpd默认的mpm工作模式为prefork。除了prefork外,常见的工作模式还有worker以及event。2.4版本的httpd默认是event工作模式。关于这几种工作模式的区别,可以参考一下 http://www.cnblogs.com/fnng/archive/2012/11/20/2779977.html


make && make install

           cp–vRp /usr/local/apache2.2.24/bin/apachectl /etc/init.d/httpd

           vim/etc/init.d/httpd 在第二行后面添加两行注释行

#chkconfig:2345 10 90

#description:Activates Apache Web Server

           chkconfig–add httpd

           chkconfig–level 2345 httpd on

           servicehttpd start

启动apache服务时,提示告警

httpd: Could not reliablydetermine the server‘s fully qualified domain name, using 

localhost.localdomainfor ServerName

 

解决办法:

           vim/usr/local/apache/conf/httpd.config    添加一行

ServerName localhost:80


生成密钥和证书

直接进入到Apache安装目录下的conf目录;

建立三个文件(不然为网站服务器签署证书时候会报错):

mkdir newcerts

echo "01" > serial

touch index.txt

建立服务器密钥:

可以通过 openssl --help    查看命令的帮助

openssl genrsa -des3 1024 > server.key

输入口令:******

确定口令:******

从密钥中删除密码(以避免系统启动后被询问口令):

openssl rsa -in server.key > server2.key

输入server.key口令:******

替换文件:

mv server2.key server.key

建立服务器密钥请求文件:

openssl req -new -key server.key -out server.csr

建立服务器证书:

openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 365


Apache添加SSL支持

打开apache安装目录下conf目录中的httpd.conf文件,找到   
#LoadModule ssl_module modules/mod_ssl.so   
#Include conf/extra/httpd_ssl.conf   
删除行首的配置语句注释符号“#”  

打开apache安装目录下conf/extra目录中的httpd-ssl.conf文件   
在配置文件中查找以下配置语句   
SSLCertificateFile conf/ssl.crt/server.crt         将服务器证书配置到该路径下   
SSLCertificateKeyFile conf/ssl.key/server.key    将服务器证书私钥配置到该路径下


打开apache安装目录下conf/extra目录中的httpd-ssl.conf文件

修改端口 Listen 443

DocumentRoot "/var/www/html"    ssl的访问站点要跟http访问的站点目录要一致,否则https访问失败

打开apache安装目录下conf目录中的httpd.conf文件

DocumentRoot "/var/www/html"

重启服务

           /usr/local/apache/bin/apachectl–t    检查httpd配置文件是否有误

           servicehttpd restart

输入https://ip/网站进行验证,则表示已经支持ssl


注意:证书认证服务器,是需要另行购买的,以上步骤只是创建本地证书服务,只能当测试使用的,访问https会提示无效的证书,但是访问正常。比如:app需要推向苹果商店,一定要购买证书服务器,在linux服务器上指定证书路径,客户端访问就不会提示证书的问题,app才能在苹果商店审核通过,例如访问 https://www.baidu.com  直接就能访问了


执行以下命令,检查apache编译后加载的模块

/usr/local/apache2.2.24/bin/apachectl -M

ssl_mod(shared)    为共享(动态)模块

ssl_mod(static)    为静态模块,不共享

Loaded Modules:

 core_module (static)

 mpm_prefork_module (static)

 http_module (static)

 so_module (static)

 authn_file_module (shared)

 authn_dbm_module (shared)

 authn_anon_module (shared)

 authn_dbd_module (shared)

 authn_default_module (shared)

 authz_host_module (shared)

 authz_groupfile_module (shared)

 authz_user_module (shared)

 authz_dbm_module (shared)

 authz_owner_module (shared)

 authz_default_module (shared)

 auth_basic_module (shared)

 auth_digest_module (shared)

 dbd_module (shared)

 dumpio_module (shared)

 reqtimeout_module (shared)

 ext_filter_module (shared)

 include_module (shared)

 filter_module (shared)

 substitute_module (shared)

 deflate_module (shared)

 log_config_module (shared)

 log_forensic_module (shared)

 logio_module (shared)

 env_module (shared)

 mime_magic_module (shared)

 cern_meta_module (shared)

 expires_module (shared)

 headers_module (shared)

 ident_module (shared)

 usertrack_module (shared)

 unique_id_module (shared)

 setenvif_module (shared)

 version_module (shared)

 ssl_module (shared)

 mime_module (shared)

 dav_module (shared)

 status_module (shared)

 autoindex_module (shared)

 asis_module (shared)

 info_module (shared)

 cgi_module (shared)

 dav_fs_module (shared)

 vhost_alias_module (shared)

 negotiation_module (shared)

 dir_module (shared)

 imagemap_module (shared)

 actions_module (shared)

 speling_module (shared)

 userdir_module (shared)

 alias_module (shared)

 rewrite_module (shared)

 php5_module (shared)

Syntax OK


13、安装mysql

清理系统自带的my.cnf文件,如/etc/my.cnf

rm –rf /etc/my.cnf

           tar–zxf mysql-5.6.15-linux-glibc2.5-x86_64.tar.gz

           mv mysql-5.6.15-linux-glibc2.5-x86_64 /usr/local/mysql

           ls /usr/local/mysql/


bin目录包含客户端工具及mysqld

data目录存放数据库数据文件及日志文件

docs目录包含info格式的用户手册

include目录包含mysql头文件

lib目录包含相关lib

mysql-test目录包含mysql的一些测试脚本文件

scripts目录存放mysql_install_db初始化文件

share目录存放各种支持文件,包括错误信息,语言编码支持,sql安装脚本等。

sqlbench目录存放benchmark脚本

support-file目录存放mysql配置文件模板


安装过程,权限设置

           groupaddmysql

           useradd–r –g mysql mysql

           chown–R mysql.mysql /usr/local/mysql/.

          

初始化

           cd/usr/local/mysql/

           scripts/mysql_install_db–user=mysql

注:运行初始化脚本需在mysql安装目录下执行

 

启动mysql

           chown–R root /usr/local/mysql/.

           chown–R mysql /usr/local/mysql/data/

           cp/usr/local/mysql/my.cnf /etc/my.cnf

           /usr/local/mysql/bin/mysqld_safe–defaluts-file=/etc/my.cnf –user-mysql &

 

加入开机启动

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

           chkconfig–add mysqld

           chkconfig–level 35 mysqld on

           /etc/init.d/mysqldrestart

 

加入环境变量

           echo “export PATH=$PATH:/usr/local/mysql/bin”  >> /etc/profile

           source /etc/profile

 

配置文件my.cnf

 basedir = /usr/local/mysql

 datadir =/usr/local/mysql/data

 port = 3306

 server_id = 1

 socket =/tmp/mysql.sock

 

 innodb_buffer_pool_size = 512M

 

内存使用限制

 performance_schema_max_table_instances=400 

 table_definition_cache=400 

 table_open_cache=256

 

mysql用户root设置密码

           mysqladmin–uroot password ‘root123’                  密码自定义

           mysql–uroot –proot123

 

14、编译安装PHP

tar –zxf php-5.5.38.tar.gz

cd php-5.5.38

./configure –prefix=/usr/local/php --with-apxs2=/usr/local/apache2.2.24/bin/apxs --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-libxml-dir=/usr/lcoa/libxml2 --with-png-dir=/usr/local/libpng --with-jpeg-dir=/usr/local/jpeg --with-freetype-dir=/usr/local/freetype --with-gd=/usr/local/gd --with-mcrypt=/usr/local/libmcrypt --with-config-file-path=/usr/local/php/etc --with-xpm-dir=/usr/lib64 --with-pdo-mysql=/usr/local/mysql --with-mysql-sock=/tmp/mysql.sock --enable-pdo --enable-mbstring=all --enable-sockets --enable-exif --enable-openssl --with-curl=/usr/local/curl --with-php-config=/usr/local/php/bin/php-config 

 

如果编译PHP时提示--with-culr=DIR    --with-php-config=DIR 错误,可以先将此参数去掉,编译好后,使用PHP扩展curl编译安装,请看下面介绍


说明

--with-apxs2:编译共享的apache2.0处理程序的模块

--with-mysqli:指定mysql安装路径,mysqli扩展模块

--with-pdo-mysql:指定mysql安装路径,pdo_mysql扩展模块

--enable-pdo:启动pdo扩展模块

--enable-openssl:启动https扩展模块

--with-curl:指定curl安装路径,PHP配置好修改php.ini配置文件,启动curl扩展模块

 

make

make test            会提示y/n,输入y回车,输入邮箱账号

make install

cp php.ini-development /usr/local/php/etc

 

编辑apache配置文件

           vim/usr/local/apache/conf/httpd.conf

添加

           AddTypeapplication/x-httpd-php .php

           DirectoryIndexindex.html index.php

修改默认路径

DocumentRoot "/usr/local/apache2.2.23/htdocs"

<Directory"/usr/local/apache2.2.23/htdocs">

修改为

DocumentRoot "/var/www/html"

<Directory "/var/www/html">

 

打开php.ini文件

添加两行

extension=pdo.so

extension=pdo_mysql.so

去掉注释的行



将 ;date.timezone =     修改为 date.timezone = UTC

重启apache服务

service httpd restart

 

 PHP扩展curl编译安装

步骤如下: 

1. 进到对应扩展目录 

# cd /usr/local/src/php-5.5.38/ext/curl 

2. 调用phpize程序生成编译配置文件 

# /usr/local/php/bin/phpize 

3. 调用configure生成Makefile文件,然后调用make编译,make install安装 

# ./configure -with-curl=/usr/local/curl -with-php-config=/usr/local/php5/bin/php-config

# make

# make install 

4. 修改php配置文件 

;修改扩展库目录extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/"

;添加curl扩展extension = curl.so 


5. 重启Apache即可。

 

测试:

           mkdir/var/www/html –p

           vim/var/www/html/phpinfo.php

<?php

           phpinfo();

?>

访问http://IP/phpinfo.php       返回结果为PHP页面,正常

访问https://IP/phpinfo.php       返回结果为PHP页面,正常

 

 

 

搭建vsftpd服务,上传备份数据

创建FTP用户

gogouophp

louis

           yum install –y vsftpd

           vim /etc/vsftpd/vsftpd

anonymous_enable=NO

local_enable=YES

write_enable=YES

local_umask=022

anon_upload_enable=NO

anon_mkdir_write_enable=NO

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

chroot_local_user=YES

listen=YES

pam_service_name=vsftpd

userlist_enable=YES

tcp_wrappers=YES

local_root=/var/www/html/

 

           /etc/init.d/vsftpdstart

           netstat–lnapt |grep vsftpd

 

上传备份数据后,将goshop.sql导入到数据库

           mysql –uroot –proot123

创建数据库,指定编码格式,防止编码格式错误,导致访问出现乱码等错误

create database Gogou_data defaultcharacter set utf8 collate utf8_general_ci;

show databases;


授权用户访问数据库

grant all on *.* to ‘gogou‘@‘%‘ identifiedby ‘gogou123‘;

grant all on *.* to ‘gogouophp123‘@‘%‘identified by ‘gogou123‘;

刷新数据库

flush privileges;

 

导入数据库

mysql –uroot –proot123 Gogou_data < /var/www/html/goshop.sql

再次登录mysql查看数据库导入是否正常

mysql –uroot –proot123

use Gogou_data;

show tables;

select count(*) from cart;


数据库导入正常,导入数据完成

 

 

/usr/local/php/bin/php –m          查看php模块

[PHP Modules]

Core

ctype

curl

date

dom

ereg

exif

fileinfo

filter

gd

hash

iconv

json

libxml

mbstring

mcrypt

mysql

mysqli

openssl

pcre

PDO

pdo_mysql

pdo_sqlite

Phar

posix

Reflection

session

SimpleXML

soap

sockets

SPL

sqlite3

standard

tokenizer

xml

xmlreader

xmlwriter

zlib

[Zend Modules]

 

 

遇到的问题

http://IP/gomall/index.php/home/test/testdb出现以下问题,因为缺少pdopdo_mysql扩展模块导出访问出错,在编译php时,没有添加—with-pdo-mysql=[MYSQL_DIR] --enable-pdo 这两个参数,所以导致php安装完成后,缺少pdopdo_mysql扩展模块


解决办法:

方法一:

在已经编译好的php下添加pdopdo_mysql扩展模块

  • 安装pdo

首先查找pdo

find / -name “pdo”

进入pdo目录

    cd /tmp/soft/php-5.5.38/ext/pdo    这是php-5.5.38.tar.gz解压包的路径,而不是已经编译好的php路径

/usr/loca/php/bin/phpize  利用已经编译好的php命令生成编译文件

./configure –with-php-config=/usr/local/php/bin/php-config–enable-pdo=shared

make

make test

make install

 

  • 安装pdo-mysql

wget http://pecl.php.Net/get/PDO_MYSQL-1.0.2.tgz   下载软件

tar–zxf PDO_MYSQL-1.0.2.tgz

cdPDO_MYSQL-1.0.2

/usr/loca/php/bin/phpize  利用已经编译好的php命令生成编译文件

./configure –with-php-config=/usr/local/php/bin/php-config–with-pdo-mysql=/usr/local/mysql

注:

--with-php-config:指定php安装路径

--with-pdo-mysql:指定mysql安装路径

make

make install

 

打开php.ini文件

添加两行

extension=pdo.so

extension=pdo_mysql.so


去掉注释的行

重启apache服务

service httpd restart

 

方法二:

重新编译php,加上—with-pdo-mysql—enable-pdo参数

打开php.ini文件

添加两行

extension=pdo.so

extension=pdo_mysql.so


去掉注释的行

重启apache服务

service httpd restart

 

 

http://IP/gomall/index.php/home/test/testdb

出现访问数据库授权问题


解决办法:

方法一:

登录mysql数据库,给gogou用户授权,允许localhost登录

grant all on *.* to ‘gogou’@’localhost’identified by ‘gogou123’;

 

方法二:

修改config.php脚本文件

vim /var/www/html/gomall/Application/Common/Conf
将gogou用户修改为root用户和密码,因为mysql允许root本地登录

<?php

return array(

        //‘配置项‘=>‘配置值‘

        ‘LOAD_EXT_CONFIG‘   => ‘sms,weixin‘,  

        ‘DB_HOST‘ =>‘localhost‘,        

//      ‘DB_NAME‘ =>‘test‘,

        ‘DB_NAME‘ =>‘Gogou_data‘,  

        ‘DB_USER‘ => ‘root‘,

        ‘DB_PWD‘ =>‘******‘,

        ‘DB_TYPE‘ =>‘mysql‘,

        //‘DB_PARAMS‘ => array(\PDO::ATTR_CASE => \PDO::CASE_NATURAL),//字段区分

大小写

        ‘HOST_NAME‘=>‘http://IP/gomall/‘,//域名

        ‘SCROE_MONEY‘=>0.1,//一个积分抵多少钱,单位元

        //‘URL_MODEL‘   =>3,

);

 

 

 

http://IP/gomall/index.php/home/test/testdb

正常访问代码


 

注意:先确认正式环境的各服务的版本号,PHP扩展模块,再开始搭建测试环境,这样做起来比较轻松,不然就像我这样,缺少这个缺少哪个的,要一个一个去排错。

 

还有个需求没有完成……..

搭建git 服务,要与码云git 结合使用


本文出自 “小杨” 博客,请务必保留此出处http://aqiang.blog.51cto.com/6086626/1892207

正式环境数据迁移到测试环境及测试环境LAMP搭建