LNMP 是 Linux+ Nginx+ MySQL +PHP 的简称。先安装mysql;然后是php,php使用fast-cgi的方式运行;最后安装Nginx。
安装平台:CentOS6.7 X86_64
MySql版本:mysql-5.6.27
MySql安装目录:/usr/local/mysql
MySql数据库存放目录:/data/mysql
MySql的用户和组:mysql:mysql
MySql源码存放目录:/usr/local/src
安装前的准备:
( 1 )、关闭 selinux
vim /etc/selinux/config
SELINUX=enforcing ##加#注释
SELINUX=disabled ##增加
保存退出,然后重启系统,如果不重启,可临时关闭使用命令:
setenforce 0
( 2 )、添加好防火墙规则到 /etc/sysconfig/iptables
# vim /etc/sysconfig/iptables
-A INPUT -m state --stateNEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -m state --stateNEW -m tcp -p tcp --dport 80 -j ACCEPT保存退出,重启iptables
/etc/init.d/iptables restart
1 、安装 mysql
1 )、下载 mysql, 这里使用的是免编译的安装包,下载地址:
ftp://ftp.jaist.ac.jp/pub/mysql/Downloads/MySQL-5.6/mysql-5.6.27-linux-glibc2.5-x86_64.tar.gz
这是 mysql 官网提供的一个镜像站点。
首先进入 /usr/local/src 目录,使用 wget 命令下载
# wget -c ftp://ftp.jaist.ac.jp/pub/mysql/Downloads/MySQL-5.6/mysql-5.6.27-linux-glibc2.5-x86_64.tar.gz2 )、解压下载的 mysql 安装包,然后把解压的文件移动到 /usr/local/mysql (移动重命名)
# tarzxvfmysql-5.6.27-linux-glibc2.5-x86_64.tar.gz
# mv mysql-5.6.27-linux-glibc2.5-x86_64/usr/local/mysql3 )、创建用户 mysql 数据库的用户和用户组 mysql ,并且这个用户是无需登录系统。
# groupaddmysql ##创建mysql组
# useradd -s /sbin/nologin -g mysql mysql ##创建mysql用户加入mysql组,不允许登录4 )、创建用于存放 mysql 数据库的目录,并且把所有者和所属组设置为 mysql
# mkdir -p /data/mysql ##创建存放mysql数据库的目录
# chown -R mysql:mysql /data/mysql/ ##修改属主和数组
5 )、初始化数据库,在 mysql 的安装目录下 /usr/local/mysql
# cd /usr/local/mysql/ ##进入mysql安装目录
#./scripts/mysql_install_db --user=mysql --datadir=/data/mysql/ ##初始化数据库--user=mysql ## 指定数据库的所属主
--datadir=/data/mysql/ ## 指定数据库的数据库文件的存放目录
安装过程中的错误:
Installing MySQL systemtables..../bin/mysqld: error while loading shared libraries: libaio.so.1:cannot open shared object file: No such file or directory
提示缺少了 shared libraries: libaio.so ,那就安装不上,如下:
# yuminstall libaio然后继续执行上面的安装命令。 如果看到了两个 ok ,则表明 mysql 已经安装成功了。
6 )、拷贝配置文件 my.cnf
# pwd
/usr/local/mysql
# cpsupport-files/my-default.cnf /etc/my.cnf ##拷贝配置文件
cp:是否覆盖"/etc/my.cnf"? y7 )、拷贝启动脚本并修改其属主和数组。
# cpsupport-files/mysql.server/etc/init.d/mysqld ##拷贝启动文件
# chmod755 /etc/init.d/mysqld ##修改权限,增加执行权限8 )、修改启动脚本 /etc/init.d/mysqld ,并把启动脚本加入到系统服务,设置开机启动。
# vim/etc/init.d/mysqld
# 找到:
basedir=
datadir=
# 修改为:
basedir=/usr/local/mysql ##mysql数据库的安装目录
datadir=/data/mysql ##mysql数据库的存放目录
#chkconfig --addmysqld ##把mysqld添加到系统服务
#chkconfig mysqldon ##设置为开机启动9 )、启动 mysql 数据库
#/etc/init.d/mysqldstart
StartingMySQL............................................. SUCCESS!
为了验证,我们可以使用 ps 和 netstat 查看启动的进程和开启的端口号。
# ps aux|grep mysql|grep -v grep
root 3541 0.0 0.1 106192 1524 pts/2 S 12:38 0:00 /bin/sh/usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql--pid-file=/data/mysql/balichvm.org.pid
mysql 3656 19.1 44.7 1011064 603915pxs/2 Sl 12:38 0:45 /usr/local/mysql/bin/mysqld--basedir=/usr/local/mysql --datadir=/data/mysql--plugin-dir=/usr/local/mysql/lib/plugin --user=mysql--log-error=/data/mysql/balichvm.org.err--pid-file=/data/mysql/balichvm.org.pid
# netstat-lnp |grep mysql|grep -v grep
tcp 0 0:::3306 :::* LISTEN 3656/mysqld
unix 2 [ ACC ] STREAM LISTENING 32648 3656/mysqld /tmp/mysql.sock10 )、将 mysql 的安装目录加入到环境变量,这是为了方便使用(如果不加,要登录 mysql 需要写全路径)
# vim/etc/profile # 编辑环境变量配置文件
exportPATH=$PATH:/usr/local/mysql/bin#source/etc/profile ##刷新一次环境变量11 )、登录 mysql 、修改 mysql 密码
登录 mysql 的方法可以使通过 ip/ 端口或者是 socket 的方式登录。
ip/端口的方式:mysql –Hhostname –Pport –uuser–ppasswd
socket的方式:mysql –S socketdir –uuser –ppasswd修改 mysql 的密码:
#mysqladmin -uroot password 'fgjh123.' ##设置密码为fgjh123.
mysql 完成安装。
2 、安装php
PHP 版本:php-5.6.13
安装目录:/usr/local/php56
php 用户:php-fpm
1 )、下载php,地址是:http://cn2.php.net/distributions/php-5.6.13.tar.bz2
# pwd
/usr/local/src
# wget http://cn2.php.net/distributions/php-5.6.13.tar.bz22 )、解压php
# tar -jxvf php-5.6.13.tar.bz23 )、创建安装php的数据存放目录/usr/local/php56,创建php运行的用户php-fpm,并且该用户不需要登录系统;
# mkdir/usr/local/php56
# groupadd php-fpm
# useradd -s /sbin/nologin -M -g php-fpm php-fpm 4 )、配置编译参数
#./configure --prefix=/usr/local/php56--with-config-file-path=/usr/local/php56/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 --disable-ipv6 --with-pear --with-curl--with-openssl5 )、编译(make)和安装(make install)
# make && make install6 )、拷贝php的配置文件php.ini到/usr/local/php56/etc/php.ini.
#cp php.ini-production /usr/local/php56/etc/php.ini
7 )、拷贝php-fpm的配置文件php-fpm.conf
#cd /usr/local/php56/etc/
# cp php-fpm.conf.default php-fpm.conf # vim php-fpm.conf
增加或者修改如下配置
[global] #全局配置
pid =/usr/local/php56/var/run/php-fpm.pid #pid
error_log = /usr/local/php56/var/log/php-fpm.log #错认日志
[www] #资源池,一般一个网站用一个池
listen =127.0.0.1:9000 #资源池的监听形式,也有用socket的形式。
user = php-fpm #以那个用户运行
group = php-fpm #以那个组运行
#以上这三行默认存在,不需要修改
pm = dynamic #控制子进程的形式有动态(dynamic)和静态(static)
# 默认存在,不行修改
pm.max_children = 50 #子进程最大数
pm.start_servers = 20 #启动时的进程数
pm.min_spare_servers =5 #保证空闲的进程数最小值,如果空闲进程小于此值,则创建新的子进程
pm.max_spare_servers =35 #保证空闲进程数最大值,如果空闲进程大于此值,此进行清理
上面默认存在,修改数值
pm.max_requests = 500 #设置每个子进程重生之前服务的请求数
rlimit_files = 1024 #设置文件打开描述符的rlimit限制 保存,退出。
#/usr/local/php56/sbin/php-fpm –t ##检查配置文件是否有错误。
[02-Nov-2015 23:48:47]NOTICE: configuration file /usr/local/php56/etc/php-fpm.conf test is successful8 )、拷贝启动脚本php-fpm,修改权限,并加入系统服务
# cp /usr/local/src/php-5.6.13/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
# chmod 755 /etc/init.d/php-fpm
# chkconfig --add php-fpm
# chkconfig --level 35 php-fpm on9 )、启动php-fpm进程。
# servicephp-fpm start
Starting php-fpm done
# netstat-lnp |grep -v grep|grep php-fpm
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 61542/php-fpm
3 、安装Nginx
Nginx 安装版本:nginx-1.8.0
Nginx 安装目录:/usr/local/nginx
Nginx 是由俄罗斯软件工程师Igor Sysoev开发的一个高性能的HTTP和反向代理服务器,具备IMAP/POP3和SMTP服务器功能。Nginx最大的特点是对高并发的支持和高效的负载均衡,在高并发的需求场景下,是Apache服务器不错的替代品。其官网是:http://nginx.org/
1 )、下载和解压ngxin,http://nginx.org/download/nginx-1.8.0.tar.gz
# wget -c http://nginx.org/download/nginx-1.8.0.tar.gz
# tar- zxvf nginx-1.8.0.tar.gz2 )、配置编译参数
#./configure \
>--prefix=/usr/local/nginx \
>--with-http_realip_module \
> --with-http_sub_module\
>--with-http_gzip_static_module \
> --with-http_stub_status_module\
> --with-pcre \
> --with-http_ssl_module3 )、编译(make)和安装(make install)
#make && make install
4 )、编写nginx的启动和关闭脚本,然后启动Nginx服务。
#cd /usr/local/nginx/
# ls
conf html logs sbin
]# vim/etc/init.d/nginx ## 编写nginx启动、关闭脚本
#!/bin/bash
# chkconfig: - 30 21
# description: http service.
# Source Function Library
. /etc/init.d/functions
# Nginx Settings
NGINX_SBIN="/usr/local/nginx/sbin/nginx"
NGINX_CONF="/usr/local/nginx/conf/nginx.conf"
NGINX_PID="/usr/local/nginx/logs/nginx.pid"
RETVAL=0
prog="Nginx"
start() {
echo -n $"Starting $prog: "
mkdir -p /dev/shm/nginx_temp
daemon $NGINX_SBIN -c $NGINX_CONF
RETVAL=$?
echo
return $RETVAL
}
stop() {
echo -n $"Stopping $prog: "
killproc -p $NGINX_PID $NGINX_SBIN-TERM
rm -rf /dev/shm/nginx_temp
RETVAL=$?
echo
return $RETVAL
}
reload(){
echo -n $"Reloading $prog: "
killproc -p $NGINX_PID $NGINX_SBIN -HUP
RETVAL=$?
echo
return $RETVAL
}
restart(){
stop
start
}
configtest(){
$NGINX_SBIN -c $NGINX_CONF -t
return 0
}
case "$1" in
start)
start
;;
stop)
stop
;;
reload)
reload
;;
restart)
restart
;;
configtest)
configtest
;;
*)
echo $"Usage: $0{start|stop|reload|restart|configtest}"
RETVAL=1
esac
exit $RETVAL保存,退出,更改权限,添加到系统服务列表,设置开机启动
# chmod755 /etc/init.d/nginx
# chkconfig --add nginx
# chkconfig --level 35 nginx on 启动Nginx
#service nginx start
正在启动 Nginx: [确定]
# psaux |grep -v grep |grep nginx
root 65527 0.0 0.1 44612 1040 ? Ss 03:17 0:00 nginx: master process /usr/local/nginx/sbin/nginx -c/usr/local/nginx/conf/nginx.conf
nobody 65528 0.0 0.1 45040 1632 ? S 03:17 0:00 nginx: worker process
#netstat -lnp|grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 65527/nginx
4 、nginx结合php
1 )、编辑nginx的配置文件/usr/local/nginx/conf/nginx.conf,修改或者增加如下:
# vim /usr/local/nginx/conf/nginx.conf
user php-fpm php-fpm; ##首行默认注释,修改为php-fpm的用户。
index index.html index.htm index.php; ##增加index.php,对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 /usr/local/nginx/html/$fastcgi_script_name;
include fastcgi_params;
}
找到上面的那一段,把从location开始部分有#号注释的去掉。最后保存配置文件。然后重启nginxs
#service nginx restart
停止 Nginx: [确定]
正在启动 Nginx: [确定]
2 )、编辑php文件测试phpd的解析,nginx的默认网站根目录在/usr/local/nginx/html 目录下。
# vim /usr/local/nginx/html/info.php
<?php
phpinfo();
?>
保存 :wq,然后使用浏览器或者curl测试。
# curl-I localhost/ino.php
HTTP/1.1 200 OK
Server: nginx/1.8.0
Date: Mon, 02 Nov 201519:44:29 GMT
Content-Type: text/html;charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/5.6.13
已经正常解析了。LNMP环境搭 建完成。
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com