LNMP(一)
LNMP环境搭建
LNMP 是一套技术的组合
· L 代表服务器操作系统使用Linux
· N 代表Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。
· M代表网站后台使用的数据库时MySQL数据库
· P代表网站是使用PHP/Perl/Python等语言开发
首先 Nginx 服务是不能处理动态请求,那么当用户发起动态请求时, Nginx 又是如何进行处理的。
当用户发起 http 请求,请求会被 Nginx 处理,如果是静态资源请求 Nginx 则直接返回,如果是动态请求 Nginx 则通过 fastcgi 协议转交给后端的 PHP 程序处理,具体如下图所示。、
LNMP特点:
LNMP动态网站部署架构是一套由Linux + Nginx + MySQL + PHP组成的动态网站系统解决方案,具有免费、高效、扩展性强且资源消耗低等优良特性
Nginx是一款相当优秀的用于部署动态网站的轻量级服务程序,它最初是为俄罗斯门户站点而开发的,因其稳定性、功能丰富、占用内存少且并发能力强而备受用户的信赖。目前国内诸如新浪、网易、腾讯等门户站点均已使用了此服务。
Nginx服务程序的稳定性源自于采用了分阶段的资源分配技术,降低了CPU与内存的占用率,所以使用Nginx程序部署的动态网站环境不仅十分稳定、高效,而且消耗的系统资源也很少。此外,Nginx具备的模块数量与Apache具备的模块数量几乎相同,而且现在已经完全支持proxy、rewrite、mod_fcgi、ssl、vhosts等常用模块。更重要的是,Nginx还支持热部署技术,可以7×24不间断提供服务,还可以在不暂停服务的情况下直接对Nginx服务程序进行升级。
1.安装MySQL
(1)下载MySQL安装包,
mysql-5.6.43-linux-glibc2.12-x86_64.tar
(2)解压
tar –zxvf mysql-5.6.47-linux-glibc2.12-x86_64.tar.gz –C /usr/local/src
所有压缩包都放在/usr/local/src目录下,方便统一管理
(3)将解压完的数据移动到/usr/local/mysql,存放MySQL的一些脚本配置文件。
mv mysql-5.6.47-linux-glibc2.12-x86_64 /usr/local/mysql
(4)创建MySQL数据库的用户
[[email protected] mysql]# useradd -s /sbin/nologin mysql
(5)定义数据库安装位置,数据存放位置存放数据的目录赋予他用户组和用户的权限
[[email protected] local]# mkdir -p /data/mysql; chown -R mysql: mysql /data/mysql
(6)看一下我的目录的所属属性是什么:
[[email protected] local]# ls -la /data/mysqll
显示SUCCESS就成功了
2.安装 PHP
(1)解压
#cd /usr/local/src
#[[email protected] src]# tar -zxvf php-5.6.24.tar.gz
(2)安装与配置
# yum install -y libxml2-devel
# yum install -y openssl openssl-devel
# yum install -y bzip2 bzip2-devel
# yum install -y libpng libpng-devel
# yum install -y freetype freetype-devel
# yum install -y epel-release
# yum install -y libmcrypt-devel
#yum -y install libjpeg-devel
#yum install -y libcurl-devel
#yum installl -y gcc
#useradd -s /sbin/nologin php-fpm(新建一个用户)
#cd php-5.6.24
编译文件
./configure --prefix=/usr/local/php-fpm
--with-config-file-path=/usr/local/php-fpm/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-openssl
(3)安装配置
make && make insatll (时间会很久)
(4)可以看到/sur/local/目录下多了一个php-fpm文件
Php-fpm目录下多了一个sbin和var目录
(5)将php-ini做一个拷贝
[[email protected] local]# cp /usr/local/src/php-5.6.24/php.ini-production /usr/local/php-fpm/etc/php.ini
(6)接下来我们写一个php-fpm.conf文件
[[email protected] etc]# vim php-fpm.conf
往里添加代码
· [global] //全局定义
· pid = /usr/local/php-fpm/var/run/php-fpm.pid
· error_log = /usr/local/php-fpm/var/run/php-fpm.log
· [www] //模块名字
· listen = /tmp/php-fcgi.sock
· listen.mode = 666
· user = php-fpm
· group = php-fpm
· pm = dynamic
· 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
(7)复制一个启动脚本
[[email protected] php-5.6.24]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
(8) 将它加入到服务列表里设置开机自启,并且修改启动脚本,755权限
[[email protected] php-5.6.24]# chkconfig --add php-fpm
[[email protected] php-5.6.24]# chkconfig php-fpm on
[[email protected] php-5.6.24]# chmod 755 /etc/init.d/php-fpm
(9)检查一下配置文件有没有错
[[email protected] php-5.6.24]# cd /usr/local/php-fpm/
[[email protected] php-fpm]# sbin/php-fpm -t
- 启动一下服务
[[email protected] php-fpm]# service php-fpm start
启动成功
显示进程
ps -ef | grep php-fpm
3.安装 Nginx
(1)解压安装包,统一放在/usr/local/src/目录下
[[email protected] src]# tar -zxvf nginx-1.16.1.tar.gz
(2)编译文件 安装make
[[email protected] nginx-1.16.1]# ./configure --prefix=/usr/local/nginx
[[email protected] nginx-1.16.1]# make && make install
(3)编辑一个启动脚本
[[email protected] nginx-1.16.1]# vim /etc/init.d/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
(5)设置开机自启,并且修改启动脚本,755权限
[[email protected] nginx-1.16.1]# chmod 755 /etc/init.d/nginx
[[email protected] nginx-1.16.1]# chkconfig --add nginx
[[email protected] nginx-1.16.1]# chkconfig nginx on
(6)配置另外一个配置文件
因为我们不使用它自带的,所以我们拷贝一下然后重新配置
[[email protected] conf]# mv nginx.conf nginx.conf.default
[[email protected] conf]# vim nginx.conf
添加以下内容
user nobody nobody;
worker_processes 2;
error_log /usr/local/nginx/logs/nginx_error.log crit;
pid /usr/local/nginx/logs/nginx.pid;
worker_rlimit_nofile 51200;
events
{
use epoll;
worker_connections 6000;
}
http
{
include mime.types;
default_type application/octet-stream;
server_names_hash_bucket_size 3526;
server_names_hash_max_size 4096;
log_format combined_realip '$remote_addr $http_x_forwarded_for [$time_local]'
' $host "$request_uri" $status'
' "$http_referer" "$http_user_agent"';
sendfile on;
tcp_nopush on;
keepalive_timeout 30;
client_header_timeout 3m;
client_body_timeout 3m;
send_timeout 3m;
connection_pool_size 256;
client_header_buffer_size 1k;
large_client_header_buffers 8 4k;
request_pool_size 4k;
output_buffers 4 32k;
postpone_output 1460;
client_max_body_size 10m;
client_body_buffer_size 256k;
client_body_temp_path /usr/local/nginx/client_body_temp;
proxy_temp_path /usr/local/nginx/proxy_temp;
fastcgi_temp_path /usr/local/nginx/fastcgi_temp;
fastcgi_intercept_errors on;
tcp_nodelay on;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 8k;
gzip_comp_level 5;
gzip_http_version 1.1;
gzip_types text/plain application/x-javascript text/css text/htm
application/xml;
server
{
listen 80;
server_name localhost;
index index.html index.htm index.php;
root /usr/local/nginx/html;
location ~ \.php$
{
include fastcgi_params;
fastcgi_pass unix:/tmp/php-fcgi.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
}
}
}
(7)检查配置文件
[[email protected] nginx]# sbin/nginx -t
(8)启动服务
[[email protected]nginx sbin]# /usr/local/nginx/sbin/nginx -s reload
会出现报错
nginx: [error] invalid PID number "" in "/usr/local/nginx/logs/nginx.pid"
在运行下面这条命令就好了
[[email protected]nginx sbin]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
(9)查看服务
ps -aux | grep nginx
(10)curl命令localohst
(11)自己编辑一个文件curl运行一下
解析成功