参照正式环境扩展模块来搭建测试环境,否则访问不了 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-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出现以下问题,因为缺少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 结合使用