ホームページ  >  記事  >  バックエンド開発  >  phpとmemcacheのLinuxインストール手順記録

phpとmemcacheのLinuxインストール手順記録

WBOY
WBOYオリジナル
2016-06-23 13:51:011314ブラウズ

インストール環境はUbuntu13.10バージョンi386です。nginxサーバーとmysqlサーバーがインストールされています。現在のタスクはphpとmemcacheをインストールすることです。余計なことは言わずに本題に入りましょう。

1. PHP のインストールとエラーのトラブルシューティング

PHP をインストールする前に多くのライブラリ ファイルをインストールする必要があるため、忍耐強く特定の順序でインストールする必要があります。次の順序でインストールしました:

zlib -> freetype -> libxml2 -> libpng -> libgd2 -> libmcrypt

zlib、freetype、libpng(libjpeg) も必要です。などがあるため、最初にこれらをインストールしてから gd2 をインストールする必要があります。ここでのインストールは、一般的なディレクトリに従って /usr/local/xxx ディレクトリに設定されます。通常、freetype のインストール時に問題が発生する可能性があります。ここで記録しておきたいのは、エラーがなかったことです。 GD2 をインストールすると、インストールは成功しました。しかし、後からphpをインストールすると、構成でGD2のインストールディレクトリを設定した後、エラーが発生しました。configureでは問題ありませんでしたが、phpのインストール時にconfigureに時間がかかることを知っておく必要があります。それは正しいです、それはまた長い間待った後、突然コンパイルエラーを言いました、それは本当に少しクラッシュしました。エラーは次のとおりです:

注意,安装freetype时有可能提示如下错误: either set the LIBPNG_CFLAGS and LIBPNG_LDFLAGS environment variables 这是提示找不到libpng的安装位置,所以需要将libpng的bin目录配置到环境变量中:解决方法:编辑:vi /etc/profileLIB_PNG=/usr/local/libpng/binPATH=$LIB_PNG:$PATH  export PATH 生效:.  /etc/profile
の説明: これは、libXpm ライブラリがインストールされておらず、gd2 ライブラリのインストール時に開くように構成されていないことを示すプロンプトです。

このように、gd2 の以前の設定とインストールを確認したところ、次のように libXpm ライブラリがサポートされていないことがわかりました:

/usr/local/src/php-5.5.6/ext/gd/gd.c:57:22: error: X11/xpm.h: No such file or directorymake: *** [ext/gd/gd.lo] Error 1

そこで、解決策は libXpm ライブラリをダウンロードしてインストールすることです:

** Configuration summary for libgd 2.1.0:   Support for Zlib:                 yes   Support for PNG library:          yes   Support for JPEG library:         no   Support for VPX library:          no   Support for TIFF library:         no   Support for Freetype 2.x library: yes   Support for Fontconfig library:   no   Support for Xpm library:          no   Support for pthreads:             yes
このようにインストールしたら、大丈夫だと思ったので、gd2 ライブラリを再インストールし、gd2 の設定時に --with-xpm=/usr/lib という行を追加しました。

しかし、設定するときに、xpm ライブラリが見つからないというメッセージが表示されます。ここでは、次のように、/usr/lib に実際の xpm ライブラリ ファイルへのソフト リンク ファイルを作成します。

操作 完了したら、gd2 ライブラリを再インストールできます。設定は正常に完了しました。


「Xpm ライブラリのサポート: はい」という項目が表示され、設定が成功したことを示し、make && make を実行します。 install で gd2 ライブラリのインストールを完了できます。

すべてのライブラリ ファイルをインストールした後、PHP インストールを構成できます。以前は構成が成功していましたが、コンパイル エラーが発生したため、今回は構成に --with-xpm-dir=/usr/lib/ を追加する必要があります。コンパイルに成功します。完全な設定は次のとおりです。

sudo apt-get install libXpm-dev
設定、make、make install を実行すると、php のインストールを完了できます。次に、


ln -s /usr/lib/ (x86_64 or i386 ) /libXpm.a  /usr/lib/libXpm.a ln -s /usr/lib/ (x86_64 or i386 ) /libXpm.so  /usr/lib/libXpm.so ln -s /usr/lib/ (x86_64 or i386 ) /libXpm.so.4  /usr/lib/libXpm.so.4 ln -s /usr/lib/ (x86_64 or i386 ) /libXpm.so.4.11  /usr/lib/libXpm.so.4.11
を使用して php-fpm サービスを開始します。このコマンドを自己開始サービスとして /etc/rc.local ファイルに追加できます。

nginx 設定ファイルに php のサポートを追加すると、php を使用して開発できるようになります。

2. memcache のインストールとエラー処理

Memcache はサーバーサイドと php エクステンションに分かれており、サーバーサイドはすべてのデータの保存や削除などの管理を行うための PHP 用の拡張ライブラリです。 memcache を使用します。 Use memcache システムの memcache サービスの呼び出しとアクセスに、PHP で直接新しい Memcache を使用することを示します。

(1) まず、サーバーをインストールする必要があります。ubuntu のデフォルトのインストールを直接使用できます:

 ./configure \    --prefix=/usr/local/php5.5 \      --with-libxml-dir=/usr/local/libxml2/ \    --with-png-dir=/usr/local/libpng/ \    --with-freetype-dir=/usr/local/freetype/ \    --with-gd=/usr/local/gd2/ \    --with-zlib-dir=/usr/local/zlib/ \    --with-mcrypt=/usr/local/libmcrypt/ \    --with-xpm-dir=/usr/lib/ \    --with-mysql \    --with-mysqli \    --enable-pdo \    --with-pdo-mysql \     --with-iconv \   --enable-soap \    --enable-mbstring=all \    --enable-sockets \  --enable-fpm

Memcache サーバーをインストールした後、次のコマンドを使用してサービスを開始します:

sudo /usr/loca/php5.5/sbin/php-fpm
memcached サービスの起動パラメータの説明 :

-p TCP リスニング ポート、デフォルトは 11211

-l 接続の IP アドレス、デフォルトはローカル マシン

-d memcached を開始しますservice

-d restart memcached サービスを再起動します

-d stop |shutdown 実行中の memcached サービスをシャットダウンします
-d install memcached サービスをインストールします

-d uninstall memcached サービスをアンインストールします
-u の場合にのみ有効ですroot として実行)
-m 最大メモリ使用量、単位は MB。デフォルトは 64MB
-M メモリが枯渇した場合、項目を削除する代わりにエラーを返します
-c 同時接続の最大数、デフォルトは 1024 です
-C は CAS の使用を無効にします
-P PID によって保存されたファイル名、 -d オプションでのみ呼び出されます
-f ブロック サイズの増加係数、デフォルトは 1.25 -n 最小割り当てスペース、デフォルトのキー + 値 + フラグは 48 です
-t 使用されるスレッドの数、デフォルトははい 4
-b バックアップ ログ キューのサイズを設定します、デフォルトは 1024 です
-R 各イベントの最大リクエスト数を設定します、デフォルトは 20 です
-h ヘルプを表示します


以下の図から memcached サーバーが有効になっているかどうかを確認できます:




ポート 11211 が LISTEN 状態であることがわかり、memcached サーバーが開始されていることを示しています。

(2) memcache クライアントをインストールします

このインストールは、実際には、php がインストールされていることに基づいて、php をアンインストールせずに php を再インストールするのと似ています。 。


まず、php に付属の pecl インストーラーを使用できます:

/usr/local/php5.5/bin/pecl install memcache
其次也可以用如下命令下载源码包后解压安装:

wget http://pecl.php.net/get/memcache-2.2.6.tgz

但是我遇到的问题是,不论使用上述哪个方法,最终的结果都是要使用phpize工具为memcache生成配置文件,而这个需要autoconf这个库,从之前安装php的配置中可以看出,我并有安装autoconf库,因此我使用上述两种方法安装都会报同样的错:


同样,当我使用源码包安装的时候,进入到memcache源码包后,需要使用/usr/local/php5.5/bin/phpize工具来生成configure文件,会与上图报同样的错误。从此处也可以说明,上述两种安装方式都是殊途同归,原理都一样。

为此,我需要去安装autoconf库,但是在安装这个库的时候,同样会报错:


这里可以明显看出,就是M4版本太低,需要更新。通过查阅资料知晓,autoconf使用M4宏处理器处理configure.in文件,从而可以生成configure文件用于安装配置。

然后,就是去下载M4源码进行安装了,这里又有一个坑,我安装提示的去下载推荐的 M41.4.16版本的源码包,配置成功,但是编译的时候会出现类似下面的问题:

./stdio.h:477:1: error: 'gets' undeclared here (not in a function)_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");^
这个问题我在网上查找,发现不仅仅是安装M4会出现,很多人安装其他的库的时候也会出现类似问题,也找到有人更改 _GL_WARN_ON_USE进行hack,也有人说进行打补丁(这个问题的具体原因可能比较复杂,也没弄清)。但是我觉得我的ubuntu是13.10是比较新的版本,应该会有修复吧!于是我就重新下载了一个M4的最新版本:

wget  http://ftp.gnu.org/gnu/m4/m4-latest.tar.gztar -zxf m4-latest.tar.gz;mv m4-1.4.17  /usr/local/m4cd /usr/local/m4./configuremakemake insatll

按照上面步骤安装的时候,奇迹出现了,果然可以编译安装完成,没有任何问题。此处得出的结论是,作为软件使用者和开发者我们一定要适合保持软件的更新,尽量使用最新的稳定的版本,这样可以避免遇到很多奇怪的问题。

安装时把解压包放到/usr/local/m4下,然后直接configure不指定prefix才可以安装autoconf,否则也会同样的找不到M4的错误。

安装autoconf如下:

export  PATH=/usr/local/m4:$PATHcd autoconf./configure --prefix=/usr/local/autoconfmakemake install
按照上述命令安装就完成了autoconf的安装。

然后接着去安装memcache,此时,使用export将/usr/local/autoconf/bin导入到PATH并不起作用,因此我尝试使用了如下的命令:

sudo ln -s /usr/local/autoconf/bin/autoconf autoconfsudo ln -s /usr/local/autoconf/bin/autoheader autoheadersudo ln -s /usr/local/autoconf/bin/autom4te autom4tesudo ln -s /usr/local/autoconf/bin/autoreconf autoreconfsudo ln -s /usr/local/autoconf/bin/autoscan autoscansudo ln -s /usr/local/autoconf/bin/autoupdate autoupdatesudo ln -s /usr/local/autoconf/bin/ifnames ifnames

做了这些符号链接之后,我重新进入memcache源码文件使用phpize工具就没问题了,成功生成了configure文件:


安装过程如下:

./configure  \ >--with-php-config=/usr/local/php5.5/bin/php-config \ >--enable-memcache=/usr/bin/memcachedmakemake install
安装完成如下图所示,最后出现的installed  shared extensions是在php的配置文件中进行配置memcache时候需要使用到的,需要保存下来。



配置php.ini文件,在/usr/local/php5.5/lib/php.ini,找到extension_dir这一行:

;extension_dir = "./" 改为extension_dir = "安装memcache完成后的目录路径"extension = "memcache.so" ;添加此行用于添加memcache扩展

使用如下的php代码进行测试:

<?php	//Test memcache	$mem = new Memcache;	$mem->connect('127.0.0.1', 11211);		echo '<pre class="brush:php;toolbar:false">';	var_dump($mem);	var_dump(class_exists("Memcache"));?>

结果如图:




通过上述的种种艰辛,不仅是完成了安装的任务,也让我进一步熟悉了linux下安装软件的各种值得注意的地方。安装gd2库的时候需要依赖Xpm库,这个问题其实是在安装好了gd2后安装php的时候出现的,然后又重新安装gd2,特别是安装Xpm后,使用了符号链接之后,就可以安装带有Xpm的gd2库了。这个方法是一个启示!在后面安装autoconf完成后,使用PATH变量失效时是当时突然想起符号链接这个方法,因此就自己尝试性使用并解决了问题。还有就是安装M4的时候,版本问题可能牵涉出很多底层的问题,这个我也没弄清楚,当时也是尝试性的使用最新版本安装就可以解决了。最后安装memcache的时候就比较顺利了。同时也发现网上有很多安装php的时候就使用配置选项--with-autoconf选项直接一步安装了autoconf,这样就可以直接使用phpize工具了,但是我这里没有安装,虽然让我费了周折,但是最后单独安装了autoconf之后,使用符号链接指定安装的autoconf路径,然后phpize就可以从PATH中的/usr/bin这个路径下找到,因此这也说明了安装php是指定配置选项应该就是指定了php对这个依赖项需要调用时的一个寻找路径。晚饭时间到了,折腾了一天,看到一切都可以使用的时候还是感觉蛮不错的!希望有前辈可以解答我前面提到的一些疑惑!

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。