参照正式环境扩展模块来搭建测试环境,否则访问不了 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-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-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

添加apache开机自动启动


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配置文件是否有误
/etc/init.d/httpd 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)
 
 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)
 p_w_picpathmap_module (shared)
 actions_module (shared)
 speling_module (shared)
 userdir_module (shared)
 alias_module (shared)
 rewrite_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/mysqld restart

加入环境变量

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 –p root123

 

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   --enable-mbstring=all --enable-sockets --enable-exif

如果编译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服务

/etc/init.d/httpd restar


 

 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即可。

/etc/init.d/httpd restart


 

测试:

           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用户

useradd gogouophp
useradd 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/vsftpd start        //启动vsftpd服务
netstat –lnapt |grep vsftpd        //查看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

hash
iconv
json
libxml
mbstring
mcrypt

pcre

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 结合使用