
搭建LNMP网站
1.LNMP架构概述
LNMP就是Linux+Nginx+MySQL+PHP,Linux作为服务器的操作系统,Nginx作为Web服务器、PHP作为解析动态脚本语言、MySQL即为数据库。
- Linux作为服务器的操作系统。
- Nginx作为WebServer服务器。
- PHP 作为动态解析服务(php)。
- MySQL作为后端存储数据库服务。
Nginx服务本身不能处理PHP的请求,那么当用户发起PHP动态请求, Nginx又是如何进行处理的。
用户-->http协议-->Nginx-->fastcgi协议-->php-fpm
注意: fatcgi是nginx连接php-fpm之间的协议。Nginx与Fast-CGI详细工作流程如下:
1.用户通过http协议发起请求,请求会先抵达LNMP架构中的Nginx 2.Nginx会根据用户的请求进行判断,这个判断是有Location进行完成 3.判断用户请求的是静态页面,Nginx直接进行处理 4.判断用户请求的是动态页面,Nginx会将该请求交给fastcgi协议下发 5.fastgi会将请求交给php-fpm管理进程, php-fpm管理进程接收到后会调用具体的工作线程warrap 6.warrap线程会调用php进行解析,如果只是解析代码php直接返回 7.如果有查询数据库操作,则由php连接数据库(用户 密码 IP)然后发起查询的操作 8.最终数据由mysql->php->php-fpm->fastcgi->nginx->http->user2.安装LNMP架构
1) 使用官方仓库安装Nginx
[root@nginx ~]# cat /etc/yum.repos.d/nginx.repo [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/7/$basearch/ gpgcheck=0 enabled=12) 安装Nginx 并启动Nginx 加入开机自启
[root@nginx ~]# yum install nginx -y [root@nginx ~]# systemctl start nginx [root@nginx ~]# systemctl enable nginx3) 使用第三方扩展源安装php7.1
[root@nginx ~]# yum remove php-mysql-5.4 php php-fpm php-common [root@nginx ~]# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm [root@nginx ~]# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm [root@nginx ~]# yum -y install php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-gd php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd php71w-opcache php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb3) 配置php-fpm 启动php-fpm 并加入开机自启
[root@nginx ~]# sed -i '/^user/c user = www' /etc/php-fpm.d/www.conf [root@nginx ~]# sed -i '/^group/c group = www' /etc/php-fpm.d/www.conf [root@nginx ~]# systemctl start php-fpm [root@nginx ~]# systemctl enable php-fpm4) 使用MySQL官方仓库安装MySQL5.7数据库
[root@nginx ~]# rpm -ivh http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/mysql57-community-release-el7-10.noarch.rpm [root@nginx ~]# yum install mysql-community-server -y5) 启动数据库, 并加入开机自动
[root@nginx ~]# systemctl start mysqld [root@nginx ~]# systemctl enable mysqld6) mysql5.7默认配置了密码, 需要提取temporary password中的密码, 登陆对应数据库
[root@nginx ~]# grep "temporary password" /var/log/mysqld.log [root@nginx ~]# mysql -uroot -p$(awk '/temporary password/{print $NF}' /var/log/mysqld.log)7) 重新初始化 MySQL 的密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Bgx123.com';3.配置LNMP架构
1) 为了验证Nginx能否正常解析php动态请求, 需配置如下locaiton
[root@nginx ~]# cat /etc/nginx/conf.d/php.conf server { server_name www.bgx.com; listen 80; root /code; index index.php index.html; location ~ \.php$ { root /code; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }2) 新增.php后缀的文件名, 使用phpinfo函数测试php能否正常解析
[root@nginx ~]# cat /code/info.php <?php phpinfo(); ?>3) 验证php是否能正常连接mysql数据库服务
[root@nginx ~]# cat /code/mysqli.php <?php $servername = "localhost"; $username = "root"; $password = "Bgx123.com"; // 创建连接 $conn = mysqli_connect($servername, $username, $password); // 检测连接 if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } echo "php连接MySQL数据库成功"; ?>4) 通过浏览器访问info.php文件, 如能出现php相关的信息, 则表示nginx与php能正常工作
5) 访问mysqli.php验证php-mysqli模块是否正常工作