参照正式环境扩展模块来搭建测试环境,否则访问不了 PHP 代码
PDO、PDO_MYSQL、OPENSSL、SSL、CURL等扩展模块
正式环境
Windows Server 2008 R2 X64
Apache+MySQL+PHP+FTP服务
备份MySQL、PHP、APP数据
通过anv软件连接MySQL数据库备份
将 goshop数据库备份,格式为goshop.sql
通过Filezilla软件连接FTP服务,备份PHP及APP数据
正式环境数据备份好后,开始搭建测试环境,将数据上传至测试环境,导入数据
测试环境
阿里云主机Centos 6.5 X64 CPU:1核内存: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出现以下问题,因为缺少pdo、pdo_mysql扩展模块导出访问出错,在编译php时,没有添加—with-pdo-mysql=[MYSQL_DIR] --enable-pdo 这两个参数,所以导致php安装完成后,缺少pdo和pdo_mysql扩展模块
解决办法:
方法一:
在已经编译好的php下添加pdo和pdo_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
原文地址:http://aqiang.blog.51cto.com/6086626/1892207