以前在Debian下安装软件都是使用软件源安装的,虽然步骤较少,但仍不能理解Linux下安装软件的具体细节,于是决定手动编译安装各种软件,以解心中困惑
由于国内租用虚拟主机或VPS 价格都较高,而虚拟主机虽价格适中,但不利于学习各种系统,综上考虑还是从网上购买国外VPS,试用了几天,测试效果还是比较满意. 在使用时没有写下编译安装Nginx-1.0.5 + MySQL-5.5.15 +PHP-5.3.8,现在决定写下此过程,以供今后参考。

由于提供的VPS系统中没有Debian 6.0 ,只能选择使用5.0或4.0的版本,没法只好安装5.0的Debian,以下为安装步骤。

首先下载本文要用到的相关软件:

下载在Linux公社的1号FTP服务器里,下载地址:

FTP地址:ftp://www.linuxidc.com

用户名:www.linuxidc.com

密码:www.muu.cc

在 2011年LinuxIDC.com\9月\Debian下Nginx-1.0.5 + MySQL-5.5.15 +PHP-5.3.8编译安装相关文件

下载方法见 http://www.linuxidc.net/thread-1187-1-1.html

一. 检查系统环境

1. netstat -ntlp 查看系统中运行哪些网络服务,不需要用的都可以关掉,比如exim4(邮件服务程序), aptitude purge exim4-base exim4-config exim4-daemon-light .

2. 安装编译环境,debian 5系统发行版默认没有安装gcc等工具。需安装一下

aptitude install build-essential

二. 编译安装相关组件

1.安装zlib,openssl等组件


unzip -x zlib125.zip
cd zlib-1.2.5
./configure --prefix=/usr
make && make install

tar zxvf openssl-0.9.8r.tar.gz
cd openssl-0.9.8r
make && make install

2.安装 nginx
tar zxvf pcre-8.13.tar.gz
tar zxvf nginx-1.0.5.tar.gz
cd nginx-1.0.5
./configure --prefix=/usr/local/nginx --sbin-path=/usr/sbin --with-http_ssl_module --with-http_sub_module --with-http_flv_module --with-http_stub_status_module --with-zlib=../zlib-1.2.5 --with-openssl=../openssl-0.9.8r --with-pcre=../pcre-8.13make && make install

配置开机启动

cp nginx.txt /etc/init.d/nginx
chmod + x /etc/init.d/nginx
chkconfig nginx on
    
3.安装 mysql ,安装mysql-5.5.15需安装cmake ,
tar zxvf cmake-2.8.5.tar.gz
cd cmake-2.8.5
./bootstrap
make
make install 
在安装最后一步时可能会出错,解决办法是指定安装位置make install DESTDIR=/usr/local.

建立mysql安装目录及数据目录
mkdir -p /usr/local/mysql
mkdir -p /data/mysql

建立mysql用户及组
groupadd mysql
useradd -d /usr/local/mysql -g mysql -s /usr/sbin/nologin mysql

设定目录mysql目录属主及权限
chown mysql.mysql /usr/local/mysql
chown -R mysql.mysql /data/mysql
chmod 755 /usr/local/mysql
chmod -R 755 /data/mysql

用cmake编译安装mysql
cd mysql-5.5.15
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DMYSQL_USER=mysql
编译过程中可能会出错,需安装libncurses5-dev及bison
aptitude install libncurses5-dev bison
然后删除CMakeCache.txt
rm CMakeCache.txt
继续编译通过
make
make install

复制配置文件my.cnf
cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf
chown mysql.mysql /etc/my.cnf
chmod 755 /etc/my.cnf

配置开机启动
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig mysqld on

启动mysql并设置密码
/etc/init.d/mysqld start
/usr/local/mysql/bin/mysqladmin -u root password '新密码'

OK,mysql配置完成。

4.安装php
编译gd库,这个在搭建discuz论坛时需用到

(1)安装libpng

tar zxvf libpng-1.5.4.tar.gz
cd libpng-1.5.4
./configure
make 
make install

备注: libpng默认安装位置/usr/local,若指定安装在/usr/local/png,则编译gd时会提示找不到png.h等文件.

(2)安装freetype

tar zxvf freetype-2.4.6.tar.gz
cd freetype-2.4.6
./configure --prefix=/usr/local/freetype
make
make install

(3)安装jpeg

tar zxvf jpegsrc.v8c-tar.gz
cd jpeg-8c
./configure --prefix=/usr/local/jpeg
make
make install

(4) 安装libxml2

tar zxvf libxml2-2.7.8.tar.gz
cd libxml2-2.7.8
./configure --prefix=/usr/local/libxml2
make
make install

(5)安装GD

tar zxvf pierrejoye-gd-libgd-GD_2_0_33.tar.gz
cd pierrejoye-gd-libgd-GD_2_0_33
./configure --prefix=/usr/local/gd --with-png=/usr/local --with-freetype=/usr/local/freetype --with-jpeg=/usr/local/jpeg
make
make install

(6)编译PHP

./configure \
--prefix=/usr/local/new_php \
--with-config-file-path=/usr/local/new_php/etc \
--enable-fpm \
--with-fpm-user=nobody \
--with-fpm-group=nobody \
--with-libxml-dir \
--with-openssl \
--with-zlib \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--enable-gd-native-ttf \
--enable-gd-jis-conv \
--with-mhash \
--enable-mbstring \
--with-mcrypt \
--with-mysql \
--with-mysql-sock=/tmp/mysqld.sock \
--with-mysqli=/usr/bin/mysql_config \
--enable-sockets \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm


make
make test
make install

复制php.ini到配置文件目录及php-fpm 开机启动
cp php.ini-production /usr/local/php/etc/php.ini
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm
这时候还不能使用/etc/init.d/php-fpm start启动,需修改一下php-fpm配置文件才可以,配置文件位置php安装目录 etc 目录下,默认有个参考文件.
cp php-fpm.conf.default php-fpm.conf
nano php-fpm.conf
,pm.start_servers = 20
,pm.min_spare_servers = 5
,pm.max_spare_servers = 35
去掉以上三项前面的逗号,这时再使用/etc/init.d/php-fpm start 即可启动。
Memcahed构建与安装php memcache

1.memcached需用到libevent这个库

tar zxvf libevent-2.0.12-stable.tar.gz
cd libevent-2.0.12-stable
./confiugre --prefix=/usr
make && make install

2.安装memcached

tar zxvf memcached-1.4.6.tar.gz
cd memcached-1.4.6
./configure --with-libevent=/usr
make && make install
在make install这步时出错了,竟不能安装,查看了错误原因,原来是/usr/local/man目录中已存在一个man1,于是改名man2,再次make install成功.

3.安装 php memcache扩展

tar xvf memcache-3.0.6.tgz
cd memcache-3.0.6
/usr/local/php/bin/phpize
./configure --enable-memcache --with-php-conf=/usr/local/php/bin/php-config --with-zlib-dir=/usr
make
make test
make install
安装完成后,提示
Installing shared extensions:  /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626

配置php.ini文件
在文件最后添加
extension_dir="/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626"
extension=memcache.so


查看php是否成功加载memcache.so
/usr/local/php/bin/php -m


[PHP Modules]
Core
ctype
date
dom
ereg
fileinfo
filter
gd
hash
iconv
json
libxml
mbstring
mcrypt
memcache
mhash
mysql
mysqli
openssl
pcre
PDO
pdo_sqlite
Phar
posix
Reflection
session
SimpleXML
sockets
SPL
SQLite
sqlite3
standard
sysvmsg
sysvsem
sysvshm
tokenizer
xml
xmlreader
xmlwriter
zlib


[Zend Modules]

在15行看到了memcache,已成功加载

启动memcached服务端程序
memcached -d -m 64 -u www-data -l localhost -p 11211 -c 640 -P /tmp/Memcached.pid

各个参数的意义
-d选项是启动一个守护进程,
-m是分配给Memcached使用的内存数量,单位是MB,
-u是运行Memcache的用户,我这里是root,
-l是监听的服务器IP地址,
-p是设置Memcache监听的端口,最好是1024以上的端口,
-c选项是最大运行的并发连接数,默认是1024,按照你服务器的负载量来设定,
-P是设置保存Memcache的pid文件

配置memcached开机启动

cp memcached.txt /etc/init.d/memcached
chmod + x /etc/init.d/memcached
chkconfig memcached on