詳解Nginx+php-5.4+Mysql-5.5+Memcached+redis的架構部署

爲公司搭建一個測試架構,要求跟真是環境貼近需要安裝Nginx、PHP、mysql、memcached、redis!

但是隻給了一臺R720的服務器,沒辦法,只能全跑在一臺上了


服務器型號:戴爾R710

內存:4G

操作系統:CentOS 6.4

CPU: E5520


各個包版本:

Nginx-1.2.1

Php-5.4.14

Mysql-5.5.29

Memcached-1.2.8

Redis-2.6.14

安裝Nginx

一些依賴包

yum install -y gcc gcc-c++  makezlib zlib-devel pcre*  libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel glibc glibc-devel glib2 glib2-devel bzip2bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers

1、安裝

tar zxf nginx-1.2.1.tar.gz
./configure --prefix=/usr/local/webserver/nginx/
make  &&  make install


2、啓動Nginx

#/usr/local/webserver/nginx/sbin/nginx

安裝Mysql-5.5

1、準備

groupadd mysql
useradd -r -g mysql mysql
mkdir /usr/local/webserver/mysql
mkdir -pv /usr/local/webserver/mysql/data
chown mysql.mysql /usr/local/webserver/mysql/ -R
yum  -y install gcc gcc-c++ ncurses-devel libtool openssl-devel bison-devel ncurses-devel libaio-devel
tar zxf mysql-5.5.29.tar.gz
cd mysql-5.5.29


2、首先安裝cmakeMysql-5.5安裝不同於以往版本,需要cmake編譯)

tar zxf cmake-2.8.7.tar.gz
cd cmake-2.8.7
./configure
make && make install


3、編譯安裝

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/webserver/mysql -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 -DENABLED_PROFILING=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
make
make install

注:編譯的時候如果沒有utf8_general_ci,會出現COLLATION'latin1_swedish_ci' is not valid for CHARACTER SET 'utf8'


4、配置

在源碼目錄下support-files目錄裏有很多配置文件的模版

#拷貝主配置文件
cp /root/mysql-5.5.29/support-files/my-innodb-heavy-4G.cnf /etc/my.cnf
#創建啓動腳本,cp後可以使用/etc/init.d/mysqld start啓動
cp /root/mysql-5.5.29/support-files/mysql.server /etc/init.d/mysqld
#修改權限
chmod 755 /etc/init.d/mysqld
#初始化mysql
sh scripts/mysql_install_db --user=mysql --basedir=/usr/local/webserver/mysql/ --datadir=/usr/local/webserver/mysql/data/
#創建鏈接到標準路徑下(修改環境變量指定,效果一樣)
ln -s /usr/local/webserver/mysql/bin/* /usr/bin/
ln -s /usr/local/webserver/mysql/lib/* /usr/lib/
ln -s /usr/local/webserver/mysql/libexec/*  /usr/local/libexec
ln -s /usr/local/webserver/mysql/share/man/man1/* /usr/share/man/man1
ln -s /usr/local/webserver/mysql/share/man/man8/* /usr/share/man/man8

注:vim /etc/my.cnf ([mysqld]裏添加一行skip-name-resolve = 1跳過域名解析,加快啓動速度)


5、啓動mysql

/etc/init.d/mysqld start


進入mysql,以下語句設置root密碼刪除沒用的用戶

/usr/local/mysql/bin/mysqladmin -u root password $mysqlrootpwd
use mysql;
update user set password=password('newpassword') where user='root';
delete from user where not (user='root') ;
delete from user where user='root' and password='';
drop database test;
DROP USER ''@'%';
flush privileges;

#mysql的一些安全設置

mysql_secure_installation


#mysql錯誤文件的位置

/usr/local/webserver/mysql/data/localhost.err


啓動時的兩個問題:

l啓動報錯:File'./mysql-bin.index' not found (Errcode: 13)

解決辦法:

一般就是權限問題,mysql用戶是否對數據庫目錄內的所有文件具有寫的權限

chown mysql.mysql -R data


l啓動報錯:0911029:10:22 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade tocreate it.

解決辦法:

 出現這種問題是因爲沒有指定mysql安裝目錄和data目錄導致的,運行如下命令:

# /usr/local/mysql/scripts/mysql_install_db --user=mysql--basedir=/usr/local/mysql --datadir=/usr/local/mysql/data


安裝PHP

1、安裝 jpeg

groupadd www
useradd -r -g www www
yum install bzip2-devel  net-snmp-devel
#wget http://www.ijg.org/files/jpegsrc.v8d.tar.gz
# tar zxvf jpegsrc.v8d.tar.gz
# cd jpeg-8d
# ./configure -enable-shared -enable-static
# make && make install clean

2、安裝libmcrypt

wget http://lcmp.googlecode.com/files/libmcrypt-2.5.8.tar.gz
tar fvxz libmcrypt-2.5.8.tar.gz
./configure && make && make install

說明:libmcrypt默認安裝在/usr/local


3、安裝mhash

tar-zxvf mhash-0.9.9.9.tar.gz
cd mhash-0.9.9.9
./configure
make && makeinstall

4、安裝mcrypt

tar zxvf mcrypt-2.6.8.tar.gz
cd mcrypt-2.6.8
export LD_LIBRARY_PATH=/usr/local/lib
./configure
make && make install

說明:由於在配置Mcrypt時,會找不到libmcrypt的鏈接庫,導致無法編譯,因爲Libmcrypt的鏈接庫默認在/usr/local/lib文件夾下。因些在配置mcrypt時要加入LD_LIBRARY_PATH=/usr/local/lib 導入鍵接庫


5、開始安裝PHP

tar zxf php-5.4.14.tar.gz
./configure --prefix=/usr/local/webserver/php \
--with-libxml-dir=/usr/include/libxml2 \
--with-config-file-path=/usr/local/webserver/php/etc/ \
--with-mysql=/usr/local/webserver/mysql \
--with-mysqli=/usr/local/webserver/mysql/bin/mysql_config \
--with-gd \
--enable-gd-native-ttf \
--with-zlib \
--with-mcrypt \
--with-pdo-mysql=/usr/local/webserver/mysql \
--enable-shmop \
--enable-soap \
--enable-sockets \
--enable-wddx \
--enable-zip \
--with-xmlrpc \
--enable-fpm \
--enable-mbstring \
--with-zlib-dir \
--with-bz2 \
--with-curl \
--enable-exif \
--enable-ftp \
--with-jpeg-dir=/usr/lib64 \
--with-png-dir=/usr/lib64 \
--with-freetype-dir=/usr/lib64 \
--with-iconv \
--enable-xml \
--enable-bcmath \
--enable-sysvsem \
--enable-inline-optimization \
--with-curlwrappers \
--enable-mbregex \
--with-openssl \
--enable-pcntl \
--with-gettext \
--enable-session
make
make install

Nginx+PHP整合,在安裝時必須啓用--enable-fpm


6、修改配置

cp php.ini-production /usr/local/webserver/php/etc/php.ini
rm -rf /etc/php.ini
ln -s /usr/local/webserver/php/etc/php.ini /etc/php.ini
cp /usr/local/webserver/php/etc/php-fpm.conf.default /usr/local/webserver/php/etc/php-fpm.conf

# vi /usr/local/php/etc/php-fpm.conf
user = www
group = www
#取消前面的分號
pid = run/php-fpm.pid


7、修改 /usr/local/etc/php-fpm.conf 文件

pid = run/php-fpm.pid 卻掉註釋


Nginx支持PHP需要在定義server主機的時候添加

location ~ .*\.(php|php5)?$
{
#fastcgi_pass  unix:/tmp/php-cgi.sock;
fastcgi_pass  127.0.0.1:9000;
fastcgi_index index.php;
include fcgi.conf;
}

/usr/local/webserver/nginx/conf/目錄中創建fcgi.conf文件,輸入以下內容:

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx;
fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;
fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;


啓動:#/usr/local/sbin/php-fpm

安裝redis

1、獲取安裝文件

#wget http://download.redis.io/redis-stable.tar.gz


2、編譯安裝

tar xzvf redis-stable.tar.gz
cd redis-stable
make
make install


3、配置

mkdir -p /etc/redis
cp redis.conf /etc/redis

修改配置文件

#vi /etc/redis/redis.conf
僅修改: daemonize yes


4、啓動

/usr/local/bin/redis-server /etc/redis/redis.conf

查看啓動

ps -ef | grep redis

安RedisPHP擴展

1、獲取

wget --no-check-certificate http://github.com/owlient/phpredis/tarball/master

2、安裝

tar zxf owlient-phpredis-2.1.1-1-g90ecd17.tar && cd owlient-phpredis-90ecd17/
/usr/local/webserver/php/bin/phpize
./configure --with-php-config=/usr/local/webserver/php/bin/php-config
make && make install

3、配置

vim /usr/local/webserver/php/etc/php.ini

添加 extension = "redis.so"

安裝memcached

1、下載libevent1.4.11memcached穩定版本(libevent 是安裝 memcached 的唯一前提條件。它是 memcached 所依賴的異步事件通知庫)

2、安裝libevent1.4.11

wget -c http://cloud.github.com/downloads/libevent/libevent/libevent-1.4.11-stable.tar.gz

./configure -prefix=/usr/local/libevent
make && make install

3、安裝memcached

./configure -prefix=/usr/local/memcached --with-libevent=/usr/local/libevent
make && make install
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/libevent/lib

注:安裝memcached時需要指定libevent的安裝位置,最後一條命令是libeventlib目錄加入LD_LIBRARY_PATH

檢查,/usr/local/memcached,有2個目錄,安裝成功!

4memcached運行參數

/usr/local/memcached/bin/memcached -d -m 128 -u root -l 192.168.0.97 -c 256 -P /tmp/memcached.pid

5、運行一下報錯原因及處理方法:
/usr/local/memcached/bin/memcached: error while loading shared libraries:libevent-1.4.so.2: cannot open shared object file: No such file or directory這樣的錯誤,原因是,memcached默認是到/usr/lib/裏找libevent-1.4.so.2,而我們安裝的是在/usr/local/lib裏面

執行:

ln -s /usr/local/lib/libevent-1.4.so.2 /usr/lib/libevent-1.4.so.2


安裝MemcachePHP擴展

1、解壓編譯安裝

cd memcache-2.2.5
/usr/local/webserver/php/bin/phpize
#安裝PHP擴展都需要執行此腳本
./configure -enable-memcache -with-php-config=/usr/local/webserver/php/bin/php-config -with-zlib-dir
make && make install

安裝完成會有類似下面的提示:

Installing shared extensions:/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20100525/


2、修改PHP的配置文件

#vim /usr/local/webserver/php/etc/php.ini 做一下修改

extension_dir = “/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20100525/“
extension = "memcache.so"
#(如果有分號,把分號去掉!)


l如果啓動memcached時提示未找到eaccelerator.so

需要安裝eAccelerator加速器

下載安裝eAccelerator

#wget https://github.com/eaccelerator/eaccelerator/tarball/master


最新的版本是eaccelerator-42067ac.tar.gz


#tar zxvf eaccelerator-42067ac.tar.gz


需要phpize安裝php擴展,如果不明白phpize可以看這個:http://blog.csdn.net/21aspnet/article/details/8193482


需要注意的是需要寫php的安裝路徑對應的phpize下面的php-config也是


# /usr/local/webserver/php/bin/phpize


#./configure --enable-eaccelerator=shared  --with-php-config=/usr/local/webserver/php/bin/php-config


#make  


需要注意的是要安裝高版本的,低了編譯不過去。


#makeinstall

115459934.jpg

需要記住生成的提示信息,要與php配置文件php.iniextension_dir處填寫的一致


/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20100525/


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章