现在的位置: 首页 > 教程分享 > 正文

纯手工搭建LNMP环境

2016年10月27日 教程分享 ⁄ 共 7521字 ⁄ 字号 暂无评论

LAMP、LNMP是目前最为流行的两个建站组合,它俩到底哪个好,不同需求不同人自然都有不同见解,都搭建玩玩感受一下才是王道,今天给大家分享一篇纯手工搭建LNMP环境。

第一步 下载相关包

花郎的实验环境如下,软件版本偏旧,稳定是王道:

  1. Linux:Centos6  
  2. Nginx 1.6.2  
  3. MySQL:5.1.72  
  4. PHP 5.4.36  

下载MySQL软件包和Ngix、PHP源码包,我喜欢统一放在“/usr/local/src”路径下。

  1. [root@wanghualang ~]# cd /usr/local/src  
  2. [root@wanghualang ~]# wget http://downloads.mysql.com/archives/get/file/mysql-5.1.72-linux-i686-glibc23.tar.gz  
  3. [root@wanghualang ~]# wget http://nginx.org/download/nginx-1.6.2.tar.gz  
  4. [root@wanghualang ~]# wget http://am1.php.net/distributions/php-5.4.36.tar.gz  

更多版本下载:

Nginx:http://nginx.org/en/download.html
MySQL:http://dev.mysql.com/downloads/mysql/
PHP:http://php.net/releases/

第二步 安装MySQL

切换至软件包的目录,解压软件,拷贝解压后的软件到自己喜欢的路径去,我喜欢统一放在“/usr/local”路径下。

  1. [root@wanghualang ~ ]# cd /usr/local/src  
  2. [root@wanghualang src]# tar xzf mysql-5.1.72-linux-i686-glibc23.tar.gz  
  3. [root@wanghualang src]# mv mysql-5.1.72-linux-i686-glibc23 /usr/local/mysql  

新建一个MySQL用户和存放数据的目录,并修改属主关系,我喜欢统一把数据放在“/data/mysql”路径下。

  1. [root@wanghualang ~]# useradd -s /sbin/nologin mysql  
  2. [root@wanghualang ~]# mkdir -p /data/mysql  
  3. [root@wanghualang ~]# chown -R mysql:mysql /data/mysql  

初始化数据库、设置开机启动。

  1. [root@wanghualang ~]# cd /usr/local/mysql/  
  2. [root@wanghualang mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql  
  3. [root@wanghualang ~]# cp -rf /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld  
  4. [root@wanghualang ~]# chmod 755 /etc/init.d/mysqld  
  5. [root@wanghualang ~]# chkconfig --add mysqld  
  6. [root@wanghualang ~]# chkconfig mysqld on  

配置启动脚本、简易优化性能。

  1. [root@wanghualang ~]# vim /etc/init.d/mysqld  

将软件安装目录、数据存放路径按自己定义的补充:

basedir=/usr/local/mysql
datadir=/data/mysql

从软件包里拷贝一份配置文件到“/etc”路径下,并加以修改优化。

  1. [root@wanghualang ~]# cp -rf /usr/local/mysql/support-files/my-huge.cnf /etc/my.cnf  
  2. [root@wanghualang ~]# vim /etc/my.cnf  

如果是单机运行数据库,可以考虑注释以下选项,节省资源开销。

#log-bin=mysql-bin
#server-id = 1

一切准备完毕后,就启动MySQL吧!

  1. [root@wanghualang ~]# service mysqld start  

第三步 编译安装PHP

以下两步的操作很关键,如果不优先安装好需要的依赖库,肯定会对后面的编译工作带来很大影响,建议优先完成!当然,第一次折腾的朋友也可以故意先不装相关依赖库,通过接下来的configure给出的错误提示,依次安装需要的依赖库即可,这样学习更有味道,印象更加深刻。

需要提前安装的软件包如下:

libmcrypt-devel、libxml2-devel、openssl-devel、bzip2-devel、libjpeg-devel、libpng-devel、freetype-devel、pcre-devel、libcurl-devel

说明一下,排在第一位的libmcrypt-devel比较特殊,因为RHEL/CentOS默认的Yum源不包含这个软件包,需要安装第三方epel源才能安装,为了省事,这里使用源码编译的方式安装。

  1. [root@wanghualang ~]# cd /usr/local/src/  
  2. [root@wanghualang src]# wget http://pilotfiber.dl.sourceforge.net/project/mcrypt/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz  
  3. [root@wanghualang src]# tar xzf libmcrypt-2.5.8.tar.gz  
  4. [root@wanghualang src]# cd libmcrypt-2.5.8  
  5. [root@wanghualang libmcrypt-2.5.8]# ./configure  
  6. [root@wanghualang libmcrypt-2.5.8]# make  
  7. [root@wanghualang libmcrypt-2.5.8]# make install  

接着再去安装其余软件包:

  1. [root@wanghualang ~]# yum -y install libxml2-devel openssl-devel bzip2-devel libjpeg-devel libpng-devel freetype-devel pcre-devel libcurl-devel

切换至PHP软件包所在的目录,解压软件。

  1. [root@wanghualang~ ]# cd /usr/local/src  
  2. [root@wanghualang src]# tar xzf php-5.4.36.tar.gz  
  3. [root@wanghualang src]# cd php-5.4.36  

接下来的操作就很过瘾了,如果未安装相关需要的依赖库,就会各种报错,可以自己试着感受一下!

  1. [root@wanghualang php-5.4.36]# ./configure   --prefix=/usr/local/php   --enable-fpm   --with-config-file-path=/usr/local/php/etc   --with-fpm-user=php-fpm  --with-fpm-group=php-fpm  --with-mysql=/usr/local/mysql  --with-mysql-sock=/tmp/mysql.sock  --with-libxml-dir   --with-gd   --with-jpeg-dir   --with-png-dir   --with-freetype-dir   --with-iconv-dir   --with-zlib-dir  --with-curl  --with-bz2   --with-openssl   --with-mcrypt   --enable-soap  --enable-ftp  --enable-gd-native-ttf   --enable-mbstring   --enable-sockets   --enable-exif   --disable-ipv6  
  2. [root@wanghualang php-5.4.36]# make  
  3. [root@wanghualang php-5.4.36]# make install  
  4. [root@wanghualang php-5.4.36]# cp -rf php.ini-production /usr/local/php/etc/php.ini  
  5. [root@wanghualang php-5.4.36]# cp -rf /usr/local/src/php-5.4.36/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm  
  6. [root@wanghualang php-5.4.36]# mv /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf  
  7. [root@wanghualang php-5.4.36 ]# cd /etc/init.d/  
  8. [root@wanghualang init.d ]# chmod 755 php-fpm  
  9. [root@wanghualang init.d ]# chkconfig --add php-fpm  
  10. [root@wanghualang init.d ]# chkconfig php-fpm on  
  11. [root@wanghualang init.d ]# useradd -s /sbin/nologin -M php-fpm  
  12. [root@wanghualang init.d ]# service php-fpm start  

第四步 编译安装Nginx

  1. [root@wanghualang~ ]# cd /usr/local/src  
  2. [root@wanghualang src]# tar xzf nginx-1.6.2.tar.gz  
  3. [root@wanghualang src]# cd nginx-1.6.2  
  4. [root@wanghualang nginx-1.6.2]# ./configure --prefix=/usr/local/nginx  --with-pcre  
  5. [root@wanghualang nginx-1.6.2]# make  
  6. [root@wanghualang nginx-1.6.2]# make install  

第五步 配置Nginx

  1. [root@wanghualang~ ] # vim /usr/local/nginx/conf/nginx.conf  

找到如下内容:

  1. location / {  
  2. root   html;  
  3. index  index.html index.htm;  
  4. }  

修改为:

  1. location / {  
  2. root   html;  
  3. index  index.html index.htm index.php;  
  4. }  

再找到:

  1. #location ~ \.php$ {  
  2. #    root           html;  
  3. #    fastcgi_pass   127.0.0.1:9000;  
  4. #    fastcgi_index  index.php;  
  5. #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;  
  6. #    include        fastcgi_params;  
  7. #}  

修改为:

先把注释去掉,并按需求修改内容,把“/scripts ”修改为网站所在的目录。比如,我的网站就存放在“/usr/local/nginx/html”。

  1. location ~ \.php$ {  
  2.     root           html;  
  3.     fastcgi_pass   127.0.0.1:9000;  
  4.     fastcgi_index  index.php;  
  5.     fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name;  
  6.     include        fastcgi_params;  
  7. }  

全部修改完毕后,启动Nginx吧!

  1. [root@wanghualang~ ]# /usr/local/nginx/sbin/nginx start  

如果嫌启动Nginx麻烦,也可以写一个启动脚本:

  1. [root@wanghualang~ ]# vim /etc/init.d/nginx  

脚本内容如下:

  1. #!/bin/bash  
  2. # nginx Startup script for the Nginx HTTP Server  
  3. # chkconfig: - 85 15  
  4. # description: Nginx is a high-performance web and proxy server.  
  5. # processname: nginx  
  6. # pidfile: /var/run/nginx.pid  
  7. # config: /usr/local/nginx/conf/nginx.conf  
  8. nginxd=/usr/local/nginx/sbin/nginx  
  9. nginx_config=/usr/local/nginx/conf/nginx.conf  
  10. nginx_pid=/var/run/nginx.pid  
  11. RETVAL=0  
  12. prog="nginx"  
  13. # Source function library.  
  14. . /etc/rc.d/init.d/functions  
  15. # Source networking configuration.  
  16. . /etc/sysconfig/network  
  17. # Check that networking is up.  
  18. [ ${NETWORKING} = "no" ] && exit 0  
  19. [ -x $nginxd ] || exit 0  
  20. # Start nginx daemons functions.  
  21. start() {  
  22. if [ -e $nginx_pid ];then  
  23.    echo "nginx already running...."  
  24.    exit 1  
  25. fi  
  26.    echo -n $"Starting $prog: "  
  27.    daemon $nginxd -c ${nginx_config}  
  28.    RETVAL=$?  
  29.    echo  
  30.    [ $RETVAL = 0 ] && touch /var/lock/subsys/nginx  
  31.    return $RETVAL  
  32. }  
  33. # Stop nginx daemons functions.  
  34. stop() {  
  35.         echo -n $"Stopping $prog: "  
  36.         killproc $nginxd  
  37.         RETVAL=$?  
  38.         echo  
  39.         [ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /var/run/nginx.pid  
  40. }  
  41. # reload nginx service functions.  
  42. reload() {  
  43.     echo -n $"Reloading $prog: "  
  44.     #kill -HUP `cat ${nginx_pid}`  
  45.     killproc $nginxd -HUP  
  46.     RETVAL=$?  
  47.     echo  
  48. }  
  49. # See how we were called.  
  50. case "$1" in  
  51. start)  
  52.         start  
  53.         ;;  
  54. stop)  
  55.         stop  
  56.         ;;  
  57. reload)  
  58.         reload  
  59.         ;;  
  60. restart)  
  61.         stop  
  62.         start  
  63.         ;;  
  64. status)  
  65.         status $prog  
  66.         RETVAL=$?  
  67.         ;;  
  68. *)  
  69.         echo $"Usage: $prog {start|stop|restart|reload|status|help}"  
  70.         exit 1  
  71. esac  
  72. exit $RETVAL  

添加脚本到启动列表,并设置开机启动。

  1. [root@wanghualang ~]# chmod 755 /etc/init.d/nginx  
  2. [root@wanghualang ~]# cd /etc/init.d/  
  3. [root@wanghualang init.d]# chkconfig --add nginx  
  4. [root@wanghualang init.d]# chkconfig nginx on  

第六步 测试PHP解析

新建一个PHP测试页面。

  1. [root@wanghualang ~]# vim /usr/local/nginx/htdocs/test.php  

  1. <?php  
  2. echo "www.wanghualang.com";  
  3. ?>  

打开浏览器,输入:http://IP地址/test.php,若能显示“www.wanghualang.com ”,代表解析成功!

给我留言

留言无头像?

×