一、安装软件版本
1、MySQL5.5.17
2、nginx1.6.2
3、php5.3
#! /bin/sh ### BEGIN INIT INFO # Provides: php-fpm # Required-Start: $remote_fs $network # Required-Stop: $remote_fs $network # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: starts php-fpm # Description: starts the PHP FastCGI Process Manager daemon ### END INIT INFO prefix=/usr/local/php exec_prefix=${prefix} php_fpm_BIN=${exec_prefix}/sbin/php-fpm php_fpm_CONF=${prefix}/etc/php-fpm.conf php_fpm_PID=${prefix}/var/run/php-fpm.pid php_opts="--fpm-config $php_fpm_CONF --pid $php_fpm_PID" wait_for_pid () { try=0 while test $try -lt 35 ; do case "$1" in 'created') if [ -f "$2" ] ; then try='' break fi ;; 'removed') if [ ! -f "$2" ] ; then try='' break fi ;; esac echo -n . try=`expr $try + 1` sleep 1 done } case "$1" in start) echo -n "Starting php-fpm " $php_fpm_BIN --daemonize $php_opts if [ "$?" != 0 ] ; then echo " failed" exit 1 fi wait_for_pid created $php_fpm_PID if [ -n "$try" ] ; then echo " failed" exit 1 else echo " done" fi ;; stop) echo -n "Gracefully shutting down php-fpm " if [ ! -r $php_fpm_PID ] ; then echo "warning, no pid file found - php-fpm is not running ?" exit 1 fi kill -QUIT `cat $php_fpm_PID` wait_for_pid removed $php_fpm_PID if [ -n "$try" ] ; then echo " failed. Use force-quit" exit 1 else echo " done" fi ;; force-quit) echo -n "Terminating php-fpm " ;; restart) $0 stop $0 start ;; reload) echo -n "Reload service php-fpm " if [ ! -r $php_fpm_PID ] ; then echo "warning, no pid file found - php-fpm is not running ?" exit 1 fi kill -USR2 `cat $php_fpm_PID` echo " done" ;; *) echo "Usage: $0 {start|stop|force-quit|restart|reload}" exit 1 ;; esac
1)安装MySQL
说明:在MySQL5.5这个版本中之后使用的是cmake编译,所以在安装MySQL之前一定要检查自己的服务器上是否安装了cmake。
源代码安装cmake:安装,解压缩、进入目录、./bootstrap,make && make install
yum安装:yum -y instll cmake*
a、首先需要创建一个用户组和用户名,因为在Linux中,运行每一个服务都是要以一个用户的身份来运行和管理的。
groupadd mysql useradd -g mysql -s /usr/sbin/nologin mysql
b、创建MySQL安装目录
groupadd mysql useradd -g mysql -s /usr/sbin/nologin mysql mkdir /usr/local/mysql mkdir /usr/local/mysql/data cd /usr/local/src tar zxvf mysql-5.5.17.tar.gz cd mysql-5.5.17 #在这编译的过程中可能会出现openSsl,ncurses-devel等安装包的依赖性,只要yum安装这些包就可以 cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_unicode_ci -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_EMBEDDED_SERVER=1 -DENABLED_LOCAL_INFILE=1 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_DEBUG=0 make && make install
c、安装成功就会出现my-medium.cnf,拷贝配置文件到/etc目录下
cp /usr/local/src/mysql-5.5.17/support-files/my-medium.cnf /etc/my.cnf
d、设置权限
chmod +x /usr/local/mysql chown -R mysql:mysql /usr/local/mysql
e、设置开机自启动
cp support-files/mysql.server /etc/init.d/mysqld chmod +x /etc/init.d/mysqld chkconfig --add mysqld chkconfig mysqld on
f、修改配置文件
vim /etc/my.cnf # [mysqld] 添加: datadir=/usr/local/mysql/data default-storage-engine=Innodb # 初始化数据库 /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data & # 启动MySQL /usr/local/mysql/bin/mysqld_safe –defaults-file=/etc/my.cnf & 或者: /etc/init.d/mysqld start (service mysqld start) # 测试MySQL是否启动 # 1)查看是否有进程mysql ps -ef | grep mysql # 2)查看端口是否运行 netstat -tnl | grep 3306 # 3)读取mysql版本信息 /usr/local/mysql/bin/mysqladmin version # 4) 登录mysql /usr/local/mysql/bin/mysql -u root
#修改MySQL密码
update user set password=PASSWORD("") where user='root';
flush privileges; # 至此,MySQL安装完成
2)安装nginx
a、nginx安装需要pcre库的支持,首先是要安装这个库文件
yum -y install pcre*
b、安装nginx
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module make && make install
c、将nginx当做系统一个服务来运行
vim /etc/init.d/nginx
#!/bin/sh # # nginx - this script starts and stops the nginx daemon # # chkconfig: - 85 15 # description: Nginx is an HTTP(S) server, HTTP(S) reverse # proxy and IMAP/POP3 proxy server # processname: nginx # config: /etc/nginx/nginx.conf # config: /etc/sysconfig/nginx # pidfile: /var/run/nginx.pid # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ "$NETWORKING" = "no" ] && exit 0 nginx="/usr/local/nginx/sbin/nginx" prog=$(basename $nginx) NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf" [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx lockfile=/var/lock/subsys/nginx start() { [ -x $nginx ] || exit 5 [ -f $NGINX_CONF_FILE ] || exit 6 echo -n $"Starting $prog: " daemon $nginx -c $NGINX_CONF_FILE retval=$? echo [ $retval -eq 0 ] && touch $lockfile return $retval } stop() { echo -n $"Stopping $prog: " killproc $prog -QUIT retval=$? echo [ $retval -eq 0 ] && rm -f $lockfile return $retval killall -9 nginx } restart() { configtest || return $? stop sleep 1 start } reload() { configtest || return $? echo -n $"Reloading $prog: " killproc $nginx -HUP RETVAL=$? echo } force_reload() { restart } configtest() { $nginx -t -c $NGINX_CONF_FILE } rh_status() { status $prog } rh_status_q() { rh_status >/dev/null 2>&1 } case "$1" in start) rh_status_q && exit 0 $1 ;; stop) rh_status_q || exit 0 $1 ;; restart|configtest) $1 ;; reload) rh_status_q || exit 7 $1 ;; force-reload) force_reload ;; status) rh_status ;; condrestart|try-restart) rh_status_q || exit 0 ;; *) echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}" exit 2 esac
#加执行的权限
chmod +x /etc/init.d/nginx
d、将nginx加到系统服务
chkconfig --add nginx chkconfig nginx on
3)安装php
注意:这个php的安装时将php以一个进程来运行,在Apache中,是将php当做是Apache的一个模块来运行,所以在编译的时候要php支持php-fpm
一、/******************************* 安装GD库 ****************************/ 1)jpeg6 mkdir -p /usr/local/jpeg6 mkdir -p /usr/local/jpeg6/bin mkdir -p /usr/local/jpeg6/lib mkdir -p /usr/local/jpeg6/include mkdir -p /usr/local/jpeg6/man mkdir -p /usr/local/jpeg6/man1 mkdir -p /usr/local/jpeg6/man/man1 cd /usr/local/src tar -zxvf jpegsrc.v6b.tar.gz cd jpeg-6b ./configure --prefix=/usr/local/jpeg6/ --enable-shared --enable-static make # 编译完成 make install # 后续的工作,如复制程序到目标目录,清空缓存等。 2)libpng cd /usr/local/src tar -zvxf libpng-1.2.16.tar.gz cd libpng-1.2.16 ./configure //和zlib一样不要带参数,让它默认安装到相应目录 make && make install 3)freetype cd /usr/local/src tar -zvxf freetype-2.3.4.tar.gz cd freetype-2.3.4 mkdir -p /usr/local/freetype # 创建目录 -p:创建上级目录 mkdir a/b(如果没有a目录会报错) ./configure --prefix=/usr/local/freetype make && make install 4)GD库 cd /usr/local/src tar -zvxf gd-2.0.35.tar.gz mkdir -p /usr/local/gd cd gd-2.0.35 ./configure --prefix=/usr/local/gd --with-jpeg=/usr/local/jpeg6/ --with-png --with-zlib --with-freetype=/usr/local/freetype make && make install (出错的话,再重新配置一遍,执行上一行) 三、/************************ 编译安装 PHP 所需的支持库 *****************************/ cd /usr/local/src tar zxvf libiconv-1.13.tar.gz cd libiconv-1.13/ ./configure --prefix=/usr/local make && make install cd /usr/local/src #ldconfig是一个动态链接库管理命令,为了让动态链接库为系统所共享 tar zxvf libmcrypt-2.5.8.tar.gz cd libmcrypt-2.5.8/ ./configure make && make install /sbin/ldconfig cd libltdl/ ./configure --enable-ltdl-install make && make install cd /usr/local/src tar zxvf mhash-0.9.9.tar.gz cd mhash-0.9.9/ ./configure make && make install # 创建程序库的软连接(直接复制运行就可以) ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4 ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8 ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.a ln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.la ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.so ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2 ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1 ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib/ cd /usr/local/src tar zxvf mcrypt-2.6.8.tar.gz cd mcrypt-2.6.8/ /sbin/ldconfig ./configure make && make install 四、/***************************** 安装PHP5.3(需要前三步都做好之后) *************************************/ cd /usr/local/src tar zxvf php-5.3.27.tar.gz cd php-5.3.27 ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-iconv-dir=/usr/local --with-freetype-dir=/usr/local/freetype --with-jpeg-dir=/usr/local/jpeg6 --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fpm --enable-mbstring --with-mcrypt --with-gd=/usr/local/gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl --with-xmlrpc --enable-zip --enable-soap --without-pear make ZEND_EXTRA_LIBS='-liconv' make install //************************************ 配置php的配置文件 ******************************/ cp ./php.ini-production /usr/local/php/etc/php.ini cd /usr/local/php/etc cp ./php-fpm.conf.default ./php-fpm.conf
五、/*********************************修改nginx***********************************/
server {
listen 80 default;
server_name localhost;
#charset koi8-r;
access_log logs/default.access.log main;
error_log logs/default.error.log;
root /usr/local/nginx/html;
index index.html index.htm index.php;
location / {
if (!-e $request_filename){
rewrite ^(.*)$ /index.php?s=$1 last;break;
}
}
location ~ .+.php($|/) {
set $script $uri;
set $path_info "/";
if ($uri ~ "^(.+.php)(/.+)") {
set $script $1;
set $path_info $2;
}
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php?IF_REWRITE=1;
include fastcgi_params;
fastcgi_param PATH_INFO $path_info;
fastcgi_param SCRIPT_FILENAME $document_root$script;
fastcgi_param SCRIPT_NAME $script;
}
}
六、将php制作成系统服务
vim /etc/init.d/php-fpm
#! /bin/sh
### BEGIN INIT INFO
# Provides: php-fpm
# Required-Start: $remote_fs $network
# Required-Stop: $remote_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts php-fpm
# Description: starts the PHP FastCGI Process Manager daemon
### END INIT INFO
prefix=/usr/local/php
exec_prefix=${prefix}
php_fpm_BIN=${exec_prefix}/sbin/php-fpm
php_fpm_CONF=${prefix}/etc/php-fpm.conf
php_fpm_PID=${prefix}/var/run/php-fpm.pid
php_opts="--fpm-config $php_fpm_CONF --pid $php_fpm_PID"
wait_for_pid () {
try=0
while test $try -lt 35 ; do
case "$1" in
'created')
if [ -f "$2" ] ; then
try=''
break
fi
;;
'removed')
if [ ! -f "$2" ] ; then
try=''
break
fi
;;
esac
echo -n .
try=`expr $try + 1`
sleep 1
done
}
case "$1" in
start)
echo -n "Starting php-fpm "
$php_fpm_BIN --daemonize $php_opts
if [ "$?" != 0 ] ; then
echo " failed"
exit 1
fi
wait_for_pid created $php_fpm_PID
if [ -n "$try" ] ; then
echo " failed"
exit 1
else
echo " done"
fi
;;
stop)
echo -n "Gracefully shutting down php-fpm "
if [ ! -r $php_fpm_PID ] ; then
echo "warning, no pid file found - php-fpm is not running ?"
exit 1
fi
kill -QUIT `cat $php_fpm_PID`
wait_for_pid removed $php_fpm_PID
if [ -n "$try" ] ; then
echo " failed. Use force-quit"
exit 1
else
echo " done"
fi
;;
force-quit)
echo -n "Terminating php-fpm "
;;
restart)
$0 stop
$0 start
;;
reload)
echo -n "Reload service php-fpm "
if [ ! -r $php_fpm_PID ] ; then
echo "warning, no pid file found - php-fpm is not running ?"
exit 1
fi
kill -USR2 `cat $php_fpm_PID`
echo " done"
;;
*)
echo "Usage: $0 {start|stop|force-quit|restart|reload}"
exit 1
;;
esac
#加权限 chmod +x /etc/init.d/php-fpm #加入到系统服务 chkconfig --add php-fpm chkconfig php-fpm on
上面就是lnmp环境的搭建,在这个搭建的过程中,可能会出现安装包的依赖性的问题,但这些解决都是非常简单的,只要看提示那个软件包和库文件没有安装,直接用yum安装即可