LNMP架构
LNMP架构介绍
lnmp里的php会启动一个服务,nginx把用户请求的php交给php-fpm处理,比如登录网站php要和mysql做交互,查用户的账号和密码,处理完之后,php-fpm会告诉nginx,nginx返回给用户一个结果。Nginx对于一些静态请求就自己处理了,不需要交给php处理。
MySQL安装
1.如果之前安装过mysql先将mysql删除掉
[root@bogon ~]# cd /usr/local/src/
[root@bogon src]# ls
apr-1.6.3 httpd-2.4.28 mongodb-linux-x86_64-rhel70-3.2.9.tgz php-7.1.6
apr-1.6.3.tar.gz httpd-2.4.28.tar.gz mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz php-7.1.6.tar.gz
apr-util-1.6.1 mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz php-5.6.30 phpredis-develop
apr-util-1.6.1.tar.gz mongodb-linux-x86_64-rhel70-3.2.9 php-5.6.30.tar.gz phpredis-develop.zip
[root@bogon src]# rm -rf /usr/local/mysql
[root@bogon src]# rm -rf /etc/init.d/mysqld
[root@bogon src]#
2.wget下载源码包,解压
[root@bogon src]# tar -zxvf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
3.移动目录
[root@bogon src]# mv mysql-5.6.35-linux-glibc2.5-x86_64 /usr/local/mysql
[root@bogon src]# ls /usr/local/mysql/
bin COPYING data docs include lib man mysql-test README scripts share sql-bench support-files
[root@bogon src]#
4.添加mysql用户(因为之前添加过了就不用再useradd了),删除之前的mysql文件
[root@bogon src]# id mysql
uid=1001(mysql) gid=1001(mysql) 组=1001(mysql)
[root@bogon src]# rm -rf /data/mysql/*
[root@bogon src]#
5.配置mysql修改my.cnf文件和mysql文件
[root@bogon src]# cd /usr/local/mysql/
[root@bogon mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
[root@bogon mysql]# cp support-files/my-default.cnf /etc/my.cnf
[root@bogon mysql]# cp support-files/mysql.server /etc/init.d/mysql[root@bogon mysql]# vim /etc/my.cnf
[mysqld]
datadir=/data/mysql
socket=/tmp/mysql.sock [root@bogon mysql]# vim /etc/init.d/mysql
basedir=/usr/local/mysql
datadir=/data/mysql
[root@bogon mysql]# mv /etc/init.d/mysql /etc/init.d/mysqld
6.启动mysql,检查是否启动成功
[root@bogon mysql]# /etc/init.d/mysqld start
[root@bogon mysql]# ps aux|grep mysql
root 33506 0.0 0.0 113268 324 pts/5 S 17:34 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/bogon.pid
root 33642 1.6 41.2 453136 412676 pts/5 D 17:34 0:02 /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/bogon.err --pid-file=/data/mysql/bogon.pid --socket=/tmp/mysql.sock
root 33652 0.1 0.0 112680 584 pts/5 R+ 17:36 0:00 grep --color=auto mysql
[root@bogon mysql]#
7.将mysql服务添加到服务列表里并开机启动
[root@bogon mysql]# chkconfig --add mysqld
[root@bogon mysql]# chkconfig mysqld on
[root@bogon mysql]# service mysqld stop
Shutting down MySQL.. SUCCESS!
[root@bogon mysql]# service mysqld start
Starting MySQL.... SUCCESS!
[root@bogon mysql]#
PHP安装
1.和LAMP安装PHP方法有差别,这里需要开启php-fpm服务,之前php是作为Apache的一个模块,需要指定Apache的路径,用apxs工具配置模块怎么加载。这里就不需要了,因为用不到Apache。Php是作为独立的服务。
2.清理之前编译过的文件,make clean 之后就是刚刚解压的状态
[root@bogon src]# cd php-5.6.30/
[root@bogon php-5.6.30]# make clean
[root@bogon php-5.6.30]# useradd -s /sbin/nologin php-fpm (添加php-fpm用户,-s指定不能登录)
3.重新编译php
[root@bogon php-5.6.30]# ./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-mysqli=/usr/local/mysql/bin/mysql_config
--with-pdo-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
--with-pear
--with-curl
--with-openssl
4.提示少curl包,yum安装
checking for cURL support... yes
checking for cURL in default path... not found
configure: error: Please reinstall the libcurl distribution -
easy.h should be in <curl-dir>/include/curl/
[root@bogon php-5.6.30]#
[root@bogon php-5.6.30]# yum install libcurl-devel
5.make && make install
6.查看php-fpm配置文件语法是否正确
[root@bogon php-5.6.30]# ls /usr/local/php-fpm/
bin etc include lib php sbin var
[root@bogon php-5.6.30]# ls /usr/local/php
bin etc include lib php
[root@bogon php-5.6.30]# ls /usr/local/php-fpm/sbin/php-fpm -t
/usr/local/php-fpm/sbin/php-fpm
[root@bogon php-5.6.30]# /usr/local/php-fpm/sbin/php-fpm -t
[08-Feb-2018 22:26:48] ERROR: failed to open configuration file '/usr/local/php-fpm/etc/php-fpm.conf': No such file or directory (2)
[08-Feb-2018 22:26:48] ERROR: failed to load configuration file '/usr/local/php-fpm/etc/php-fpm.conf'
[08-Feb-2018 22:26:48] ERROR: FPM initialization failed
[root@bogon php-5.6.30]#
7.拷贝配置文件
cp php.ini-production /usr/local/php-fpm/etc/php.ini (复制目录并改名字)
[root@bogon php-5.6.30]# cp php.ini-production /usr/local/php-fpm/etc/php.ini
[root@bogon php-5.6.30]# cd /usr/local/php-fpm/etc/
[root@bogon etc]# ls
pear.conf php-fpm.conf.default php.ini
[root@bogon etc]# vim php-fpm.conf
[global] 定义全局参数
pid = /usr/local/php-fpm/var/run/php-fpm.pid
error_log = /usr/local/php-fpm/var/log/php-fpm.log
[www] 一个模块的名字
listen = /tmp/php-fcgi.sock 监听的地址
listen.mode = 666 定义sock文件的权限
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
8.拷贝启动的脚本
[root@bogon etc]# cd /usr/local/src/php-5.6.30/
[root@bogon php-5.6.30]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@bogon php-5.6.30]# chmod 755 /etc/init.d/php-fpm
[root@bogon php-5.6.30]# chkconfig --add php-fpm
[root@bogon php-5.6.30]#
[root@bogon php-5.6.30]# chkconfig php-fpm on
[root@bogon php-5.6.30]# service php-fpm start
9.提示用户不存在
[root@bogon php-5.6.30]# useradd -s /sbin/nologin php-fpm
[root@bogon php-5.6.30]# service php-fpm start
Starting php-fpm done
[root@bogon php-5.6.30]# ps aux|grep php-fpm
10.php-fcgi的权限为666
[root@bogon php-5.6.30]# ls -l /tmp/php-fcgi.sock
srw-rw-rw-. 1 root root 0 2月 8 22:48 /tmp/php-fcgi.sock
[root@bogon php-5.6.30]#
Nginx介绍
Nginx安装
1.下载Nginx
[root@bogon php-5.6.30]# cd /usr/local/src/
[root@bogon src]# ls
apr-1.6.3 mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz php-7.1.6
apr-1.6.3.tar.gz mongodb-linux-x86_64-rhel70-3.2.9 php-7.1.6.tar.gz
apr-util-1.6.1 mongodb-linux-x86_64-rhel70-3.2.9.tgz phpredis-develop
apr-util-1.6.1.tar.gz mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz phpredis-develop.zip
httpd-2.4.28 php-5.6.30
httpd-2.4.28.tar.gz php-5.6.30.tar.gz
[root@bogon src]# wget http://nginx.org/download/nginx-1.12.2.tar.gz
2.解压
[root@bogon src]# tar zxvf nginx-1.12.2.tar.gz
3.编译
[root@bogon src]# cd nginx-1.12.2/
[root@bogon nginx-1.12.2]# ./configure --prefix=/usr/local/nginx
4.安装
[root@bogon nginx-1.12.2]# make && make install
5.创建nginx启动脚本
[root@bogon nginx-1.12.2]# ls /usr/local/nginx/
conf html logs sbin
[root@bogon nginx-1.12.2]# vim /etc/init.d/nginx
6.启动脚本文件内容
#!/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
7.更改权限,添加到开机启动
[root@bogon nginx-1.12.2]# chmod 755 /etc/init.d/nginx
[root@bogon nginx-1.12.2]# che
check-binary-files checkmodule checksctp
checkisomd5 checkpolicy cheese
[root@bogon nginx-1.12.2]# chkconfig --add nginx
[root@bogon nginx-1.12.2]# chkconfig nginx on
[root@bogon nginx-1.12.2]#
8.编辑nginx配置文件
[root@bogon nginx-1.12.2]# cd /usr/local/nginx/conf/
[root@bogon conf]# ls
fastcgi.conf koi-utf nginx.conf uwsgi_params
fastcgi.conf.default koi-win nginx.conf.default uwsgi_params.default
fastcgi_params mime.types scgi_params win-utf
fastcgi_params.default mime.types.default scgi_params.default
[root@bogon conf]# mv nginx.conf nginx.conf.bak
[root@bogon conf]# vim nginx.conf
[root@bogon conf]#
user nobody nobody; (启动nginx的用户)
worker_processes 2; (定义子进程)
error_log /usr/local/nginx/logs/nginx_error.log crit; (错误日志)
pid /usr/local/nginx/logs/nginx.pid; (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 (http服务)
{
listen 80; (监听80端口)
server_name localhost; (设置域名)
index index.html index.htm index.php; (设置主页)
root /usr/local/nginx/html; (设置访问主目录)
location ~ \.php$ (定义php解析)
{
include fastcgi_params;
fastcgi_pass unix:/tmp/php-fcgi.sock;
#fastcgi_pass 127.0.0.1:9000; (和上面一行的意思相同,只是不同的写法,监听127.0.0.1:9000)
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
}
}
}
9.检查配置文件是否有错
[root@bogon conf]# /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
[root@bogon conf]#
[root@bogon ~]# /etc/init.d/nginx start
[root@bogon logs]# service nginx start
Starting nginx (via systemctl): [ 确定 ]
[root@bogon logs]#
[root@bogon logs]# ps aux|grep nginx
root 49403 0.0 0.0 20500 628 ? Ss 01:30 0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
nobody 49405 0.0 0.3 25028 3252 ? S 01:30 0:00 nginx: worker process
nobody 49406 0.0 0.3 25028 3252 ? S 01:30 0:00 nginx: worker process
root 49670 0.0 0.0 112680 976 pts/7 R+ 01:33 0:00 grep --color=auto nginx
[root@bogon logs]#
[root@bogon logs]# curl localhost
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
LNMP架构的更多相关文章
- 第20章 使用LNMP架构部署动态网站环境
章节概述: 本章节将从Linux系统的软件安装方式讲起,带领读者分辨RPM软件包与源码安装的区别.并能够理解它们的优缺点. Nginx是一款相当优秀的用于部署动态网站的服务程序,Nginx具有不错的稳 ...
- lnmp架构下php安全配置分享
目录[-] 1. 使用open_basedir限制虚拟主机跨目录访问 2. 禁用不安全PHP函数 3. 关注软件安全资讯 4. php用户只读 5. 关闭php错误日志 6. php上传分离 7. 关 ...
- lnmp架构(第一篇)
lnmp 架构 第一篇 nginx 源码安装 nginx的安装包:nginx-1.12.0.tar.gz 建议安装前的修改: 在nginx的解压包中修改文件nginx-1.12.0/src/core/ ...
- LNMP架构部署
第1章 部署LNMP架构步骤 1.1 ①部署Linux系统(OK) 基本优化完成(ip地址设置 yum源更新 字符集设置) 安全优化完成(iptables关闭 selinux关闭 /tmp/ 1777 ...
- 企业级LNMP架构搭建实例(基于Centos6.x)
1.1 部署LNMP架构说明 1.1.1 LNMP架构内容 01.部署linux系统 02.部署nginx网站服务 03.部署mysql数据库服务 04.部署php动态解析服务 1.1.2 配置LNM ...
- LAMP与LNMP架构的区别及其具体的选择说明
LAMP==Linux+Apache+Mysql+PHP LNMP==Linux+Nginx+Mysql+PHP 以上两只架构是目前网站的主流架构 LAMP和LNMP最主要的区别在于: 一个使用的是A ...
- nginx详解反向代理、负载均衡、LNMP架构上线动态网站(week4_day1_part1)-技术流ken
nginx介绍 Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理 ...
- linux的LNMP架构介绍、MySQL安装、PHP安装
LNMP架构介绍 和LAMP唯一不同的是,LNMP中的N指的是Nginx(类似于Apache的一种web服务软件).目前这种环境的应用也非常多.Nginx设计的初衷是提供一种快速.高效.多并发的Web ...
- lnmp架构、mysql的安装、php的安装、nginx相关
1.lnmp架构 2.mysql的安装: mysql5.6自动安装脚本: yum install perl-Data-Dumper.x86_64 libaio.x86_64 libaio-devel. ...
- 高性能Web服务之lnmp架构应用
传统上基于进程或线程模型架构的web服务通过每进程或每线程处理并发连接请求,这势必会在网络和I/O操作时产生阻塞,其另一个必然结果则是对内存或CPU的利用率低下.生成一个新的进程/线程需要事先备好其运 ...
随机推荐
- Spring的Bean生命周期理解
首先,在经历过很多次的面试之后,一直不能很好的叙述关于springbean的生命周期这个概念.今日对于springBean的生命周期进行一个总结. 一.springBean的生命周期: 如下图所示: ...
- Linux虚拟化技术KVM、QEMU与libvirt的关系(转)
说明:个人理解,KVM是内核虚拟化技术,而内核是不能使用在界面上使用的,那么此时QEMU提供了用户级别的使用界面,相互辅助.当然,单独使用QEMU也是可以实现一整套虚拟机,不过QEMU+KVM基本是标 ...
- php ob静态缓存
<?php ob_start(); //打开输出缓冲区 $cacheTime = 864000; //设置缓存页面过期时间 $cacheDir = 'cacheDir'; //设置缓存页面文件目 ...
- android源码包下载
http://rgruet.free.fr/public/ 其他下载地址:http://cid-b50f9d5897331c44.office.live.com/browse.aspx/Android ...
- [转]SSIS - Connect to Oracle on a 64-bit machine (Updated for SSIS 2008 R2)
本文转自:http://sqlblog.com/blogs/jorg_klein/archive/2011/06/09/ssis-connect-to-oracle-on-a-64-bit-machi ...
- Linux内核开发者峰会照的全家福
刚才看到一张Linux内核开发者峰会照的全家福,有历史价值,给大家分享一下.上面有Torvalds(大致在中间).Andrew Morton(目前的内核主要维护者,第二排右数第二个).Alan Cox ...
- FPGA作为从机与STM32进行SPI协议通信---Verilog实现
一.SPI协议简要介绍 SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口.SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用 ...
- Item 33: 避免覆盖(hiding)“通过继承得到的名字”
莎士比亚有一个关于名字的说法."What's in a name?" 他问道,"A rose by any other name would smell as sweet ...
- scrapy-splash抓取动态数据例子五
一.介绍 本例子用scrapy-splash抓取智能电视网网站给定关键字抓取咨询信息. 给定关键字:打通:融合:电视 抓取信息内如下: 1.资讯标题 2.资讯链接 3.资讯时间 4.资讯来源 二.网站 ...
- win8.1 64位环境搭建android开发环境
1.下载JDK,http://www.oracle.com/technetwork/java/javase/downloads/index.html,选择版本 2.安装刚刚下载的JDK 3.环境变量配 ...