LNMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写。L指Linux,N指Nginx,M一般指MySQL,也可以指MariaDB,P一般指PHP,也可以指Perl或Python
LNMP平台就是 Linux、 Ngnix、 My SQL、PHP的组合架构,需要 Linux服务器、MysαL数据库、PHP解析环境
Ngnix特长:高并发,低资源,处理静态网络访问请求非常强
Apache:静态处理和动态处理都可以做,更适合做动态处理
Nginx将动态资源请求交给PHP当中的fpm处理动态请求
PHP主配置文件:php.ini
Nginx将动态资源分配给FPM或Apache
Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。
Nginx是一款轻量级的Web服务器/反向代理服务器以及电子邮件代理服务器,并在一个BSD-like协议下发行。由俄罗斯的程序设计师lgor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。
Nginx相较于Apache\lighttpd具有占有内存少,稳定性高等优势,并且依靠并发能力强,丰富的模块库以及友好灵活的配置而闻名。在Linux操作系统下,nginx使用epoll事件模型,得益此,nginx在Linux操作系统下效率相当高。同时Nginx在OpenBSD或FreeBSD操作统上采用类似于Epoll的高效事件模型kqueue.
—款高性能、轻量级Web服务软件
稳定性高
系统资源消耗低
对HTTP并发连接的处理能力高
单台物理服务器可支持30 000~50 000个并发请求
为了与 Nginx、PHP环境保持一致,此处选择采用源代码编译的方式安装 My SQL组件
MySQL部署的方法:
编译安装 MySQL
优化调整初始化数据库
启动mysq服务并设置root数据库账号的密码
配置网页动静分离,解析PHP,有两种方法可以选择
使用PHP的FPM模块
将访问PHP页面的Web请求转交给 Apache服务器去处理
较新版本的PHP已经自带FPM模块,用来对PHP解析实例进行管理、优化解析效率
FastCG将 Http Server和动态脚本语言分离开
Nginx专门处理静态请求,转发动态请求
PHP FPM专门解析PHP动态请求
单服务器的LNMP架构通常使用FPM的方式来解析PHP
调用本机的php-fpm进程配置方法
建立FPM配置文件php- fpm. conf,修改配置选项,如:PD文件运行用户、服务进程数等
启动php-pm进程
在Ngnx的配置文件中的 serve}配置段配置将PHP的网页请求转给FPM模块处理
在Ngnx的配置文件中的 Server{}配置段配置将PHP的网页请求转给FPM模块处理
1.挂载宿主机的共享文件夹,读取下载好的源码文件
2.解压跨平台组件包和源码包
将跨平台组件包移动到源码包目录下
3.安装编译器和其他工具
yum -y install gcc \
gcc-c++ \
make \
pcre-devel \
expat-devel \
perl \
zlib-devel \
pcre
4.configure配置
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
5.make编译和make install
6,路径优化
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin '//nginx命令执行路径优化'
useradd -M -s /sbin/nologin nginx
vim /lib/systemd/system/nginx.service '//添加使用systemctl工具进行管理'
[Unit]
Description=nginx '//描述'
After=network.target '//描述服务类别'
[Service]
Type=forking '//后台运行形势'
PIDFile =/usr/local/nginx/logs/nginx.pid '//PID文件位置'
ExecStart=/usr/local/nginx/sbin/nginx '//启动服务'
ExecReload=/usr/bin/kill -S HUP $MAINPID '//根据PID重载配置'
ExecStop=/usr/bin/kill -S QUIT $MAINPID '//根据PID终止进程'
PrivateTmp=true
[Install]
WantedBy=multi-user.target
chmod 754 /lib/systemd/system/nginx.service
[root@localhost system]# chmod +754 nginx.service
[root@localhost system]# systemctl start nginx.service
[root@localhost system]# netstat -ntap |grep 80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 5396/nginx: master
tcp 0 0 192.168.197.192:56680 192.168.100.3:445 ESTABLISHED -
[root@localhost system]# systemctl stop firewalld.service
[root@localhost system]# setenforce 0
[root@localhost ~]# yum install ncurses-devel autoconf cmake -y
[root@localhost ~]# useradd -s /sbin/nologin mysql
上传mysql-boost-5.7.20.tar.gz到opt目录下
[root@localhost ~]# cd /opt
[root@localhost ~]# tar xf mysql-boost-5.7.20.tar.gz
[root@localhost ~]# cd /opt/mysql-5.7.20/
[root@localhost mysql-5.7.20]# cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1
配置选项含义
1、DCMAKE_INSTALL_PREFIX:指定将 mysql 数据库程序安装到某目录下,
如目录/usr/local/ mysql。
2、DSYSCONFDIR:指定初始化参数文件目录
3、DDEFAULT_CHARSET:指定默认使用的字符集编码,如 utf8。
4、DDEFAULT_COLLATION:指定默认使用的字符集校对规则,utf8_general_ci
是适用于 UTF-8 字符集的通用规则。
5、DWITH_EXTRA_CHARSETS:指定额外支持的其他字符集编码。
[root@localhost mysql-5.7.20]# make && make install
[root@localhost ~]# chown -R mysql:mysql /usr/local/mysql/
[root@localhost ~]# vi /etc/my.cnf
[client]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock
[mysql]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock
[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
[root@localhost ~]# echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
[root@localhost ~]# echo 'export PATH' >> /etc/profile
[root@localhost ~]# source /etc/profile
[root@localhost ~]# cd /usr/local/mysql/
[root@localhost mysql]# bin/mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
[root@localhost mysql]# cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
[root@localhost mysql]# systemctl enable mysqld
[root@localhost mysql]# systemctl start mysqld
[root@localhost mysql]# mysqladmin -u root -p password "123456" '//给root用户设置密码'
'//mysqladmin -u用户名 -p旧密码 password 新密码'
Enter password: '//原本密码为空,直接回车即可'
Warning: Using a password on the command line interface can be insecure.
[root@localhost mysql]# mysql -u root -p
Enter password: '//输入刚设置的密码123456'
...省略内容
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec)
mysql> exit
Bye
[root@localhost ~]# yum -y install \
libjpeg \
libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 \
libxml2-devel \
zlib zlib-devel \
curl curl-devel \
openssl openssl-devel
##将安装包传入/opt目录下##
[root@localhost opt]# cd /opt
[root@localhost opt]# tar xf php-7.1.10.tar.bz2
[root@localhost opt]# cd php-7.1.10/
[root@localhost php-7.1.10/]# ./configure \
--prefix=/usr/local/php \
--with-mysql-sock=/usr/local/mysql/mysql.sock \
--with-mysqli \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-openssl \
--enable-fpm \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip
[root@localhost php-7.1.10/]# make -j3
[root@localhost php-7.1.10/]# make install
##php有三个配置文件 php.ini核心配置文件 php-fpm.conf进程服务配置文件www.conf 扩展配置文件##
[root@localhost php-7.1.10/]# cp php.ini-development /usr/local/php/lib/php.ini
[root@localhost php-7.1.10/]# vi /usr/local/php/lib/php.ini
##找到以下两行的位置,修改这两行##
mysqli.default_socket = /usr/local/mysql/mysql.sock
date.timezone = Asia/Shanghai ##找到后,前方的;注释要去掉##
[root@localhost php-7.1.10]# /usr/local/php/bin/php -m
##验证安装的模块##
[root@localhost php-7.1.10]# cd /usr/local/php/etc/
[root@localhost etc]# cp php-fpm.conf.default php-fpm.conf
[root@localhost etc]# cd /usr/local/php/etc/php-fpm.d/
[root@localhost php-fpm.d]# cp www.conf.default www.conf
[root@localhost php-fpm.d]# cd /usr/local/php/etc/
[root@localhost etc]# vi php-fpm.conf
pid = run/php-fpm.pid ##将;去掉##
;user = nginx
;group = nginx
[root@localhost etc]# /usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini
[root@localhost etc]# netstat -natp |grep 9000
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 99975/php-fpm: mast
[root@localhost etc]# ln -s /usr/local/php/bin/* /usr/local/bin/
[root@localhost etc]# ps aux | grep -c "php-fpm”
[root@localhost etc]# vi /usr/local/nginx/conf/nginx.conf
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;
} ##将;去掉,用/usr/local/nginx/html替换原来的路径##
[root@localhost etc]# vi /usr/local/nginx/html/index.php
<?php
phpinfo();
?>
[root@localhost etc]# killall -s HUP nginx ##重启nginx##
##在windows的浏览器中输入http://20.0.0.25/index.php,也可以输入http://www.51xit.top/index.php测试##
[root@localhost ~]# mysql -u root -p ##输入密码123456##
CREATE DATABASE bbs;
GRANT all ON bbs.* TO 'bbsadm'@'%' IDENTIFIED BY 'admin123';
GRANT all ON bbs.* TO 'bbsadm'@'localhost' IDENTIFIED BY 'admin123';
flush privileges;
##最后exit退出##
[root@localhost ~]# vi /usr/local/nginx/html/index.php
##将之前的内容删除##
<?php
$link=mysqli_connect('20.0.0.25','bbsadm','admin123');
if($link) echo "Success!
";
else echo "Fail!";
?>
[root@localhost ~]# killall -s HUP nginx ##重启##
这边LNMP平台就已经搭建好了
**