LNMP环境搭建及应用
一、LNMP简介
LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。
Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统。代表版本有:debian、centos、ubuntu、fedora、gentoo等。
Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。
Mysql是一个小型关系型数据库管理系统。
PHP是一种在服务器端执行的嵌入HTML文档的脚本语言。
这四种软件均为免费开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系统。
二、LNPM优点
作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率。
作为负载均衡服务器:Nginx 既可以在内部直接支持Rails和PHP,也可以支持作为 HTTP代理服务器对外进行服务。Nginx 用C编写,不论是系统资源开销还是CPU使用效率都比Perlbal要好的多。
作为邮件代理服务器:Nginx同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last/fm 描述了成功并且美妙的使用经验。
Nginx 安装非常的简单,配置文件非常简洁(还能够支持perl语法)。Nginx支持平滑加载新的配置,还能够在不间断服务的情况下进行软件版本的升级。
三、LNPM环境搭建
LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构,所以LNPM环境的搭建就是在Linux系统上安装nginx、MySQL和php,具体安装如下:
1、MySQL安装
首先到官网上下载mysql的软件包,然后使用ftp工具上传到根目录下(在上一篇已提过),上传后解压安装,这里所使用的软件包是二进制mysql-5.6.15-linux-glibc2.5-x86_64.tar.gz,具体安装步骤如下:
① 现在卸载本机自带的mysql和mysql-server,然后安装mysql安装时所需的一些组件。
//卸载mysql和mysql-server
[root@huangzhong ~]# yum remove mysql mysql-server
//安装mysql所需的组件
[root@huangzhong ~]# yum install libaio
② 拆包
因为mysql安装包为二进制安装包,所以把该软件包解压到/usr/local/目录下:
[root@huangzhong ~]# tar -zxvf mysql-5.6.15-linux-glibc2.5-x86_64.tar.gz -C /usr/local/
③ 进入解压的目录下为了方便操作创建软连接,然后创建mysql用户和mysql组,并且把mysql用户加入mysql组(解压后如果你不知道怎么操作可以到该文件解压后的目录下查看安装说明文件INSTALL-BINARY)。
//创建软连接
[root@huangzhong local]# ln -s mysql-5.6.15-linux-glibc2.5-x86_64/ mysql
//创建用户组(在创建时可能会显示已有,因为原来自带mysql已创建)
[root@huangzhong mysql]# groupadd -r mysql
//创建用户并加入mysql组
[root@huangzhong mysql]# useradd -r -g mysql mysql
④ 进入创建好软连接mysql的目录下,查看该目录下文件,然后改变该目录下所有对象的所有者和所属组,然后进行初始化产生库文件,最后在把该目录下除data外所有对象的所有者改变回来,所属组不变。
//进入创建好软连接mysql的目录下
[root@huangzhong local]# cd mysql
//改变该目录下的所有对象的所属者和所属组
[root@huangzhong mysql]# chown -R mysql:mysql . //点代表当前目录下所有
//进行初始化产生库文件
[root@huangzhong mysql]# ./scripts/mysql_install_db --user=mysql
//初始化完后进入查看data目录下可以看到已经产生了许多库文件
[root@huangzhong mysql]# ll data/ //查看产生的库文件
//改回该目录下除data外所有对象的所有者
[root@huangzhong mysql]# chown -R root .
[root@huangzhong mysql]# chown -R mysql data/ //因为data目录下存放数据文件,为了能够读取和写入改变所有者为mysql或者给所属组可读写的权限。
⑤ 为了mysql能够正常的配置控制,所以要给予一个控制脚本和配置文件,因此需要以下操作:
//把该目录下的my.cnf拷贝到/etc目录下生成mysql server配置文件
[root@huangzhong mysql]# cp my.cnf /etc/ //覆盖掉旧文件
//把support-files目录下mysql.server拷贝到/etc/init.d目录下改名为mysqld,进而产生mysql-server控制脚本
[root@huangzhong mysql]# cp support-files/mysql.server /etc/init.d/mysqld
//为了能够执行脚本所以要给予可执行权限
[root@huangzhong mysql]# chmod a+x /etc/init.d/mysqld
⑥ 启动mysql服务,查看端口,并且加入chkconfig管理,开启开机自动启动。
//启动mysql服务
[root@huangzhong mysql]# service mysqld start
Starting MySQL... [ OK ]
//查看mysql的端口号
[root@huangzhong mysql]# netstat -tupln |grep mysql
tcp 0 0 :::3306 :::* LISTEN 19756/mysqld //从这里可以看到mysql端口号已开启,切端口号为3306
//加入chkconfig管理中
[root@huangzhong mysql]# chkconfig --add mysqld
//启动开机自启
[root@huangzhong mysql]# chkconfig mysqld on
⑦ 接下来进行后续操作首先改变 PATH变量,接着改变mysql库文件的输出,最后操作man手册搜索路径
//改变 PATH变量,编辑/etc/profile文件
[root@huangzhong mysql]# vim /etc/profile
//编辑完后,重新读取以下该文件或重启服务
[root@huangzhong mysql]# . /etc/profile
//改变mysql库文件的输出,操作如下:
[root@huangzhong mysql]# echo "/usr/local/mysql/lib" > /etc/ld.so.conf.d/mysql.conf
[root@huangzhong mysql]# ldconfig //刷新加载缓存
//改变mysql在man手册中的搜索路径
[root@huangzhong mysql]# echo "MANPATH /usr/local/mysql/man" >>/etc/man.conf
⑧ 连接mysql查看能否连接,进去后查看数据库,由于初始时管理员没有密码为了安全还需要给管理员设置密码。
//连接mysql,然后查看数据库,具体如下:
//给管理员设置密码
[root@huangzhong ~]# mysqladmin -u root -p password '123'
Enter password: //这里让输入密码,因为初始没有所以直接回车
到此mysql源码的安装已完成。
2、nginx安装
首先到官网上下载nginx的软件包,然后使用ftp工具上传到根目录下(在上一篇已提过),上传后解压安装,这里使用的是nginx-1.6.0.tar.gz源码安装包,由于nginx的安装用到两个库所以还需要安装pcre-devel软件库和libevent库文件,具体安装如下:
⑴ 在安装Nginx之前,确保系统已经安装了pcre-devel软件库。因此,先安装该库文件,把光盘挂在上安装。
//挂在光盘
[root@huangzhong ~]# mount /dev/cdrom /media/cdrom
//使用yum进行安装
[root@huangzhong Packages]# yum install pcre-devel-7.8-6.el6.x86_64.rpm
⑵ 安装libevent库文件
//解压安装包
[root@huangzhong ~]# tar -zxvf libevent-2.0.21-stable.tar.gz -C /usr/local/src/
//进入解压后目录下进行编译
[root@huangzhong ~]# cd /usr/local/src/libevent-2.0.21-stable/
[root@huangzhong libevent-2.0.21-stable]# ./configure --prefix=/usr/local/libevent //指出安装目录
//执行make和make install
[root@huangzhong libevent-2.0.21-stable]# make && make install
//编辑/etc/ld.so.conf.d/libevent.conf指明/usr/local/libevent/lib路径
[root@huangzhong lib]# vim /etc/ld.so.conf.d/libevent.conf
//编辑完后重新加载读取
[root@huangzhong lib]# ldconfig
//查看是否生效
[root@huangzhong lib]# ldconfig -pv |grep libevent
⑶ 安装配置nginx
//解压安装包 [root@huangzhong ~]# tar -zxvf nginx-1.6.0.tar.gz -C /usr/local/src/ //进入解压后的目录进行编译 [root@huangzhong nginx-1.6.0]# ./configure \ > --conf-path=/etc/nginx/nginx.conf \ > --error-log-path=/var/log/nginx/error.log \ > --http-log-path=/var/log/nginx/access.log \ > --pid-path=/var/run/nginx/nginx.pid \ > --lock-path=/var/lock/nginx.lock \ > --user=nginx \ > --group=nginx \ > --with-http_ssl_module \ > --with-http_flv_module \ > --with-http_stub_status_module \ > --with-http_gzip_static_module \ > --http-client-body-temp-path=/var/tmp/nginx/client/ \ > --http-proxy-temp-path=/var/tmp/nginx/proxy/ \ > --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \ > --with-pcre //执行make和make install [root@huangzhong nginx-1.6.0]# make && make install //创建组和账号,并把账号加入到组 [root@huangzhong ~]# groupadd -r nginx [root@huangzhong ~]# useradd -r -g nginx nginx //进行语法检测 [root@huangzhong ~]# cd /usr/local/nginx/sbin/ [root@huangzhong sbin]# ./nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: [emerg] mkdir() "/var/tmp/nginx/client/" failed (2: No such file or directory) //显示缺少此目录 nginx: configuration file /etc/nginx/nginx.conf test failed //创建目录 [root@huangzhong sbin]# mkdir -pv /var/tem/nginx/client //然后启动,并查看端口 [root@huangzhong sbin]# ./nginx [root@huangzhong sbin]# netstat -tupln |grep nginx tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 10418/nginx 然后通过网页访问进行测试,看能否访问到,在访问前首先要关闭防火墙和selinux。 //关闭防火墙和selinux [root@huangzhong sbin]# service iptables stop [root@huangzhong sbin]# chkconfig iptables off //永久关闭 [root@huangzhong sbin]# setenforce 0
通过网页进行访问结果如下:
//编辑nginx控制脚本文件,编辑如下:
[root@huangzhong ~]# cd /etc/init.d/
[root@huangzhong init.d]# touch nginx
[root@huangzhong init.d]# chmod a+x nginx
[root@huangzhong init.d]# vim nginx
//把nginx进程杀死
[root@huangzhong init.d]# pkill nginx
//使用控制脚本启动,并查看端口
[root@huangzhong ~]# service nginx start
the nginx server is starting ......... OK
[root@huangzhong ~]# netstat -tupln |grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 44942/nginx
//把nginx服务加入开机启动管理项,并开启永久启动
[root@huangzhong init.d]# chkconfig --add nginx
[root@huangzhong init.d]# chkconfig nginx on
3、php安装
先到官网www.php.net上下载PHP的软件包,然后使用ftp工具上传到根目录下(在上一篇已提过),上传后解压安装,这里所使用的软件包是 php-5.5.8.tar.bz2,具体安装步骤如下:
① 拆解PHP安装包
[root@huangzhong ~]# tar -jxvf php-5.5.8.tar.bz2 -C /usr/local/src/
② 进入解压后的目录下,执行./configure进行编译
//进入解压后的目录
[root@huangzhong ~]# cd /usr/local/src/php-5.5.8/
//执行./configure进行编译
[root@huangzhong ~]# cd /usr/local/src/php-5.5.8/
[root@huangzhong php-5.5.8]# ./configure \
> --prefix=/usr/local/php \
> --enable-fpm \
> --enable-sockets \
> --with-mysql=/usr/local/mysql \
> --mysqli=/usr/local/mysql/bin/mysql_config \
> --enable-mbstring \
> --enable-xml \
> --with-png-dir \
> --with-jpeg-dir \
> --with-zlib \
> --with-freetype-dir \
> --with-config-file-path=/etc/php \
> --with-config-file-scan-dir=/etc/php5.d
③ 执行make和make install
[root@huangzhong php-5.5.8]# make && make install
④ 因为在执行编译时参数中指定了/etc目录下的文件php和php5.d所以在/etc目录下创建php和php5.d目录
[root@huangzhong php]# mkdir -pv /etc/php /etc/php5.d
//把解压后的目录下php.ini-development拷贝到/etc/php/下
[root@huangzhong php-5.5.8]# cp php.ini-production /etc/php/php.ini
⑤ 为了能够PHP独立运行,应给予一个控制服务脚本,具体操作如下:
//把解压后目录下的sapi/fpm目录下的init.d.php-fpm脚本文件拷贝到/etc/init.d/目录下命名为php-fpm
[root@huangzhong fpm]# cp init.d.php-fpm /etc/init.d/php-fpm
//给予控制脚本可执行权限
[root@huangzhong fpm]# chmod a+x /etc/init.d/php-fpm
//产生php-fpm的配置文件
[root@huangzhong ~]# cd /usr/local/php/etc
[root@huangzhong etc]# cp php-fpm.conf.default php-fpm.conf
⑥启动PHP服务,病查看端口号
//启动PHP服务
[root@huangzhong etc]# service php-fpm start
//查看端口号
[root@huangzhong etc]# netstat -tupln |grep php
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 34703/php-fpm //可以看出php服务已开启端口号为9000
//加入开机管理服务
[root@huangzhong etc]# chkconfig --add php-fpm
//开启永久启动
[root@huangzhong etc]# chkconfig php-fpm on
4、nginx与php以及xcache的结合
(1)编辑nginx的配置文件
[root@huangzhong ~]# vim /etc/nginx/nginx.conf
//重新启动nginx服务
[root@huangzhong ~]# service nginx restart
(2)测试nginx与php的结合
//首先到/usr/local/nginx/html/下创建测试页面如下
[root@huangzhong ~]# cd /usr/local/nginx/html/
[root@huangzhong html]# vim index.php
//通过页面访问测试页面如下:
(3)xcache的安装
在安装XCache前,首先到官网上该软件安装包,然后把安装包上传到根目录下,最后进行安装。
//解压安装包
[root@huangzhong ~]# tar -zxvf xcache-3.1.0.tar.gz -C /usr/local/src
//进入解压后的目录下找到安装说明文件INSTALL
[root@huangzhong htdocs]# cd /usr/local/src/xcache-3.1.0/
//打开INSTALL文件查看安装说明如下:
[root@huangzhong xcache-3.1.0]# vim INSTALL
//按照安装说明初始化产生config文件
[root@huangzhong xcache-3.1.0]# /usr/local/php/bin/phpize
//产生config后进行编译文件
[root@huangzhong xcache-3.1.0]# ./configure \--enable-xcache --with-php-config=/usr/local/php/bin/php-config
//编译后执行make和make install
[root@huangzhong xcache-3.1.0]# make && make install
//把xcache.ini拷贝到/etc/php5.d/中
[root@huangzhong xcache-3.1.0]# cp xcache.ini /etc/php5.d/
//然后编辑/etc/php5.d/xcache.ini如下:
[root@huangzhong xcache-3.1.0]# vim /etc/php5.d/xcache.ini
//编辑完后重新启动httpd服务
[root@huangzhong xcache-3.1.0]# service httpd restart
//然后通过网页访问index.php查看xcache是否应用具体如下:
(4)XCache的web界面的管理
Xcache安装完后进入安装目录下,看到一个htdocs目录,然后把该目录下的文件拷贝到/usr/local/apache/htdocs/目录下命名为admin。
//进入安装目录下
[root@huangzhong htdocs]# cd /usr/local/src/xcache-3.1.0/
//拷贝htdocs下文件
[root@huangzhong xcache-3.1.0]# cp -r htdocs/ /usr/local/nginx/html/admin
//然后切换到/usr/local/apache/htdocs/目录下
[root@huangzhong xcache-3.1.0]# cd /usr/local/apache/htdocs/
//然后通过页面进行访问,具体如下:
//需要身份验证所以要编辑文件/etc/php5.d/xcache.ini,编辑如下:
[root@huangzhong htdocs]# vim /etc/php5.d/xcache.ini
//输入用户名admin,密码123登陆查看结果如下:
从图上可以看到已经可以通过页面进行管理xcache了。