1. 程式人生 > >阿里雲伺服器centos5.4 lnmp環境搭建

阿里雲伺服器centos5.4 lnmp環境搭建

阿里雲伺服器一臺,配置:1u(Xeon 2.26GHz),1G記憶體,30g硬碟,2m頻寬,centos5.4 32位 (ps:1350每年的價格比較誘惑)

默 認如果是linux伺服器,進入管理介面用“df -h”命令檢視硬碟,會發現只有一個20g的盤,其實是資料盤(在我的環境中是30g的盤未被掛載)沒 有掛載,可以參考阿里雲的官方手冊進行掛載:http://help.aliyun.com/knowledge_detail/5974154.html?spm=5176.7618386.5.3.Jy0YGX

想搭建一個生產環境:nginx + mysql + php 的

廢話不多說,步驟如下(從網上查的步驟,有些有問題的地方自己解決):

1.yum安裝編譯工具:


yum -y install gcc gcc-c++ libjpeg-devel libpng-devellibtiff-devel fontconfig-devel freetype-devel libXpm-develgettext-devel openssl-devel libtool-ltdl-devel

但是實際上雲伺服器上居然連make命令都木有,所以還得安裝一下,好在有yum:

yum -y install gcc automake autoconf libtool make

2.安裝pcre(用於nginx的rewrite模組)

tar xjvf pcre-8.20.tar.bz2

cd pcre-8.20
./configure

make

make install

3.安裝nginx

tar xzf nginx-1.0.0.tar.gz    

cd nginx-1.0.0

./configure --prefix=/usr/local/nginx/ --with-http_stub_status_module --with-http_ssl_module --with-sha1=/usr/lib --with-pcre=/root/soft/pcre-8.20/

make

make install

安裝完成後可以用“/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

”啟動服務

可以用‘ps aux | grep nginx’檢視服務是否存在。

ogwJ8XP4rWH

測試完成後,用kill -quit  (master process程序號)

4.安裝mysql

tar xzf  mysql-5.1.26-rc.tar.gz

cd mysql-5.1.26-rc

autoreconf --force --install

./configure --prefix=/usr/local/mysql --without-debug --with-unix-socket-path=/usr/local/mysql/mysql.sock --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static --enable-assembler --with-extra-charsets=gbk,gb2312,utf8 --with-pthread --enable-thread-safe-client --localstatedir=/usr/local/mysql/var

config報錯:

checking for termcap functions library... configure: error: No curses/termcap library found

查了一下,發現缺少ncurses包,沒辦法,裝一個吧,好在有yum:

yum -y install ncurses-devel

還好,很順利,繼續重新執行上邊的configure

……

成功,繼續

make

make install

……

新增mysql使用者及使用者組:

groupadd mysql
useradd -r -g mysql mysql

許可權處理

cd /usr/local/mysql;

chown -R root:mysql .;

初始化系統表(建立系統資料庫的表)

./bin/mysql_install_db --user=mysql;

這時會發現/usr/local/mysql下多了一個var目錄(因為編譯時未指定資料目錄,預設會在安裝目錄下建立var目錄用於資料目錄)

chown -R mysql:mysql ./var;

chmod -R 777 ./var;

設定環境變數:(話說其實我不太明白這部分是做啥)

vi /root/.bash_profile;
PATH=$PATH:$HOME/bin修改為:

PATH=$PATH:$HOME/bin:/usr/local/mysql/bin:/usr/local/mysql/lib

完後儲存退出

source /root/.bash_profile

配置啟動項:

/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --pid-file=/usr/local/mysql/var/mysql.pid --datadir=/usr/local/mysql/var --socket=/usr/local/mysql/var/mysql.sock --log-error=/usr/local/mysql/var/err.log --log-slow-queries=/usr/local/mysql/var/slowquery.log &

不 得不多說兩句的是,因為在編輯階段很2的把mysql.sock放到了mysql的根目錄下,完後發現mysql.sock所在資料夾要很高的寫許可權,為 安全起見,不能放mysql的根目錄,所以啟動時候放到了資料目錄(/usr/local/mysql/var/),因為反正這個目錄也是最高寫許可權,但 是這樣做帶來的後果是,用/usr/local/mysql/bin/mysqld進入mysql命令列,或者用mysqlamdin等一些管理工具的時 候,甚至寫程式時候都需要手工指定sork檔案位置,如果你是按照我這個方法做到這兒的話,請不要怪我,要不你就再回去重新編譯一把(偷笑中),不過其實 也沒麻煩多少。

完後檢查下是否啟動成功

ps | aux | grep mysql

……噔噔 噔噔 ,成功啦

ogaMn9aMeZ1

修改root使用者密碼:

/usr/local/mysql/bin/mysqladmin --socket=/usr/local/mysql/var/mysql.sock -uroot -p shutdown

這就是我說的得手工修改sock檔案位置

mysql>use mysql;

mysql>desc user;

mysql>update user set Password = password(&#39xxxxxx') where User=&#39root'

mysql>exit

5.安裝php

編譯安裝gd2(圖片處理模組,可視需要新增)

wget http://down1.chinaunix.net/distfiles/gd-2.0.33.tar.gz

tar xzf gd-2.0.33.tar.gz;

cd  gd-2.0.33;

./configure --prefix=/usr/local/gd2;

make;  

make install;

編譯安裝 libiconv(編碼轉換模組)

wget http://down1.chinaunix.net/distfiles/libiconv-1.13.1.tar.gz;

tar xzf libiconv-1.13.1.tar.gz;

cd libiconv-1.13.1;

./configure --prefix=/usr/local/iconv;

make

make install

編譯安裝libmcrypt(提供加密演算法,如果要php應用mcrypt庫函式,需要安裝此模組)

wget http://www.51osos.com/uploads/soft/libmcrypt-2.5.8.tar.gz;

tar xzf libmcrypt-2.5.8.tar.gz;

cd libmcrypt-2.5.8;

./configure;

make

make install

編譯安裝 mhash(是一個雜湊演函式庫,如果要php應用mcrypt庫函式,需要安裝此模組)

tar xzf mhash-0.9.9.9.tar.gz;

cd mhash-0.9.9.9;

./configure;

make

make install

編譯安裝spawn-fcgi(包作為FastCGI支援模組)

wget http://vbets.googlecode.com/files/spawn-fcgi-1.6.3.tar.gz

tar xzf spawn-fcgi-1.6.3.tar.gz;

cd spawn-fcgi-1.6.3;

./configure;

make;

make install;

編譯安裝libevent(一個網路事件庫)

tar xzf libevent-2.0.16-stable.tar.gz;

cd libevent-2.0.16-stable;

./configure;

make;

make install;

編譯安裝freetype(字型引擎

tar xzf freetype-2.1.10.tar.gz;

cd freetype-2.1.10;

./configure --prefix=/usr/local/freetype;

make;

makeinstall

編譯安裝jpeg(對gd庫支援的一個包)

tar xzf jpegsrc.v6b.tar.gz;

cd jpeg-6b;

mkdir /usr/local/jpeg6;
mkdir /usr/local/jpeg6/bin;
mkdir /usr/local/jpeg6/lib;
mkdir /usr/local/jpeg6/include;
mkdir -p /usr/local/jpeg6/man/man1;

./configure --prefix=/usr/local/jpeg6/ --enable-shared --enable-static;

make;

make install;

編譯安裝libxml(一個用來解析XML文件的函式庫):

tar xzf libxml2-2.6.32.tar.gz;

cd libxml2-2.6.32;

./configure --prefix=/usr/local/libxml2;

make;

make install;

手工安裝成功但是在編輯php的時候出錯,還是yum吧,不過yum安裝後,php編譯時此模組的路徑得用系統預設路徑/usr/lib

yum install libxml
yum install libxml-devel
yum install libxml2
yum install libxml2-devel

編譯安裝curl(模擬http請求):

tar xzf curl-7.15.0.tar.gz;

cd curl-7.15.0;

./configure --prefix=/usr/local/curl;

make;

make install;

終於完成了七七八八的準備工作,可能有些木有用到啊。不管了,先裝php吧。

編譯安裝php:

tar xzf php-5.3.6.tar.gz;

cd php-5.3.6;

./configure    --prefix=/usr/local/php   --with-config-file-path=/usr/local/php/etc   --with-mysql=/usr/local/mysql   --with-iconv-dir=/usr/local/iconv   --with-freetype-dir=/usr/local/freetype   --with-jpeg-dir=/usr/local/jpeg6/   --with-zlib-dir=/usr/lib   --with-libxml-dir=/usr/lib     --with-curl-dir=/usr/local/curl --enable-xml   --disable-debug   --disable-rpath   --enable-discard-path   --enable-safe-mode   --enable-bcmath   --enable-shmop   --enable-sysvsem   --enable-inline-optimization   --with-curlwrappers   --enable-mbregex   --enable-fastcgi   --enable-fpm   --enable-force-cgi-redirect   --enable-mbstring   --with-mcrypt   --with-gd   --enable-gd-native-ttf   --with-openssl;

make

最後出現很多“undefined reference to `libiconv_open”這樣的問題

查了一下,發現是libiconv一直出問題

……

表面看,是libiconv安裝問題,重灌libiconv之後問題依舊,網上看有人捨棄libiconv,使用 –without-iconv,我覺的不可取,這樣是迴避問題。

找了n久,終於找到bug所在: 在執行完 ./configure … 之後,修改下 Makefile,找到其中的

EXTRA_LIBS = -lcrypt -lz -lcrypt -lrt -lmysqlclient -lmcrypt -lldap -llber -lfreetype -lpng -lz -ljpeg -lcurl -lz -lrt -lm -ldl -lnsl -lrt -lxml2 -lz -lm -lssl -lcrypto -ldl -lz -lcurl -ldl -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lidn -lssl -lcrypto -lz -lxml2 -lz -lm -lssl -lcrypto -ldl -lz -lxml2 -lz -lm -lxml2 -lz -lm -lcrypt -lxml2 -lz -lm -lxml2 -lz -lm -lxml2 -lz -lm -lxml2 -lz -lm -lcrypt

在最後加上 -liconv 修改成

EXTRA_LIBS = -lcrypt -lz -lcrypt -lrt -lmysqlclient -lmcrypt -lldap -llber -lfreetype -lpng -lz -ljpeg -lcurl -lz -lrt -lm -ldl -lnsl -lrt -lxml2 -lz -lm -lssl -lcrypto -ldl -lz -lcurl -ldl -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lidn -lssl -lcrypto -lz -lxml2 -lz -lm -lssl -lcrypto -ldl -lz -lxml2 -lz -lm -lxml2 -lz -lm -lcrypt -lxml2 -lz -lm -lxml2 -lz -lm -lxml2 -lz -lm -lxml2 -lz -lm -lcrypt -liconv

然後再

make

……終於成功了,

make install(到這兒我都不想記錄了,太累了)

總算是成功安裝了,之後是一些配置工作(未完,待續)

cp php.ini-development /usr/local/php/etc/php.ini(根據你php安裝包目錄下具體情況配置)

cp -R ./sapi/fpm/php-fpm.conf /usr/local/php/etc/php-fpm.conf

sed -i &#39s/;pm.min_spare_servers/pm.min_spare_servers/g' /usr/local/php/etc/php-fpm.conf

sed -i &#39s/;pm.max_spare_servers = 35/pm.max_spare_servers = 35/g' /usr/local/php/etc/php-fpm.conf

sed -i &#39s/;pm.max_spare_servers = 35/pm.max_spare_servers = 35/g' /usr/local/php/etc/php-fpm.conf

/usr/local/php/bin/php-fpm

php啟動了

安裝imagemagic:(切圖神器,因為習慣用命令列,所以不安裝php擴充套件了)

tar jxvf ImageMagick-6.5.9-10.tar.bz2
cd ImageMagick-6.5.9-10

./configure
make
make install

安裝php擴充套件eaccelerator (php加速用):
tar xzf eaccelerator-eaccelerator-42067ac.tar.gz;

cd eaccelerator-eaccelerator-42067ac;

/usr/local/php/bin/phpize;

注意phpize之後生成的資訊需要拷貝下來,在之後配置php.ini時需要用到

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

make;

make install;

建立eaccelerator快取目錄

mkdir /tmp/eaccelerator;

chmod -R 777 /tmp/eaccelerator;

開啟/usr/local/php/etc/php.ini  //紅色數字部分需要根據“/usr/local/php/bin/phpize;”生成的數字自己修改;

找到 extension_dir 改為 extension_dir ="/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/"

最後新增如下程式碼

[eaccelerator]
extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/eaccelerator.so"
eaccelerator.shm_size="32"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"

儲存php.ini;

重啟nginx;

檢查eaccelerator是否成功安裝:/usr/local/php/bin/php -v

ogES74KusjX

看看mysql啟動沒有,如果沒有的話,啟動一下,完後做一些測試工作。

應該差不多就這樣了。

歡迎各位提出修改意見,我會不斷完善此文件