Linux下最新版php5.6源码安装与apache/nginx集成教程
apache对php的支持是通过apache的mod_php5模块来支持的,这点与nginx不同。nginx是通过第三方的fastcgi处理器才可以对php进行解析。
如果源码编译安装php的话,需要在编译时指定--with-apxs2=/usr/local/apache2/bin/apxs表示告诉编译器通过apache的mod_php5模块来提供对php的解析。
同时php安装的最后一步make install时,我们会看到将动态链接库libphp5.so拷贝到apache2的安装目录的modules目录下,并且还需要在 httpd.conf配置文件中添加LoadModule语句来动态将libphp5.so模块加载进来,从而实现Apache对php的支持。
php与apache集成需要以下几个步骤:
1、安装libiconv库
2、php源码安装
3、配置apache使其支持php
4、测试php
一、安装libiconv库
libiconv库为需要做转换的应用程序提供了一个iconv命令,以实现一个字符编码到另一个字符编码的转换,比如它可以将UTF8编码转换成GB18030编码,反过来也行。
php与apache集成时一定要安装libiconv库,否则在make时系统会报错。报错信息如下:
make: *** [sapi/cli/php] Error 1
/usr/bin/ld: cannot find -liconv
collect2: ld returned 1 exit status
make: *** [sapi/cli/php] Error 1
现在开始正式安装libiconv库,首先下载libiconv库,如下:
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
解压libiconv库,如下:
tar -xf libiconv-1.14.tar.gz
安装libiconv库,首先查看安装帮助信息。如下:
./configure --help
通过上图的帮助,我们可以看到libiconv库默认的安装路径为/usr/local。现在开始安装libiconv库,如下:
./configure --prefix=/usr/local
make && make install
libiconv库安装完毕后,建议把/usr/local/lib库加入到到/etc/ld.so.conf文件中,然后使用/sbin/ldconfig使其生效。如下:
echo "/usr/local/lib">>/etc/ld.so.conf
/sbin/ldconfig
如果没有进行此步操作的话,在安装php执行make install,系统就会报错。报错信息如下:
/root/php-5.6.2/sapi/cli/php: error while loading shared libraries: libiconv.so.2: cannot open shared object file: No such file or directory
二、php源码安装
下载并编译php命令如下:
wget http://mirrors.sohu.com/php/php-5.6.2.tar.gz
./configure --enable-fpm --enable-mbstring --with-mysql=/usr/local/mysql --with-iconv-dir=/usr/local --with-apxs2=/usr/local/apache2/bin/apxs
注意上述命令中--enable-fpm的作用是开启php的fastcgi功能,即开启php-fpm功能。
--with-mysql=/usr/local/mysql是启用php支持mysql的功能,/usr/local/mysql是mysql数据库的安装路径。
--enable- mbstring表示启用mbstring模块mbstring模块的主要作用在于检测和转换编码,提供对应的多字节操作的字符串函数。目前php内部的编码只支持ISO-8859-*、EUC-JP、UTF-8,其他的编码的语言是没办法在php程序上正确显示的,所以我们要启用mbstring模块。
--with-iconv-dir=/usr/local指定php存放libiconv库的位置。
--with-apxs2=/usr/local/apache2/bin/apxs指定php查找apache的位置。
编译完毕后,我们再来make。在make时,我们注意要加上-liconv参数。如果不加上-liconv参数,系统在make编译会报错。报错信息如下:
Generating phar.php
php-5.3.16/sapi/cli/php: error while loading shared libraries: libiconv.so.2: cannot open shared object file: No such file or directory
使用命令如下:
make ZEND_EXTRA_LIBS='-liconv'
我们也可以通过修改Makefile文件,在ZEND_EXTRA_LIBS行加入-liconv。如下:
vi Makefile
make install
通过上图,我们可以很明显的看到apache配置文件httpd中启用php支持,同时也把libphp5.so文件复制到apache的模块目录下。
三、配置apache使其支持php
php安装完毕后,我们就可以通过修改apache的配置文件httpd.conf来使其支持php。
我们只需要在httpd.conf文件中加入如下两行代码:
LoadModule php5_module modules/libphp5.so
AddType application/x-httpd-php .php
注意,其中LoadModule php5_module modules/libphp5.so行,我们查看httpd.conf文件时会发现该行已经存在。那是因为在安装php时,添加的。现在我们只需要添加 AddType application/x-httpd-php .php行即可。
vi /usr/local/apache2/conf/httpd.conf
除此之外,我们还需要修改apache的默认主页文件,添加index.php。内容如下:
echo "">/usr/local/apache2/htdocs/index.php
cat /usr/local/apache2/htdocs/index.php
四、测试php
以上修改完毕后,我们重新启动apache,使用如下命令:
/etc/init.d/httpd graceful
注意该命令可以优雅的重启apache。
打开站点,如下:
通过上图,我们可以很明显的看到apache已经支持php。
LNMP环境中的nginx是不支持php的,需要通过fastcgi来处理有关php的请求。而php需要php-fpm这个组件来支持。
在php5.3.3以前的版本php-fpm是以一个补丁包的形式存在的,而php5.3.3以后的php-fpm只需要在安装php-fpm开启这个功能即可。这个也就是前边,我们再配置php使用到的那个命令--enable-fpm。
php-fpm功能开启后,我们还需要配置php-fpm。其实php-fpm的配置文件在安装php时,已经为我们提供了一个配置文件的模版。该模版为/usr/local/etc/php-fpm.conf.default,如下:
more /usr/local/etc/php-fpm.conf.default
我们现在只需要复制一份该文件,并重命名为php-fpm.conf,如下:
cp /usr/local/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf
为了让php-fpm已服务的形式启动。我们需要复制php安装目录下/sapi/fpm/init.d.php-fpm文件。如下:
cp ./sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
通过上图,我们也可以很清楚的看到php-fpm文件目前没有执行权限。赋予php-fpm执行权限,并启动php-fpm,如下:
chmod a+x /etc/init.d/php-fpm
/etc/init.d/php-fpm start
netstat -tunlp |grep 9000
通过上图,我们可以很明显的看到php-fpm已经正常启动。
注意php-fpm默认监听的是9000端口。
现在再来配置nginx,使其支持php,如下:
location ~ .php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
然后在nginx的网站根目录下新建index.php文件内容如下:
vi /usr/local/nginx/html/index.php
现在来启动nginx,如下:
/usr/local/nginx/sbin/nginx
netstat -tunlp |grep 80
nginx启动完毕后,现在来访问网站,如下:
通过上图,我们可以很明显的看到。php目前已经安装成功,并且也成功的支持mysql数据库。同时也与nginx集成完毕。
至此。我们的php5.6的安装到此结束。
php_imagick是一个可以供PHP调用ImageMagick功能的PHP扩展。使用这个扩展可以使PHP具备和ImageMagick相同的功能,现在我们来看看在Linux下php如何安装imagick。说明:
php安装目录:/usr/local/php5
php.ini配置文件路径:/usr/local/php5/etc/php.ini
Nginx安装目录:/usr/local/nginx
Nginx网站根目录:/usr/local/nginx/html
1、安装编译工具
yum install wget make gcc gcc-c++ gtk+-devel zlib-devel openssl openssl-devel pcre-devel kernel keyutils patch perl
2、安装ImageMagick
系统运维www.osyunwei.com温馨提醒:qihang01原创内容版权所有,转载请注明出处及原文链接
cd /usr/local/src#进入软件包存放目录
wgethttp://www.imagemagick.org/download/ImageMagick.tar.gz#下载ImageMagick
tar zxvf ImageMagick.tar.gz#解压
cd ImageMagick-6.7.9-3#进入安装目录
./configure --prefix=/usr/local/imagemagick#配置
make#编译
make install#安装
export PKG_CONFIG_PATH=/usr/local/imagemagick/lib/pkgconfig/#设置环境变量
3、安装imagick
cd /usr/local/src
wgethttp://pecl.php.net/get/imagick-3.0.1.tgz#下载imagick
tar zxvf imagick-3.0.1.tgz
cd imagick-3.0.1
/usr/local/php5/bin/phpize#用phpize生成configure配置文件
./configure --with-php-config=/usr/local/php5/bin/php-config --with-imagick=/usr/local/imagemagick#配置
make#编译
make install#安装
备注:在安装过程中出现错误,一般是由于缺少编译工具包导致,可根据提示参照第一步安装相应的工具包即可
安装完成之后,出现下面的界面,记住以下路径,后面会用到
Installing shared extensions: /usr/local/php5/lib/php/extensions/no-debug-non-zts-20090626/#imagick模块路径
4、配置php支持imagick
vi /usr/local/php5/etc/php.ini#编辑配置文件,在最后一行添加以下内容
extension="imagick.so"
5、测试
vi /usr/local/nginx/html/phpinfo.php#编辑,输入以下代码
<?php
phpinfo();
?>
wq!#保存退出
vi /usr/local/nginx/html/imagick.php#编辑,输入以下代码
<?php
header('Content-type: image/jpeg');
$image = new Imagick('www.osyunwei.com.jpg');
// If 0 is provided as a width or height parameter,
// aspect ratio is maintained
$image->thumbnailImage(300, 225);
echo $image;
?>
window下的hosts文件
首先找到C:WindowsSystem32driversetc目录下的hosts文件,此文件在当前目录下是无法修改的,所以必须复制出来(到桌面),然后在文件尾部添加上你所需要的站点域名
以hosts文件为例,其本身配置了 127.0.0.1 localhost 前段是表示访问的主机IP,后一段是表示要访问的域名
所以如果需要配置一个www.111cn.net的域名只需要加上 127.0.0.1 www.111cn.即可。
最后我在网上了解到windows下的hosts文件其作用就是‘将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统再会将网址提交DNS域名解析服务器进行IP地址的解析。’应该是类似一个 key-value键值对的方式去解析域名,如果能在本机找到相应IP则访问当前IP。
apche的vhost配置文件
先找到vhost所在目录D:\xampp\apache\conf\extra,自己对应安装的xampp的目录去寻找,找到vhost文件后,打开会看到如下系统配置:
DocumentRoot "D:\xampp\htdocs"
ServerName localhost
ErrorLog "logs/dummy-host2.example.com-error.log"
CustomLog "logs/dummy-host2.example.com-access.log" common
Options Indexes FollowSymLinks Includes ExecCGI
Require all granted
Order allow,deny
Allow from all
AllowOverride AuthConfig
如果你看过很多配置文件的话,相信能一眼就看清楚,因为我们之前配置了windows下的hosts文件的虚拟主机域名为www.test.com所以在vhost文件中应该这样配置:
代码如下 | 复制代码 |
ServerAdmin DocumentRoot "D:\workspace\php\project\public" ServerName local.test.com ErrorLog "logs/dummy-host.example.com-error.log" CustomLog "logs/dummy-host.example.com-access.log" common <Directory "D:\workspace\php\project\public"> Options Indexes FollowSymLinks Includes ExecCGI Require all granted </Directory> <IfModule mod_rewrite.c> <Directory "D:\workspace\php\project"> RewriteEngine on RewriteRule ^$ public/ [L] RewriteRule (.*) public/$1 [L] </Directory> <Directory "D:\workspace\php\project\public"> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L] </Directory> </IfModule> |
可能不同人的Directory 目录配置不一样,一般系统默认是放在D:\xampp\htdocs下,但是为了方便放不同的几个项目,我们一般习惯的把系统默认的访问目录配置到我们的工作目录下,以我的为例:D:/workspace/php/下对应不同的项目目录。
最后如果还是不能访问的话,请检查xampp下的httpd.conf文件中的 Include conf/extra/httpd-vhosts.conf这条语句是否被注释掉,如果被注释掉则去掉注释语句。
本教程总结了windows+php环境下memcache缓存和mongodb数据库安装和配置,还有Mongodb启动关闭。希望对学习memcache和mongodb的同学有所帮助。
mangodb安装
1. 下载mongodb的安装文件,我安装的windows 64位的,下载地址如下:
https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-2.6.6-signed.msi
2. 新建一个mongodb文件夹在E盘(随便放,如E:mongodb)
3. 将下载的安装文件解压,把解压的文件移动到E盘mongodb下
4. 建立mongodb数据存放目录E:mongodbdata
5. 启动mongodb(简单启动不配置服务)
E:mongodbbinmongod.exe --dbpath E:mongodbdata
可以看到如下信息:
说明安装启动成功了。
6. 在浏览器中输入http://localhost:27017/,会出现下面信息,表明mongdb已经启动好了
It looks like you are trying to access MongoDB over HTTP on the native driver port.
7、下载对应的mongodb php插件(不太好找,如果php是5.4-5.5版可用这个地址:http://pan.baidu.com/s/1sjJjsYh)并配置好。
8、在php中使用:
代码如下 | 复制代码 |
try { $mongo = new Mongo('localhost'); } catch(MongoConnectionException $e) { var_dump($e); } $mongo_db = $mongo->selectDB('logdatastorage'); |
注:上面的代码是demo,不可在生产环境中使用。
memcache安装
1、64位下载
From: http://www.urielkatz.com/archive/detail/memcached-64-bit-windows/
下载:http://www.urielkatz.com/projects/memcached-win64/memcached-win64.zip
源码:http://www.urielkatz.com/projects/memcached-win64/memcached-src.rar
2、解压刚刚下载的压缩包,得到两个文件:memcached.exe(服务端主程序)、pthreadGC2.dll
3、以管理员权限运行命令提示符,定位到解压路径,安装Memcached服务,命令:
memcached.exe -d install
4、执行 开始→管理工具→服务 打开Windows服务查看工具,找到memcached服务(没找到证明没有安装成功)
5、启动Memcached:
memcached.exe -m 1024 -d start
-d为守护进程启动,不能指定端口 默认端口11211
-m为指定内存大小
6、配置Windows防火墙,为Memcached默认端口11211 添加入站规则(如果服务端和客户端都在本机,不需要这一步)
7、测试是否可以正常通讯,这里借助Telnet:
telnet 127.0.0.1 11211
如果进入一个空白的doc屏,估计OK了。第一行命令输入是看不见的,所以我一般先敲一次回车,回返回一个Error,没关系,这是说明你输入的是一个无法识别的命令;
接着看下状态,键入stats然后回车:
8、下载对应的memcache php插件(如果php是5.5版可用这个地址:http://pan.baidu.com/s/1mgspf9e)并配置好。
9、在php中连接使用:
$memcache = new Memcache;
$memcache->connect('127.0.0.1', 11211);
Mongodb 安装配置,启动关闭
1. 下载mongodb的安装文件,我安装的windows 32位的,下载地址如下:
http://www.mongodb.org/dr//fastdl.mongodb.org/win32/mongodb-win32-i386-2.6.4.zip/download
2. 新建一个mongodb文件夹在E盘(随便放)
E:mongodb
3. 将下载的文件安装文件解压,把解压的文件移动到E盘mongodb下
4. 建立mongodb数据存放目录E:mongodbdata
5. 启动mongodb(简单启动不配置服务)
E:mongodbbinmongod.exe --dbpath E:mongodbdata
E:mongodbbin>mongod.exe --dbpath E:mongodbdata
2014-09-13T22:18:50.640+0800
2014-09-13T22:18:50.640+0800 warning: 32-bit servers don't have journaling enabled by default. Please use --journal if you want durability.
2014-09-13T22:18:50.640+0800
2014-09-13T22:18:50.765+0800 [initandlisten] MongoDB starting : pid=9204 port=27
017 dbpath=E:mongodbdata 32-bit host=20120621-1418
2014-09-13T22:18:50.765+0800 [initandlisten]
2014-09-13T22:18:50.765+0800 [initandlisten] ** NOTE: This is a 32 bit MongoDB binary.
2014-09-13T22:18:50.765+0800 [initandlisten] ** 32 bit builds are limitedto less than 2GB of data (or less with --journal).
2014-09-13T22:18:50.765+0800 [initandlisten] ** Note that journaling defaults to off for 32 bit and is currently off.
2014-09-13T22:18:50.765+0800 [initandlisten] ** See http://dochub.mongodb.org/core/32bit
2014-09-13T22:18:50.765+0800 [initandlisten]
2014-09-13T22:18:50.765+0800 [initandlisten] ** NOTE: your operating system version does not support the method that MongoDB
2014-09-13T22:18:50.765+0800 [initandlisten] ** uses to detect impending page faults.
2014-09-13T22:18:50.765+0800 [initandlisten] ** This may result in slowerperformance for certain use cases
2014-09-13T22:18:50.765+0800 [initandlisten]
2014-09-13T22:18:50.765+0800 [initandlisten] targetMinOS: Windows XP SP3
2014-09-13T22:18:50.765+0800 [initandlisten] db version v2.6.4
2014-09-13T22:18:50.765+0800 [initandlisten] git version: 3a830be0eb92d772aa855ebb711ac91d658ee910
2014-09-13T22:18:50.765+0800 [initandlisten] build info: windows sys.getwindowsversion(major=6, minor=1, build=7601, platform=2, service_pack='Service Pack 1'BOOST_LIB_VERSION=1_49
2014-09-13T22:18:50.765+0800 [initandlisten] allocator: system
2014-09-13T22:18:50.765+0800 [initandlisten] options: { storage: { dbPath: "E:mongodbdata" } }
在浏览器中输入http://localhost:27017/,会出现表面mongdb已经启动好了
It looks like you are trying to access MongoDB over HTTP on the native driver port.
6. 启动好后连接到mongodb
E:mongodbbinmongo.ext
E:mongodbbin>mongo
MongoDB shell version: 2.6.4
connecting to: test
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
http://docs.mongodb.org/
Questions? Try the support group
http://groups.google.com/group/mongodb-user
Server has startup warnings:
2014-09-13T22:18:50.765+0800 [initandlisten]
2014-09-13T22:18:50.765+0800 [initandlisten] ** NOTE: This is a 32 bit MongoDB binary.
2014-09-13T22:18:50.765+0800 [initandlisten] ** 32 bit builds are limitedto less than 2GB of data (or less with --journal).
2014-09-13T22:18:50.765+0800 [initandlisten] ** Note that journaling defaults to off for 32 bit and is currently off.
2014-09-13T22:18:50.765+0800 [initandlisten] ** See http://dochub.mongodb.org/core/32bit
2014-09-13T22:18:50.765+0800 [initandlisten]
2014-09-13T22:18:50.765+0800 [initandlisten] ** NOTE: your operating system version does not support the method that MongoDB
2014-09-13T22:18:50.765+0800 [initandlisten] ** uses to detect impending page faults.
2014-09-13T22:18:50.765+0800 [initandlisten] ** This may result in slowerperformance for certain use cases
2014-09-13T22:18:50.765+0800 [initandlisten]
>
Mongodb的关闭:
前台运行:
如果没有使用--fork,直接可以前台退出终端关闭。通过这种方式,Mongodb将会自己做清理退出,把没有写好的数据写完成,并最终关闭数据文件。要注意的是这个过程会持续到所有操作都完成。
后台运行:
如果使用--fork在后台运行mongdb服务,那么就要通过向服务器发送shutdownServer()消息来关闭。
1、普通命令:
$ ./mongod
> use admin
> db.shutdownServer()
> db.shutdownServer()
2014-09-13T22:25:07.843+0800 DBClientCursor::init call() failed
server should be down...
2014-09-13T22:25:07.890+0800 trying reconnect to 127.0.0.1:27017 (127.0.0.1) failed
2014-09-13T22:25:08.890+0800 warning: Failed to connect to 127.0.0.1:27017, reas
on: errno:10061由于目标机器积极拒绝,无法连接。
2014-09-13T22:25:08.890+0800 reconnect 127.0.0.1:27017 (127.0.0.1) failed failed
couldn't connect to server 127.0.0.1:27017 (127.0.0.1), connection attempt failed
>
控制台显示如下:
2014-09-13T22:25:07.625+0800 [conn1] terminating, shutdown command received
2014-09-13T22:25:07.625+0800 [conn1] dbexit: shutdown called
2014-09-13T22:25:07.625+0800 [conn1] shutdown: going to close listening sockets.
..
2014-09-13T22:25:07.625+0800 [conn1] closing listening socket: 1632
2014-09-13T22:25:07.625+0800 [conn1] shutdown: going to flush diaglog...
2014-09-13T22:25:07.625+0800 [conn1] shutdown: going to close sockets...
2014-09-13T22:25:07.625+0800 [conn1] shutdown: waiting for fs preallocator...
2014-09-13T22:25:07.625+0800 [conn1] shutdown: closing all files...
2014-09-13T22:25:07.625+0800 [conn1] closeAllFiles() finished
2014-09-13T22:25:07.625+0800 [conn1] shutdown: removing fs lock...
2014-09-13T22:25:07.625+0800 [conn1] dbexit: really exiting now
E:mongodbbin>
关闭成功
Mongodb启动帮助
E:mongodbbin>mongod --help
Options:
General options:
-h [ --help ] show this usage information
--version show version information
-f [ --config ] arg configuration file specifying additional options
-v [ --verbose ] [=arg(=v)] be more verbose (include multiple times for more
verbosity e.g. -vvvvv)
--quiet quieter output
--port arg specify port number - 27017 by default
--bind_ip arg comma separated list of ip addresses to listen on
- all local ips by default
--maxConns arg max number of simultaneous connections - 1000000
by default
--logpath arg log file to send write to instead of stdout - has
to be a file, not directory
--logappend append to logpath instead of over-writing
--timeStampFormat arg Desired format for timestamps in log messages.
One of ctime, iso8601-utc or iso8601-local
--pidfilepath arg full path to pidfile (if not set, no pidfile is
created)
--keyFile arg private key for cluster authentication
--setParameter arg Set a configurable parameter
--httpinterface enable http interface
--clusterAuthMode arg Authentication mode used for cluster
authentication. Alternatives are
(keyFile|sendKeyFile|sendX509|x509)
--auth run with security
--noauth run without security
--ipv6 enable IPv6 support (disabled by default)
--jsonp allow JSONP access via http (has security
implications)
--rest turn on simple rest api
--slowms arg (=100) value of slow for profile and console log
--profile arg 0=off 1=slow, 2=all
--cpu periodically show cpu and iowait utilization
--sysinfo print some diagnostic system information
--dbpath arg directory for datafiles - defaults to datadb
--directoryperdb each database will be stored in a separate
directory
--noIndexBuildRetry don't retry any index builds that were
interrupted by shutdown
--noprealloc disable data file preallocation - will often hurt
performance
--nssize arg (=16) .ns file size (in MB) for new databases
--quota limits each database to a certain number of files
(8 default)
--quotaFiles arg number of files allowed per db, implies --quota
--smallfiles use a smaller default file size
--syncdelay arg (=60) seconds between disk syncs (0=never, but not
recommended)
--upgrade upgrade db if needed
--repair run repair on all dbs
--repairpath arg root directory for repair files - defaults to
dbpath
--noscripting disable scripting engine
--notablescan do not allow table scans
--journal enable journaling
--nojournal disable journaling (journaling is on by default
for 64 bit)
--journalOptions arg journal diagnostic options
--journalCommitInterval arg how often to group/batch commit (ms)
Windows Service Control Manager options:
--install install Windows service
--remove remove Windows service
--reinstall reinstall Windows service (equivalent to --remove
followed by --install)
--serviceName arg Windows service name
--serviceDisplayName arg Windows service display name
--serviceDescription arg Windows service description
--serviceUser arg account for service execution
--servicePassword arg password used to authenticate serviceUser
Replication options:
--oplogSize arg size to use (in MB) for replication op log. default is
5% of disk space (i.e. large is good)
Master/slave options (old; use replica sets instead):
--master master mode
--slave slave mode
--source arg when slave: specify master as <server:port>
--only arg when slave: specify a single database to replicate
--slavedelay arg specify delay (in seconds) to be used when applying
master ops to slave
--autoresync automatically resync if slave data is stale
Replica set options:
--replSet arg arg is <setname>[/<optionalseedhostlist>]
--replIndexPrefetch arg specify index prefetching behavior (if secondary)
[none|_id_only|all]
Sharding options:
--configsvr declare this is a config db of a cluster; default port 27019; default dir /data/configdb
--shardsvr declare this is a shard db of a cluster; default port 27018
下面通过构造一个conf文件进行启动
文件内容如下mongodb.conf
dbpath=E:mongodbdata
logpath=E:mongodblog
logappend=true
bind_ip=127.0.0.1
port=27019
fork=true
master=true
启动:
E:mongodbbin>mongod --config E:mongodbmongodb.conf
2014-09-13T22:39:31.296+0800
2014-09-13T22:39:31.296+0800 warning: 32-bit servers don't have journaling enabl
ed by default. Please use --journal if you want durability.
2014-09-13T22:39:31.296+0800
连接mongodb报错,原因我启动时指定端口号了,不是默认的27017了,所以报错
E:mongodbbin>mongo
MongoDB shell version: 2.6.4
connecting to: test
2014-09-13T22:50:24.296+0800 warning: Failed to connect to 127.0.0.1:27017, rea
on: errno:10061由于目标机器积极拒绝,无法连接。
2014-09-13T22:50:24.312+0800 Error: couldn't connect to server 127.0.0.1:27017
127.0.0.1), connection attempt failed at src/mongo/shell/mongo.js:146
exception: connect failed
指定端口号连接:
E:mongodbbin>mongo 127.0.0.1:27019
MongoDB shell version: 2.6.4
connecting to: 127.0.0.1:27019/test
Server has startup warnings:
2014-09-13T22:50:13.593+0800 [initandlisten]
2014-09-13T22:50:13.593+0800 [initandlisten] ** NOTE: This is a 32 bit MongoDB b
inary.
2014-09-13T22:50:13.593+0800 [initandlisten] ** 32 bit builds are limited
to less than 2GB of data (or less with --journal).
2014-09-13T22:50:13.593+0800 [initandlisten] ** Note that journaling defaults to off for 32 bit and is currently off.
2014-09-13T22:50:13.593+0800 [initandlisten] ** See http://dochub.mongodb.org/core/32bit
2014-09-13T22:50:13.593+0800 [initandlisten]
2014-09-13T22:50:13.593+0800 [initandlisten] ** NOTE: your operating system version does not support the method that MongoDB
2014-09-13T22:50:13.593+0800 [initandlisten] ** uses to detect impending page faults.
2014-09-13T22:50:13.593+0800 [initandlisten] ** This may result in slowerperformance for certain use cases
2014-09-13T22:50:13.593+0800 [initandlisten]
>
方法一,
看到CakePHP文档要求安装pdo_mysql扩展,于是就尝试安装了一下。
这里我的系统是CentOS 6.0。如果你的系统是其他版本的Linux/Unix,可以参考。如果你的系统是Windows的,抱歉,以下内容不适合你,请移步。
首先是下载pdo_mysql扩展的源码包。下载页面在这里:http://pecl.php.net/package/PDO_MYSQL。可以先下载了然后用FTP传到服务器。
我是在复制了下载地址以后使用wget直接下载到服务器端的。
# wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz
然后是解压缩。
# tar -zxvf PDO_MYSQL-1.0.2.tgz
进入解压后的目录,然后执行phpize。
# /usr/local/php/bin/phpize
Configuring for:
PHP Api Version: 20100412
Zend Module Api No: 20100525
Zend Extension Api No: 220100525
下面生成makefile。后面的两个参数必须要添加,一开始我没有添加,结果分别都提示找不到php-config和mysql的header文件。
# ./configure –with-php-config=/usr/local/php/bin/php-config –with-pdo-mysql=/usr/local/mysql
在make之前还要做一个mysql的header文件的软连接。因为mysql安装的时候指定了目录,不做软连接的话,还是找不到header文件。
# ln -s /usr/local/mysql/include/* /usr/local/include/
然后make和make install。
# make
# make install
之后会提示如下,意思是扩展被安装到了如下目录里。
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20100525/
为了方便,我把pdo_mysql.so文件移动到extensions目录下。
# mv /usr/local/php/lib/php/extensions/no-debug-zts-20100525/pdo_mysql.so /usr/local/php/lib/php/extensions/
随后就可以修改php.ini文件了。
找到; extension_dir = “./”这一行,去掉注释,并修改路径。
extension_dir = “/usr/local/php/lib/php/extensions/”
这里经过我测试,发现php只会从该目录寻找扩展so,而并不寻找该目录下的子目录。所以之前我为了统一管理,把so文件都移动到该目录下。
找到; extension=php_pdo_mysql.dll这一行,去掉注释,并修改后面的文件名。
extension=pdo_mysql.so
文件名不太一样,这里要把php_前缀去掉,否则找不到文件。后面的dll是windows下的文件名,我们改成so。
最后重启apache就可以了。用phpinfo()查看发现已经生效了。
方法二
PDO_MYSQL以下操作都在Linux 系统下操作
1、下载 文件 或者 进入 在PHP源码包中进入ext/pdo_mysql
http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz
2、解压文件
tar zxvf PDO_MYSQL-1.0.2.tgz
3、配置和编译文件
cd PDO_MYSQL-1.0.2
/usr/local/php/bin/phpize
./configure –with-php-config=/usr/local/php/bin/php-config –with-pdo-mysql=/usr/local/mysql
make
make install
注: 我的PHP安装在 : /usr/local/php/ mysql 安装在 : /usr/local/mysql 编译的时候注意你自己的安装目录在哪里
3、安装到PHP配置下
把这个记住,然后打开 php.ini文件,
并添加一行
extension=pdo_mysql.so
windows PDO MYSQL扩展安装
php.ini中没有开启pdo,故修改php.ini,将形如下面的代码前面去掉分号,修改后如下:
extension_dir="E:/amp/php/ext" //这里配置为你自己的ext目录路径
......
extension=php_mysql.dll
......
extension=php_pdo.dll
......
extension=php_pdo_mysql.dll
重启apache后访问又继续报以下错误:
CDbConnection 无法开启数据库连线: could not find driver
意思是无法找到数据库驱动,我又用phpinfo看了一下,PDO确实是开启了,但是PDO那一项中支持的数据库显示no value,说明无法加载php_pdo_mysql.dll这个扩展。经过多次尝试,包括更换php的版本,更换mysql的版本。但是均不奏效。难道真的无法开启php的mysql pdo扩展了吗?
在网上查了又查,终于找到解决方案
方法一:需要把php安装目录的路径加入到系统环境变量PATH中,这样就可以解决问题。
方法二:因为我是在服务器上部署的,正在运行着的服务器,所以无法重启,故也可将php安装目录下的libmysql.dll复制到windows目录下
重启apache
相关文章
- 编译安装非常的简单了我们现在的php版本已经到了php7了,下文小编来为各位介绍一篇关于PHP7快速编译安装的步骤,希望文章能够帮助到各位。 一、安装必要一些依赖 yum...2016-11-25
- 这篇文章主要介绍了Rstudio中安装package出现的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-06
- PHP-FPM我们相信各位用高版本的php经常使用到了,下面整理了一些关于PHP-FPM的笔记,有兴趣的可进来看看。 今天赶上了123System OPenVZ VPS全场半价的机会,购入了一...2016-11-25
安装和使用percona-toolkit来辅助操作MySQL的基本教程
一、percona-toolkit简介 percona-toolkit是一组高级命令行工具的集合,用来执行各种通过手工执行非常复杂和麻烦的mysql和系统任务,这些任务包括: 检查master和slave数据的一致性 有效地对记录进行归档 查找重复的索...2015-11-24Linux安装Pytorch1.8GPU(CUDA11.1)的实现
这篇文章主要介绍了Linux安装Pytorch1.8GPU(CUDA11.1)的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-25- 这篇文章主要介绍了vscode安装git及项目开发过程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-05-19
- 这篇文章主要为大家详细介绍了Visual Studio 2015下载和安装图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-22
- 现在我们介绍一种在Node下检查简单错误的JS代码验证工具JSHint。 JSHint的具体介绍参考http://www.jshint.com/about/,说直白点儿,JSHint就是一个检查JS代码规范与否的工具,它可以用来检查任何(包括server端和client端...2014-05-31
Centos中彻底删除Mysql(rpm、yum安装的情况)
我用的centos6,mysql让我整出了各种问题,我想重装一个全新的mysql,yum remove mysql-server mysql之后再install并不能得到一个干净的mysql,原来的/etc/my.cnf依然没变,datadir里面的数据已没有任何变化,手动删除/etc/my.cn...2015-03-15- 这篇文章主要介绍了在PyCharm中安装PaddlePaddle的方法,本文给大家介绍的非常想详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-02-05
Ubuntu20.04安装cuda10.1的步骤(图文教程)
这篇文章主要介绍了Ubuntu20.04安装cuda10.1的步骤(图文教程),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-07-30- 这篇文章主要介绍了linux服务器快速卸载安装node环境(简单上手),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-22
Postman安装与使用详细教程 附postman离线安装包
这篇文章主要介绍了Postman安装与使用详细教程 附postman离线安装包,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-03-05- 这篇文章主要介绍了uni-app从安装到卸载的入门教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-05-15
- 这篇文章主要介绍了vs2019安装和使用详细图文教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-06-25
- 一、准备编译环境,安装所需依赖包yum groupinstall 'Development' -y yum install openssl openssl-devel zlib zlib-devel -y yum install readline-devel pcre-devel ncurses-devel bison-devel cmake -y二、编译安...2015-10-21
tomcat9 下载安装和配置+整合到eclipse的教程详解
这篇文章主要介绍了tomcat9 下载安装和配置+整合到eclipse,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-07-28Apache启动报错No space left on device: AH00023该怎么解决
Apache启动报错No space left on device: AH00023错误可能是进程导致了,虽然小编不知道什么原因但网上提供的解决办法确实是可以解决我们的问题,下面来看看。对于这类错误是因为linux系统的ipc信号量造成的,apache启动时...2015-10-21- 本教程共分八篇:系统安装与设置篇、软件安装与设置篇、文件及文件夹权限篇、系统服务篇、安全策略篇、系统组件篇、注册表篇、软件安全篇。本篇讨论的是第二篇软件安装与设置篇的第七部分:安装软件之PHP 5 安装图解。 ...2016-01-27
mac系统OS X10.10版本安装最新5.7.9mysql的方法
用过mac的朋友都反映很好用,不仅美观,性能好,关键是他的系统底层对于开发人员来说,无疑就是一个最大的好处,用习惯linux的人就知道mac的强大。但是也有一点最蛋疼的是,mac的习惯跟windows两个概念,习惯了windows,难免会有点不...2015-10-30