【准备工作】
#在编译安装lnmp之前,首先先卸载已存在的rpm包。
代码如下 | 复制代码 |
rpm -e httpd rpm -e mysql rpm -e php yum -y remove httpd #禁用SeLinux,Selinux可能会致使编译安装失败,我们先禁用它。 |
setenforce 0 # 临时禁用,不需要重启(推荐)。
代码如下 | 复制代码 |
#yum安装必要工具 yum -y install make apr* autoconf automake curl-devel gcc gcc-c++ zlib-devel openssl openssl-devel pcre-devel gd kernel keyutils patch perl kernel-headers compat* mpfr cpp glibc libgomp libstdc++-devel ppl cloog-ppl keyutils-libs-devel libcom_err-devel libsepol-devel libselinux-devel krb5-devel libXpm* freetype libjpeg* libpng* php-common php-gd ncurses* libtool* libxml2 libxml2-devel patch gettext glib2-devel bzip2-devel libuuid-devel docbook-style-xsl libxslt-devel gzip-devel freetype-devel |
下载源码包,存放路径如下所示:
usr/local/src/mysql/cmake-2.8.8.tar.gz
usr/local/src/mysql/mysql-5.5.25a.tar.gz
usr/local/src/nginx/nginx-1.4.7.tar.gz
usr/local/src/nginx/openssl-1.0.1e.tar.gz
usr/local/src/nginx/pcre-8.33.tar.gz
usr/local/src/nginx/zlib-1.2.8.tar.gz
usr/local/src/php/libiconv-1.14.tar.gz
usr/local/src/php/libmcrypt-2.5.8.tar.gz
usr/local/src/php/mcrypt-2.6.8.tar.gz
usr/local/src/php/mhash-0.9.9.9.tar.gz
usr/local/src/php/php-5.3.28.tar.gz
usr/local/src/php/ext/memcache-3.0.8.tgz
usr/local/src/php/ext/mongo-1.4.4.tgz
1、Nginx相关软件
Nginx1.4.7
http://nginx.org/download/nginx-1.4.7.tar.gz
pcre(支持Nginx地址重写)
ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.33.tar.gz
gzip(页面压缩)
http://zlib.net/zlib-1.2.8.tar.gz
openssl(https安全支持组件)
http://www.openssl.org/source/openssl-1.0.1e.tar.gz
2、MySQL相关软件
MySQL5.5.25
http://downloads.mysql.com/archives/get/file/mysql-5.5.25a.tar.gz
cmake(MySQL编译工具)
http://www.cmake.org/files/v2.8/cmake-2.8.8.tar.gz
3、PHP相关软件
PHP5.3.28 www.111cn.net
http://cn2.php.net/get/php-5.3.28.tar.gz/from/this/mirror
libmcrypt(PHP的加密扩展)
http://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.bz2/download
mhash(PHP的哈希函数库,像MD5,SHA,CRC这类的,比如用来计算消息的校验码之类的。)
http://sourceforge.net/projects/mhash/files/mhash/0.9.9.9/mhash-0.9.9.9.tar.bz2/download
mcrypt(PHP的加密扩展)
http://sourceforge.net/projects/mcrypt/files/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz/download
libiconv(PHP字符集转换库)
http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
【安装Nginx1.4.7】
代码如下 | 复制代码 |
#安装pcre库 cd /usr/local/src/nginx tar -xzvf ./pcre-8.33.tar.gz cd ./pcre-8.33 ./configure make && make install #安装zlib库 #安装ssl #安装Nginx |
注意,其中的配置
代码如下 | 复制代码 |
--with-pcre=/usr/local/src/nginx/pcre-8.33 --with-zlib=/usr/local/src/nginx/zlib-1.2.8 --with-openssl=/usr/local/src/nginx/openssl-1.0.1e |
为源码包解压后的路径,而不是安装路径,否则会报错!
configure 命令后,输出如下信息:
代码如下 | 复制代码 |
... Configuration summary + using PCRE library: /usr/local/src/nginx/pcre-8.33 + using OpenSSL library: /usr/local/src/nginx/openssl-1.0.1e + md5: using OpenSSL library + sha1: using OpenSSL library + using zlib library: /usr/local/src/nginx/zlib-1.2.8 nginx path prefix: "/usr/local/nginx" [root@localhost nginx-1.4.7]# |
www.111cn.net
[root@localhost nginx-1.4.7]#
nginx的configure命令支持以下参数:(可使用 ./configure --help 命令查看)
--prefix=path 定义一个目录,存放服务器上的文件 ,也就是nginx的安装目录。默认使用 /usr/local/nginx。
--sbin-path=path 设置nginx的可执行文件的路径,默认为 prefix/sbin/nginx.
--conf-path=path 设置在nginx.conf配置文件的路径。nginx允许使用不同的配置文件启动,通过命令行中的-c选项。默认为prefix/conf/nginx.conf.
--pid-path=path 设置nginx.pid文件,将存储的主进程的进程号。安装完成后,可以随时改变的文件名 , 在nginx.conf配置文件中使用 PID指令。默认情况下,文件名 为prefix/logs/nginx.pid.
--error-log-path=path 设置主错误,警告,和诊断文件的名称。安装完成后,可以随时改变的文件名 ,在nginx.conf配置文件中 使用 的error_log指令。默认情况下,文件名 为prefix/logs/error.log.
--http-log-path=path 设置主请求的HTTP服务器的日志文件的名称。安装完成后,可以随时改变的文件名 ,在nginx.conf配置文件中 使用 的access_log指令。默认情况下,文件名 为prefix/logs/access.log.
--user=name 设置nginx工作进程的用户。安装完成后,可以随时更改的名称在nginx.conf配置文件中 使用的 user指令。默认的用户名是nobody。
--group=name 设置nginx工作进程的用户组。安装完成后,可以随时更改的名称在nginx.conf配置文件中 使用的 user指令。默认的为非特权用户。
--with-select_module --without-select_module 启用或禁用构建一个模块来允许服务器使用select()方法。该模块将自动建立,如果平台不支持的kqueue,epoll,rtsig或/dev/poll。
--with-poll_module --without-poll_module 启用或禁用构建一个模块来允许服务器使用poll()方法。该模块将自动建立,如果平台不支持的kqueue,epoll,rtsig或/dev/poll。
--without-http_gzip_module — 不编译压缩的HTTP服务器的响应模块。编译并运行此模块需要zlib库。
--without-http_rewrite_module 不编译重写模块。编译并运行此模块需要PCRE库支持。
--without-http_proxy_module — 不编译http_proxy模块。
--with-http_ssl_module — 使用https协议模块。默认情况下,该模块没有被构建。建立并运行此模块的OpenSSL库是必需的。
--with-pcre=path — 设置PCRE库的源码路径。PCRE库的源码(版本4.4 - 8.30)需要从PCRE网站下载并解压。其余的工作是Nginx的./ configure和make来完成。正则表达式使用在location指令和 ngx_http_rewrite_module 模块中。
--with-pcre-jit —编译PCRE包含“just-in-time compilation”(1.1.12中, pcre_jit指令)。
--with-zlib=path —设置的zlib库的源码路径。要下载从 zlib(版本1.1.3 - 1.2.5)的并解压。其余的工作是Nginx的./ configure和make完成。ngx_http_gzip_module模块需要使用zlib 。
--with-cc-opt=parameters — 设置额外的参数将被添加到CFLAGS变量。例如,当你在FreeBSD上使用PCRE库时需要使用:--with-cc-opt="-I /usr/local/include。.如需要需要增加 select()支持的文件数量:--with-cc-opt="-D FD_SETSIZE=2048".
--with-ld-opt=parameters —设置附加的参数,将用于在链接期间。例如,当在FreeBSD下使用该系统的PCRE库,应指定:--with-ld-opt="-L /usr/local/lib"。
安装成功后,nginx的目录结构如下:
代码如下 | 复制代码 |
[root@localhost nginx-1.4.7]# ll /usr/local/nginx 总用量 6468 -rw-r--r--. 1 root root 1034 12月 8 14:48 fastcgi.conf -rw-r--r--. 1 root root 1034 12月 8 14:48 fastcgi.conf.default -rw-r--r--. 1 root root 964 12月 8 14:48 fastcgi_params -rw-r--r--. 1 root root 964 12月 8 14:48 fastcgi_params.default drwxr-xr-x. 2 root root 4096 12月 8 14:48 html -rw-r--r--. 1 root root 2837 12月 8 14:48 koi-utf -rw-r--r--. 1 root root 2223 12月 8 14:48 koi-win drwxr-xr-x. 2 root root 4096 12月 8 14:48 logs -rw-r--r--. 1 root root 3463 12月 8 14:48 mime.types -rw-r--r--. 1 root root 3463 12月 8 14:48 mime.types.default -rwxr-xr-x. 1 root root 6540149 12月 8 14:48 nginx -rw-r--r--. 1 root root 2685 12月 8 14:48 nginx.conf -rw-r--r--. 1 root root 2685 12月 8 14:48 nginx.conf.default -rw-r--r--. 1 root root 596 12月 8 14:48 scgi_params -rw-r--r--. 1 root root 596 12月 8 14:48 scgi_params.default -rw-r--r--. 1 root root 623 12月 8 14:48 uwsgi_params -rw-r--r--. 1 root root 623 12月 8 14:48 uwsgi_params.default -rw-r--r--. 1 root root 3610 12月 8 14:48 win-utf [root@localhost nginx-1.4.7]# #添加nginx用户及用户组 groupadd www #添加nginx用户组及用户 useradd -g www -s /usr/sbin/nologin www #不让www用户直接登录 #配置防火墙,开启80端口 vim /etc/sysconfig/iptables service iptables restart /usr/local/nginx/nginx #设置nginx开机启动 vim /etc/rc.d/init.d/nginx nginxd=/usr/local/nginx/nginx # Source function library. # Source networking configuration. # Check that networking is up. # Start nginx daemons functions. return $RETVAL # Stop nginx daemons functions. reload() { # See how we were called. exit $RETVAL |
保存,添加到服务,设置开机启动
代码如下 | 复制代码 |
:wq! #保存退出 chmod 775 /etc/rc.d/init.d/nginx #赋予文件执行权限 chkconfig nginx on #设置开机启动 /etc/rc.d/init.d/nginx restart #重启 service nginx restart #重启 |
【安装MySQL5.5.25a】
1、安装cmake
MySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具。
因此,我们首先要在系统中源码编译安装cmake工具。
代码如下 | 复制代码 |
#编译安装 cd /usr/local/src/mysql tar -xzvf ./cmake-2.8.8.tar.gz cd ./cmake-2.8.8 ./configure make && make install |
2、编译安装配置MySQL
代码如下 | 复制代码 |
#切换至 MySQL源码 的解压目录 cd /usr/local/src/mysql tar -xzvf ./mysql-5.5.25a.tar.gz cd ./mysql-5.5.25a #创建所需目录 #创建mysql用户和mysql组 #cmake编译 #安装 #复制配置文件 #设置权限 #配置开机自动启动 #添加MySQL的软链接以适应init脚本 #启动Nginx #修改配置文件 vim /etc/my.cnf #在[mysqld]节点中添加: #保存退出 /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data #修改root密码 /usr/local/mysql/bin/mysqladmin -u root -p password "123456" # 注意:刚开始密码最好用纯数字,后期再用phpMyAdmin来在线修改! vim /etc/sysconfig/iptables #添加如下规则到22端口这条规则的下面即可 -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT service iptables restart # 或 /etc/init.d/iptables restart service mysqld start # 或 /etc/init.d/mysqld start |
测试MySQL是否启动
#查看是否有mysql进程
代码如下 | 复制代码 |
ps -ef | grep mysql |
#查看是否有mysql端口
代码如下 | 复制代码 |
netstat -ntlp | grep 3306 |
#测试mysql,mysqladmin,mysqldump命令是否能正常使用
#读取MySQL的版本信息
代码如下 | 复制代码 |
/usr/local/mysql/bin/mysqladmin version -u root -p |
到此MySQL编译安装完成。
【安装PHP5.3.28】
###############################################################
###1、安装PHP依赖库
代码如下 | 复制代码 |
############################################################### #安装 libmcryp cd /usr/local/src/php tar -xzvf ./libmcrypt-2.5.8.tar.gz cd ./libmcrypt-2.5.8 ./configure --prefix=/usr make && make install #安装 mhash #安装 mcrypt #安装 libiconv |
################################################################
###2、安装 PHP 5.3.28
################################################################
代码如下 | 复制代码 |
cd /usr/local/src/php tar -xzvf ./php-5.3.28.tar.gz cd ./php-5.3.28 #生成配置 #编译安装 |
编译参数解释:
./configure --prefix=/usr/local/php-5.3
--with-config-file-path=/usr/local/php-5.3/etc
--with-config-file-scan-dir=/etc/php.d # 这个到时候还是去掉吧
--with-openssl
--with-zlib
--with-bz2
--with-gd
--with-jpeg-dir
--with-png-dir
--with-gettext
--with-mhash
--with-freetype-dir
--with-mcrypt
--with-iconv=/usr/local/libiconv
--with-curl
--with-curlwrappers
--with-xmlrpc
--with-mysql=/usr/local/mysql
--with-pdo-mysql=/usr/local/mysql
--with-mysqli=/usr/local/mysql/bin/mysql_config
--enable-zip
--enable-mbstring
--enable-bcmath
--enable-soap
--enable-sockets
--enable-ftp
--enable-gd-native-ttf
--enable-shmop
--enable-sysvmsg
--enable-sysvsem
--enable-sysvshm
--enable-pcntl
--enable-fpm
--without-pear
3、配置php.ini
代码如下 | 复制代码 |
cd /usr/local/src/php/php-5.3.28 cp ./php.ini-production /usr/local/php-5.3/etc/php.ini #复制php配置文件到安装目录 mv /etc/php.ini /etc/php.ini.bak #删除/移除系统自带配置文件 ln -s /usr/local/php-5.3/etc/php.ini /etc/php.ini #添加软链接 |
#编辑配置文件
vim /usr/local/php-5.3/etc/php.ini
找到:disable_functions =
修改为:disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,dll,popen,disk_free_space,checkdnsrr,checkdnsrr,getservbyname,getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd, posix_getegid,posix_geteuid,posix_getgid, posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid, posix_getppid,posix_getpwnam,posix_getpwuid, posix_getrlimit, posix_getsid,posix_getuid,posix_isatty, posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid, posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname
#列出PHP可以禁用的函数,如果某些程序需要用到这个函数,可以删除,取消禁用。
找到:;date.timezone =
修改为:date.timezone = PRC #设置时区
找到:expose_php = On
修改为:expose_php = OFF #禁止显示php版本的信息
4、配置php-fpm
代码如下 | 复制代码 |
cp /usr/local/php-5.3/etc/php-fpm.conf.default /usr/local/php-5.3/etc/php-fpm.conf #拷贝模板文件为php-fpm配置文件 vim /usr/local/php-5.3/etc/php-fpm.conf #编辑 user = www #设置php-fpm运行账号为www group = www #设置php-fpm运行组为www pid = run/php-fpm.pid #取消前面的分号 #设置 php-fpm 开机启动 cp /usr/local/src/php/php-5.3.28/sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm #拷贝php-fpm到启动目录 chmod +x /etc/rc.d/init.d/php-fpm #添加执行权限 chkconfig php-fpm on #设置开机启动 |
5、配置nginx支持php
vi /usr/local/nginx/nginx.conf #编辑配置文件,需做如下修改
user www www; #首行user去掉注释,修改Nginx运行组为www www;必须与/usr/local/php-5.3/etc/php-fpm.conf中的user,group配置相同,否则php运行出错。
index index.php index.html index.htm; #添加index.php
代码如下 | 复制代码 |
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ .php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } |
#取消FastCGI server部分location的注释,并要注意fastcgi_param行的参数,改为$document_root$fastcgi_script_name,否则使用绝对路径。
#补充:删除 /etc/php.d 文件夹下的配置文件
代码如下 | 复制代码 |
service php-fpm start # 启动php-fpm service nginx restart # 重启nginx |