LNMP环境应用
标签(空格分隔): 企业架构应用基础
常见的Web框架结构
比如:LNMP和LAMP
L=Linux N=Nginx A=Apache P=PHP T=Tomcat
Nginx和Apache都是Web应用服务器
Nginx处理静态数据快,Apache处理动态数据快
Nginx对系统资源占用小,Apache资源占用高
Nginx用的是epoll(异步非阻塞I/O),Apache用的select(同步阻塞I/O)
LNMP组合工作流程
LNMP的部署方式
LNMP的部署方式分两种
- 全部部署在一台上。
- 全都不在一台上,N+P+M
只分离MySQL。NP+M
HTTP数据包和fastcgi数据包
http数据包特点,格式很松散,因此解析的速度慢,但是数据包比fastcgi格式数据包小。
fastcgi数据包,这种规则的数据包格式非常严谨,因此,PHP解析的速度非常快。但是越严谨的数据包越大。所以fastcgi数据包大小要绝对大于HTTP数据包。
软件的设计架构分为C/S和B/S
作为客户端Client的fastcgi_pass和作为Server端的PHP-fpm。
因为经常用所以,fastcgi_pass和Nginx合并,而PHP-fpm和PHP合并。
流程
用户的请求一定是遵循HTTP协议的,因为是通过浏览器过来的。
Nginx和Apache其实一样,如果没有PHP支持,那么都处理不了动态请求。他们自身其实都只能处理静态。只是Apache转发动态数据包的速度快,但是只是单个包速度。Apache并发低。
如果是静态请求,则由Nginx解析返回给用户。
如果是动态请求(.php结尾),那么Nginx就会把它通过fastcgi接口发送给PHP引擎服务(fastcgi进程PHP-fpm)进行解析,如果这个动态请求要读取数据库数据,那么PHP就会继续向后请求MySQL数据库,以读取需要的数据,并最终通过Nginx服务把获取的数据返回给用户,这就是LNMP环境的基本请求流程。
部署LNMP
(一)先下载需要的软件包
wget http://cn2.php.net/get/php-5.3.28.tar.gz
wget http://nginx.org/download/nginx-1.10.2.tar.gz
wget https://wordpress.org/latest.tar.gz
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
(二)安装Nginx数据库
- 解包
tar xf nginx-1.10.2.tar.gz -C /usr/src/
cd /usr/src/nginx-1.10.2 - 下载支持包
yum -y install pcre-devel openssl-devel - 创建Nginx用户
useradd -s /sbin/nologin -M www - 编译安装Nginx
./configure --user=www --group=www --prefix=/usr/local/nginx/ --with-http_stub_status_module --with-http_ssl_module
make && make install - 软链接
ln -s /usr/local/nginx/sbin/* /usr/local/sbin/ - 修改配置文件
cd /usr/local/nginx/conf
egrep -v “#|^$” nginx.con.default > nginx.conf
(三)安装MySQL
PHP安装需要先有MySQL的环境。不然PHP编译报错。
-
二进制软件包直接解压即可
tar xf mysql-5.5.32-linux2.6-x86_64.tar.gz -C /usr/local/ -
创建MySQL程序用户
useradd -s /sbin/nologin -M mysql -
移动配置文件
cd /usr/local/mysql-5.5.32-linux2.6-x86_64/
/bin/cp support-files/my-small.cnf /etc/my.cnf -
映射本地ip
echo “192.168.200.135 LNMP” >> /e tc/hosts -
软链接
ln -s /usr/local/mysql-5.5.32-linux2.6-x86_64/ /usr/local/mysql -
目录权限
chown -R mysql.mysql /usr/local/mysql -
安装支持包
yum -y install libaio -
初始化MySQL
/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql -
启动MySQL
cp support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
/etc/init.d/mysqld start -
软链接
ln -s /usr/local/mysql/bin/* /usr/local/bin/ -
设置MySQL密码
mysqladmin -uroot password “102846”
(四)安装PHP
- 安装支持包
yum -y install freetype-devel libpng-devel gd libcurl-devel libxslt-devel
yum -y install zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel
#这里仅缺少libiconv-devel包
在上面下载的软件包已经包含
cd ~
tar xf libiconv-1.14.tar.gz -C /usr/src/
./configure --prefix=/usr/local/libiconv && make && make install
还需要安装libmcrypt库、mhash加密扩展库、mcrvpt加密扩展库
需要epel.reop源wget -O /etc/yum.repos.d/epel.repo
yum -y install libmcrypt-devel mhash mcrypt - 解压php
cd ~
tar xf php-5.3.28.tar.gz -C /usr/src/ - 配置php
./configure \ --prefix=/usr/local/php5.3.28 \ --with-mysql=/usr/local/mysql \ --with-iconv-dir=/usr/local/libiconv \ --with-freetype-dir \ --with-jpeg-dir \ --with-png-dir \ --with-zlib \ --with-libxml-dir=/usr \ --enable-xml \ --disable-rpath \ --enable-safe-mode \ --enable-bcmath \ --enable-shmop \ --enable-sysvsem \ --enable-inline-optimization \ --with-curl \ --with-curlwrappers \ --enable-mbregex \ --enable-fpm \ --enable-mbstring \ --with-mcrypt \ --with-gd \ --enable-gd-native-ttf \ --with-openssl \ --with-mhash \ --enable-pcntl \ --enable-sockets \ --with-xmlrpc \ --enable-zip \ --enable-soap \ --enable-short-tags \ --enable-zend-multibyte \ --enable-static \ --with-xsl \ --with-fpm-user=www \ --with-fpm-group=www \ --enable-ftp
表示需要指定MySQL的安装路径,安装PHP需要的MySQL相关内容。当然,如果没有MySQL软件包,也可以不单独安装,这样的情况可使用–with-mysql=mysqlnd替代–with-mysql=/usr/local/mysql,因为PHP软件里已经自带了连接MySQL的客户端工具。
- 编译php
ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/
touch ext/phar/phar.phar
make && make install - 软链接
ln -s /usr/local/php5.3.28/ /usr/local/php - 复制php配置文件模板
cd /usr/src/php-5.3.28
cp php.ini-production /usr/local/php/lib/php.ini
cd /usr/local/php/etc/
cp php-fpm.conf.default php-fpm.conf
关于php-fpm.conf 暂时可用默认的配置,先把服务搭好,以后在进行优化 - 启动php服务
/usr/local/php/sbin/php-fpm
(五)配置Nginx支持PHP程序请求访问
- 修改Nginx配置文件
cd /usr/local/nginx/conf
vim nginx.conf
worker_processes 1;
error_log logs/error.log;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
include extra/www.conf;
include extra/mail.conf;
include extra/status.conf;
include extra/blog.conf;
}
这里以blog为例
[root@localhost conf]# cat extra/blog.conf
server {
listen 80;
server_name blog.yunjisuan.com;
location / {
root /var/www/html/blogcom;
index index.html index.htm;
}
location ~ .*\.(php|php5)?$ {
root /var/www/html/blogcom;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
}
- 检查并启动Nginx
root@localhost conf]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx-1.10.2//conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx-1.10.2//conf/nginx.conf test is successful
[root@localhost conf]# /usr/local/nginx/sbin/nginx -s reload
- 测试PHP解析请求
[root@localhost conf]# cd /usr/local/nginx/html/blog/
[root@localhost blogcom]# echo "<?php phpinfo(); ?>" >test_info.php
[root@localhost blogcom]# cat test_info.php
<?php phpinfo(); ?>
调整Windows下的host解析
打开浏览器,输入blog.yunjisuan.com 即可
- 针对Nginx请求访问PHP,然后对PHP连接MySQL的情况进行测试
[root@localhost blogcom]# cat test_mysql.php
<?php
//$link_id=mysql_connect('主机名','用户','密码');
$link_id=mysql_connect('localhost','root','123123');
if($link_id){
echo "mysql successful by Mr.chen !";
}else{
echo mysql_error();
}
?>
给PHP做软链接
ln -s /usr/local/php/bin/* /usr/local/bin/
测试PHP连接MySQL情况
php test_mysql.php
如果出现successful说明和MySQL连接成功
部署一个blog程序服务
(一)MySQL数据库配置准备
- 创建一个专用的数据库WordPress,用于存放blog数据
create database wordpress; - 创建一个专用的WordPress管理用户
grant all on wordpress.* to wordpress@‘localhost’ identified by ‘123123’;
flush privileges;
(二)Nginx及PHP环境配置准备
- 选择之前配置好的支持LNMP的blog配置文件,补充一个首页文件index.php
[root@localhost extra]# cat blog.conf
server {
listen 80;
server_name blog.yunjisuan.com;
location / {
root /var/www/html/blogcom;
index index.php index.html index.htm; #补充一个首页文件index.php
}
location ~ .*\.(php|php5)?$ {
root /var/www/html/blogcom;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
}
nginx -s reload
- 获取WordPress博客程序,并放置到blog域名对应虚拟主机的站点目录下
浏览www.wordpress.org下载博客程序
删除之前测试用的网页
cd /usr/local/nginx/html/blog
rm -f *
解包wordpress
cd ~
tar xf latest.tar.gz
mv wordpress/* /usr/local/nginx/html/blog
授权用户访问
chown -R www.www /usr/local/nginx/html/blog
(三)安装workpress
- 打开浏览器输入blog.yunjisuan.com(提前做好hosts)
6.