一.lnmp的简介
LNMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写。L指Linux,N指Nginx,M一般指MySQL,也可以指MariaDB,P一般指PHP,也可以指Perl或Python。
LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。
LNMP的工作原理:首先,浏览器发送http request请求到服务器(Nginx)服务器响应并处理web请求,将一些静态资源(CSS,图片,视频等)保存服务器上,然后将php脚本通过接口传输协议(网关协议)PHP-FCGI(fast-cgi)传输给PHP-FPM(进程管理程序),PHP-FPM不做处理,然后PHP-FPM调用PHP解析器进程,PHP解析器解析php脚本信息。PHP解析器进程可以启动多个,进行并发执行。然后将解析后的脚本返回到PHP-FPM,PHP-FPM再通过fast-cgi的形式将脚本信息传送给Nginx,服务器再通过Http response的形式传送给浏览器。浏览器再进行解析与渲染然后进行呈现。
LNMP和LAMP唯一不同是指提供web服务的是Nginx,在Apache中,PHP是作为一个模块存在的。而在Nginx中,PHP是作为一个独立服务存在的,这个服务叫做php-fpm。Nginx直接处理静态请求,动态请求会转发给php-fpm.
本次实验环境:rhel6.5版本
二.php安装
1.安装php(使用源码编译安装,定制化模块)
tar jxf php-5.6.35.tar.bz2 ##解压软件包
mkdir /usr/local/lnmp ##建立一个专门的目录来存放编译安装的软件
cd php-5.6.35 ##进入解压后的软件目录执行编译安装脚本
./configure --prefix=/usr/local/lnmp/php --with-config-file-path=/usr/local/lnmp/php/etc
--with-openssl --with-snmp --with-gd --with-zlib --with-curl --with-libxml-dir
--with-png-dir --with-jpeg-dir --with-freetype-dir --with-gmp --with-gettext
--with-pear --enable-mysqlnd --with-mysql=mysqlnd --with-mysqli=mysqlnd
--with-pdo-mysql=mysqlnd --enable-inline-optimization --enable-soap --enable-ftp
--enable-sockets --enable-mbstring --enable-fpm --with-fpm-user=nginx
--with-fpm-group=nginx --with-mcrypt --with-mhash ##编译自己需要的模块
yum install gcc libxml2-devel openssl-devel libcurl-devel
libjpeg-turbo-devel-1.2.1-1.el6.x86_64 2:libpng-devel-1.2.49-1.el6_2.x86_64
freetype-devel-2.3.11-14.el6_3.1.x86_64
gmp-devel-4.3.1-7.el6_2.2.x86_64
libmcrypt-devel-2.5.8-9.el6.x86_64.rpm
net-snmp-devel -y ##为解决编译带来的问题,安装一些包
make && make install ##编译安装到指定目录
注意;libmcrypt-devel-2.5.8-9.el6.x86_64.rpm 的安装需要先安装
libmcrypt-2.5.8-9.el6.x86_64.rpm这两个包都需要从网上获取
编译参数说明
./configure --prefix=/usr/local/lnmp/php #安装的位置
--with-config-file-path=/usr/local/lnmp/php/etc #php配置文件的位置
--with-openssl #支持openssl加密
--with-snmp
--with-gd
--with-zlib
--with-curl
--with-libxml-dir #支持libxml函数
--with-png-dir #php处理图片的格式
--with-jpeg-dir
--with-freetype-dir
--with-gmp
--with-gettext
--with-pear
--enable-mysqlnd #支持mysql数据库之间建立联系
--enable-inline-optimization -
-enable-soap
--enable-ftp
--enable-sockets
--enable-mbstring
--enable-fpm #开启fpm模式(nginx等服务用的)
--with-fpm-user=nginx #对php服务的限制通过nginx用户来实现)
--with-fpm-group=nginx #php以nginx用户组身份运行
--with-mcrypt #提供了对多种块算法的支持,主要用来实现加密等算法
--with-mhash #加密算法
2.修改配置文件
cp php.ini-production /usr/local/lnmp/php/etc/php.ini ##把配置文件的模板移动到配置软件的目录下
vim /usr/local/lnmp/php/etc/php.ini ##修改一下进程管理文件的时区(fast_cgi_manager)
[root@server1 php-5.6.35]# cd sapi/fpm/ ##进入启动命令目录,制作启动脚本
cp init.d.php-fpm /etc/init.d/php-fpm ##制作脚本方式启动
chmod +x /etc/init.d/php-fpm ##给脚本执行权限
cd /usr/local/lnmp/php/etc/ ##进入配置文件目录
cp php-fpm.conf.default php-fpm.conf(主配置文件) ##将default去掉,不然启动会报错缺少php-fpm.conf文件
25 pid = run/php-fpm.pid #去掉注释
149 user = nginx #保证用户和组都是nginx
150 group = nginx
useradd nginx ##建立nginx用户,运行需要
/etc/init.d/php-fpm start ##启动成功
netstat -tnlp | grep php ##查看php端口是否开启
1.nginx的安装
1.编译、安装
tar zxf nginx-1.16.0.tar.gz ##解压安装包
cd nginx-1.16.0 ##进入软件解压目录
yum install -y pcre-devel ##安装nginx需要的依赖环境
./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module
--with-threads --with-file-aio --user=nginx --group=nginx
##添加自己需要的模块
make && make install ##编译安装
2.修改配置文件
vim /usr/local/lnmp/nginx/conf/nginx.conf ##修改配置文件打开默认访问php页面功能
ln -s /usr/local/lnmp/nginx/sbin/nginx /usr/local/sbin/ ##建立一个软链接
nginx -t ##测试软链接能否使用并检查配置文件是否有错
vim /usr/local/lnmp/nginx/html/index.php ##编写一个php测试信息默认文件
nginx ##启动服务,进入浏览器测试
测试:
/etc/init.d/php-ftm start
三.mysql的源码安装
1.mysql的安装
为了定制化模块,我们使用源码安装mysql-boost-5.7.17.tar.gz(从官网获取)
tar zxf mysql-boost-5.7.17.tar.gz ##解压软件安装包
cd mysql-5.7.17/ ##进入软件解压目录
yum install cmake-2.8.12.2-4.el6.x86_64.rpm -y ##安装cmake
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql -DMYSQL_DATADIR=/usr/local/lnmp/mysql/data /
-DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock -DWITH_MYISAM_STORAGE_ENGINE=1 /
-DWITH_INNOBASE_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci /
-DEXTRA_CHARSETS=all -DWITH_BOOST=boost/boost_1_59_0/
##选择自己需要添加的模块
rm -fr CMakeCache.txt ##编译出错需要删除掉编译生成的文件重新编译
yum install ncurses-devel gcc-c++ bison -y ##安装编译依赖,再次cmake
make && make install ##执行这一步编译安装至少需要10g以上的可用空间,最好本身存储在20g以上,而且所耗时间较长
安装过程比较慢(要大半个小时)
2.配置文件的修改
cd /root/mysql-5.7.17/support-files ##进入软件支持目录
cp mysql.server /etc/init.d/mysqld ##制作脚本启动方式的脚本
chmod +x /etc/init.d/mysqld ##给脚本加上执行权限
注意:如果之前安装过mysql,可以用rpm -qa mysql 查看具体的版本,然后通过yum remove 删除掉
cp /etc/my.cnf /etc/my.cnf.bak ##把mysql的配置文件备份
cp my-default.cnf /etc/my.cnf ##将默认配置文件覆盖掉原来的配置文件
vim /etc/my.cnf ##修改配置文件
groupadd -g 27 mysql ##因为用yum安装时的mysql默认用户是27,所以这里我们也用这个默认id
useradd -u 27 -g 27 mysql ##创建mysql用户
vim ~/.bash_profile ##将mysql加入环境变量
source ~/.bash_profile ##使修改生效
3.mysql的初始化
chown mysql.mysql /usr/local/lnmp/mysql/ -R ##给mysql用户赋予对mysql目录的读写权限来完成初始化
mysqld --user=mysql --initialize ##mysql初始化,最后一行会给一个默认密码,后面安全初始化会用到
chown root /usr/local/lnmp/mysql/ -R ##初始化把默认权限修改回来,这是为了安全考虑
chown mysql /usr/local/lnmp/mysql/data/ -R ##只让mysql用户对mysql的数据可写
/etc/init.d/mysqld start ##启动服务,能启动说明配置没问题,启动后会生成sock套接字
mysql_secure_installation ##安全初始化设定,需要使用mysql初始化给的默认密码
##改变密码后,选择两次no就只使用我们设定的这个密码,然后选择4次yes,删除匿名用户,禁止只有root可以登陆,删除测试库,保存设定
/etc/init.d/mysqld start
nginx
/etc/init.d/php-fpm start ##启动所有服务,查看有无问题
netstat -tnlp ##检查启动的服务端口有没有问题