LNMP环境搭建
linux + Nginx + MySQL + php
PHP是一种脚本语言,当前中国乃至世界上使用PHP语言开发的网站非常普遍
Nginx是一个web服务软件,和apache是一类软件,目前使用nginx的企业越来越多。
MySQL是当前最为流行的小型关系型数据库
和LAMP不同的是LNMP中的N指的是Nginx(类似于Apache的一种web服务软件)其他都一样。目前这种环境应用的也是非常之多。Nginx设计的初衷是提供一种快速高效多并发的web服务软件。在静态页面的处理上Nginx的确胜Apache一筹,然而在动态页面的处理上Nginx并不比Apache有多少优势。但是,目前还是有很多爱好者对Nginx比较热衷,随着Nginx的技术逐渐成熟,它在web服务软件领域的地位越来越高。
安装MySQL
步骤和LAMP中的mysql安装步骤是一模一样的。
1,下载mysql到/usr/local/src/
[root@CentOS100src]#wget http://syslab.comsenz.com/downloads/linux/mysql-5.1.40-linux-x86_64-icc-glibc23.tar.gz
这是64位的包,32位系统要用32位的包:
http://syslab.comsenz.com/downloads/linux/mysql-5.1.40-linux-i686-icciglibc23.tar.gz
2, 解压下载的包
[root@CentOS100 src]# tar -xvzf mysql-5.1.40-linux-x86_64-icc-glibc23.tar.gz
3,把解压的包移动到/usr/local/并改名为mysql
[root@CentOS100 src]# mv mysql-5.1.40-linux-x86_64-icc-glibc23 /usr/local/mysql
4,建立mysql用户
[root@CentOS100 src]# useradd -s /sbin/nologin mysql
5,建立mysql数据库文件夹,并修改所属主和所属组
[root@CentOS100 mysql]# mkdir -p /data/mysql ; chown -R mysql:mysql /data/mysql
6,初始化数据库
[root@CentOS101 mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
./scripts/mysql_install_db 这个文件是数据库文件夹里的文件,--user 定义数据库的所属主, --datadir 定义数据库安装到哪里,建议放到大空间的分区上,这个目录需要自行创建,执行后如果看到两个 “OK” 说明执行正确。出问题可根据问题来解决(最后附问题解决办法!)
7, 拷贝配置文件
[root@CentOS101 mysql]# cp support-files/my-large.cnf /etc/my.cnf
8, 拷贝启动脚本文件并修改其属性
[root@CentOS101 mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@CentOS101 mysql]# chmod 755 /etc/init.d/mysqld
9, 修改启动脚本
[root@CentOS101 mysql]# vim /etc/init.d/mysqld
需要修改的地方有 “datadir=/data/mysql” (前面初始化数据库时定义的目录)
把启动脚本加入系统服务项,并设定开机启动,启动mysql
[root@CentOS101 mysql]# chkconfig --add mysqld
[root@CentOS101 mysql]# chkconfig mysqld on
[root@CentOS101 mysql]# service mysqld start
如果启动不了,到 /data/mysql/ 下查看错误日志,这个日志通常是主机名.err. 检查mysql是否启动的命令为:
[root@CentOS101 mysql]# ps aux |grep mysqld
安装php
这里要先声明一下,针对Nginx的php安装和针对apache的php安装是有区别的,因为Nginx中的php是以fastcgi的方式结合nginx的,可以理解为nginx代理了php的fastcgi,而apache是把php作为自己的模块来调用的。在LNMP中,安装PHP之前必需先安装mysql,其它的没有先后顺序。php官方下载地址: http://www.php.net/downloads.php
1.下载php
[root@CentOS5 src]# wget http://am1.php.net/distributions/php-5.3.27.tar.gz
2.解压php
[root@CentOS5 src]# tar -xvzf php-5.3.27.tar.gz
3.创建相关账户
[root@localhost src]# useradd -s /sbin/nologin php-fpm
4.配置编译参数
[root@localhost src]# cd php-5.3.27
[root@localhost php-5.3.27]# make clean
此命令为了清除之前安装PHP时生成的一些文件,避免与之前的编译混淆。
[root@localhost php-5.3.27]# ./configure --PRefix=/usr/local/php_nginx --with-config-file-path=/usr/local/php_nginx/etc --enable-fpm --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-mcrypt --enable-soap --enable-gd-native-ttf --enable-ftp --enable-mbstring --enable-exif --enable-zend-multibyte --disable-ipv6 --with-pear --with-curl --with-openssl
配置参数里和之前的有些不同,--enable-fpm必需加上,不加无法生成fpm文件。--with-config-file-path是指定php配置文件的路径,即php.ini的路径。
错误信息:
configure: error: Please reinstall the libcurl distribution -
easy.h should be in <curl-dir>/include/curl/
解决办法:
yum install -y libcurl-devel
5.编译php
[root@localhost php-5.3.27]# make
在这一步,通常会遇到一些错误
/usr/bin/ld: cannot find -lltdl
collect2: ld returned 1 exit status
make: *** [sapi/fpm/php-fpm] 错误 1
解决办法:
yum install -y libtool-ltdl-devel
6.安装php
[root@localhost php-5.3.27]# make install
以上每一个步骤,如果没有完全执行正确,那么下一步是无法进行的,是否还记得判断执行是否正确的方法? 使用 echo $? 看结果是否为 “0” , 如果不是,就是没有执行正确。
7.拷贝配置文件
[root@localhost php-5.3.27]# cp php.ini-production /usr/local/php_nginx/etc/php.ini
[root@localhost php-5.3.27]# cp sapi/fpm/php-fpm.conf /usr/local/php_nginx/etc/
保存配置文件后,检验配置是否正确的方法为:
/usr/local/php_nginx/sbin/php-fpm -t
如果出现诸如 “test is successful” 字样,说明配置没有问题。
8.启动php-fpm
先拷贝启动文件 cp /usr/local/src/php-5.3.27/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod 755 /etc/init.d/php-fpm
service php-fpm start
如果想让它开机启动,执行:
chkconfig php-fpm on
检测是否启动:
ps aux |grep php-fpm
netstat -lnp | grep php
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 11265/php-fpm
安装nginx
Nginx官方网站(http://nginx.org), 从官方网站可以看到nginx更新速度很快,这也反映了一个事实,目前使用nginx跑网站的公司或者个人越来越多。
(近期nginx报出一个安全漏洞,影响版本很广 CVE-2013-4547,所以之前的老版本都需要升级一下, 1.4.4, 1.5.7以及往后版本没有问题)
1.下载nginx
cd /usr/local/src/
wget http://nginx.org/download/nginx-1.6.2.tar.gz
2.解压nginx
tar -xvzf nginx-1.6.2.tar.gz
3.配置编译参数
cd nginx-1.4.4
./configure --prefix=/usr/local/nginx --with-pcre
编辑过程中出错:
checking for PCRE library ... not found
checking for PCRE library in /usr/local/ ... not found
checking for PCRE library in /usr/include/pcre/ ... not found
checking for PCRE library in /usr/pkg/ ... not found
checking for PCRE library in /opt/local/ ... not found
缺少pcre ,pcre用来支持正则表达式,解决方法:
yum install -y pcre-devel
4.编译nginx
make
5.安装nginx
make install
因为nginx比较小,所以很快就会安装完,而且也不会出什么错误。
6. 启动nginx,nginx很小巧,本身没有启动服务文件。
/usr/local/nginx/sbin/nginx
查看:ps aux | grep nginx
netstat -lnp | grep nginx
测试:从浏览器直接访问本机IP
7.更改nginx配置
配置文件位置:/usr/local/nginx/conf/nginx.conf
vim /usr/local/nginx/conf/nginx.conf
修改:
events {
worker_connections 4096;
}
这个值一般调成很大的数。
“server { }”相关配置就是虚拟主机,server里面的“location”需要改:
location / {
root /web/123;
index index.html index.htm index.php;
}
root指定虚拟主机的目录,这里换成LAMP时安装的discuz的目录。把下面location和php相关的内容打开,并修改:
location ~ /.php$ {
root /web/123;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /web/123$fastcgi_script_name;
include fastcgi_params;
保存配置后,先检验一下配置文件是否有错误存在:
/usr/local/nginx/sbin/nginx -t
如果显示内容如下,则配置正确,否则需要根据错误提示修改配置文件:
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
重新加载nginx:
/usr/local/nginx/sbin/nginx -s reload
如果不能启动,请查看 “/usr/local/nginx/logs/error.log” 文件
新闻热点
疑难解答