【运维知识进阶篇】集群架构-Nginx实现基础web架构(Linux+Nginx+PHP+Mysql)(一)

简介: 【运维知识进阶篇】集群架构-Nginx实现基础web架构(Linux+Nginx+PHP+Mysql)

本篇文章介绍LNMP架构部署项目,包括Nginx安装配置、PHP安装配置、数据库Mariadb安装配置、Nginx连通PHP、PHP连通MySQL、拆分数据库至独立服务器、拆分静态资源至服务器、扩展一个web服务器。


LNMP架构

Linux Nginx Mysql PHP

Nginx不能处理动态请求,如果是动态请求,就通过fastcgi协议转交给后端的PHP程序处理

 

Nginx安装配置

第一步:安装nginx

配置官网yum仓库

1. vim /etc/yum.repos.d/nginx.repo
2. 
3. [nginx-stable]
4. name=nginx stable repo
5. baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
6. gpgcheck=1
7. enabled=1
8. gpgkey=https://nginx.org/keys/nginx_signing.key
9. module_hotfixes=true

第二步:创建虚拟用户

1. [root@Web01 ~]# groupadd -g 666 www
2. [root@Web01 ~]# useradd -u666 -g666 -M -s /sbin/nologin www

第三步:配置Nginx启动用户为www

1. [root@Web01 ~]# vim /etc/nginx/nginx.conf 
2. 
3. user  www;
4. worker_processes  auto;

第四步:启动Nginx加入开机自启动

1. [root@Web01 ~]# systemctl start nginx
2. [root@Web01 ~]# systemctl enable nginx
3. Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.

PHP安装配置

第一步:配置PHP软件仓库并安装PHP

1. #配置PHP仓库
2. [root@Web01 ~]# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
3. [root@Web01 ~]# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
4. 
5. [root@Web01 ~]# yum remove php-mysql-5.4 php php-fpm php-common
6. 
7. #配置第三方源
8. [root@Web01 ~]# vim /etc/yum.repos.d/php.repo
9. [php-webtatic]
10. name = PHP Repository
11. baseurl = http://us-east.repo.webtatic.com/yum/el7/x86_64/
12. gpgcheck = 0
13. 
14. #安装PHP
15. [root@Web01 ~]# 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-mongodb --nogpgcheck

或者是使用rpm包,上传后解压。

yum -y localinstall *.rpm

第二步:修改PHP启动用户为www

1. [root@Web01 ~]#  sed -i '/^user/c user = www' /etc/php-fpm.d/www.conf 
2. [root@Web01 ~]# sed -i '/^group/c group = www' /etc/php-fpm.d/www.conf

第三步:启动服务并设置开机自启

1. [root@Web01 ~]# systemctl start php-fpm
2. [root@Web01 ~]# systemctl enable php-fpm
3. Created symlink from /etc/systemd/system/multi-user.target.wants/php-fpm.service to /usr/lib/systemd/system/php-fpm.service.

第四步:查看状态

1. [root@Web01 ~]# netstat -tnulp
2. Active Internet connections (only servers)
3. Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
4. tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1272/sshd           
5. tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1413/master         
6. tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      4133/php-fpm: maste 
7. tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      3989/nginx: master  
8. tcp6       0      0 :::22                   :::*                    LISTEN      1272/sshd           
9. tcp6       0      0 ::1:25                  :::*                    LISTEN      1413/master         
10. udp        0      0 127.0.0.1:323           0.0.0.0:*                           840/chronyd         
11. udp6       0      0 ::1:323                 :::*                                840/chronyd

安装数据库mariadb-server

第一步:安装数据库

[root@Web01 ~]# yum install mariadb-server -y

第二步:启动数据库、设置开机自启动、查看状态

1. [root@Web01 ~]# systemctl start mariadb
2. [root@Web01 ~]# systemctl enable mariadb
3. Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
4. [root@Web01 ~]# netstat -tnulp
5. Active Internet connections (only servers)
6. Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
7. tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1272/sshd           
8. tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1413/master         
9. tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      4133/php-fpm: maste 
10. tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      4480/mysqld         
11. tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      3989/nginx: master  
12. tcp6       0      0 :::22                   :::*                    LISTEN      1272/sshd           
13. tcp6       0      0 ::1:25                  :::*                    LISTEN      1413/master         
14. udp        0      0 127.0.0.1:323           0.0.0.0:*                           840/chronyd         
15. udp6       0      0 ::1:323                 :::*                                840/chronyd

第三步:配置用户密码,默认是root

1. [root@Web01 ~]# mysqladmin password '666666' #设置密码为666666
2. [root@Web01 ~]# mysql -uroot -p666666 #登录数据库
3. Welcome to the MariaDB monitor.  Commands end with ; or \g.
4. Your MariaDB connection id is 3
5. Server version: 5.5.68-MariaDB MariaDB Server
6. 
7. Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
8. 
9. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
10. 
11. MariaDB [(none)]> show databases; #查看有哪些库
12. +--------------------+
13. | Database           |
14. +--------------------+
15. | information_schema |
16. | mysql              |
17. | performance_schema |
18. | test               |
19. +--------------------+
20. 4 rows in set (0.00 sec)
21. 
22. MariaDB [(none)]> create database hehe; #创建hehe库
23. Query OK, 1 row affected (0.00 sec)
24. 
25. MariaDB [(none)]> drop database hehe; #删除hehe库
26. Query OK, 0 rows affected (0.01 sec)
27. 
28. MariaDB [(none)]> quit #退出数据库
29. Bye
30. [root@Web01 ~]#

注意:配置数据库密码需要服务启动后才能配置

 

Nginx连通PHP

1. [root@Web01 /]# cat /etc/nginx/conf.d/default.conf 
2. server {
3.         listen 80;
4.         server_name php.koten.com;
5. 
6.         location / {
7.                 root /code;
8.                 index index.php index.html;
9.         }
10. 
11.         location ~ \.php$ {
12.                 root /code;
13.                 fastcgi_pass 127.0.0.1:9000;
14.                 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
15.           include fastcgi_params;
16. }
17. }
18. [root@Web01 /]# systemctl restart nginx
19. [root@Web01 /]# vim /code/index.php 
20. <?php
21.         phpinfo();
22. ?>

windows本地hosts解析后,即可访问PHP有关信息

PHP连通MySQL

1. [root@Web01 /]# vim /code/mysql.php
2. <?php
3. $servername = "localhost";
4. $username = "root";
5. $password = "123";
6. 
7.     // 创建连接
8. $conn = mysqli_connect($servername, $username, $password);
9. 
10.     // 检测连接
11. if (!$conn) {
12.         die("Connection failed: " . mysqli_connect_error());
13.     }
14. echo "php可以连接MySQL...";
15. ?>

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
存储 关系型数据库 MySQL
PHP与MySQL动态网站开发:从基础到实践####
本文将深入探讨PHP与MySQL的结合使用,展示如何构建一个动态网站。通过一系列实例和代码片段,我们将逐步了解数据库连接、数据操作、用户输入处理及安全防护等关键技术点。无论您是初学者还是有经验的开发者,都能从中获益匪浅。 ####
|
1月前
|
关系型数据库 MySQL PHP
php实现一个简单的MySQL分页
通过本文的详细步骤和代码示例,我们实现了一个简单的PHP MySQL分页功能。主要步骤包括计算总记录数、设置分页参数、查询当前页的数据以及生成分页链接。这种分页方式适用于大多数Web应用,能够有效提升用户体验和页面响应速度。
36 4
|
2月前
|
SQL 关系型数据库 MySQL
PHP与MySQL的高效协同开发策略####
本文深入探讨了PHP与MySQL在Web开发中的协同工作机制,通过优化配置、最佳实践和高级技巧,展示了如何提升数据库交互性能,确保数据安全,并促进代码可维护性。我们将从环境搭建讲起,逐步深入到查询优化、事务管理、安全防护及性能调优等核心环节,为开发者提供一套实战驱动的解决方案框架。 ####
|
1月前
|
SQL 关系型数据库 MySQL
PHP与MySQL的高效交互:从基础到实践####
本文深入探讨了PHP与MySQL数据库之间的高效交互技术,涵盖了从基础连接到高级查询优化的全过程。不同于传统的摘要概述,这里我们直接以一段精简代码示例作为引子,展示如何在PHP中实现与MySQL的快速连接与简单查询,随后文章将围绕这一核心,逐步展开详细讲解,旨在为读者提供一个从入门到精通的实战指南。 ```php <?php // 数据库配置信息 $servername = "localhost"; $username = "root"; $password = "password"; $dbname = "test_db"; // 创建连接 $conn = new mysqli($se
38 0
|
2月前
|
关系型数据库 MySQL PHP
PHP与MySQL的深度整合:构建高效动态网站####
在当今这个数据驱动的时代,掌握如何高效地从数据库中检索和操作数据是至关重要的。本文将深入探讨PHP与MySQL的深度整合方法,揭示它们如何协同工作以优化数据处理流程,提升网站性能和用户体验。我们将通过实例分析、技巧分享和最佳实践指导,帮助你构建出既高效又可靠的动态网站。无论你是初学者还是有经验的开发者,都能从中获得宝贵的见解和实用的技能。 ####
31 0
|
3月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
208 3
|
1月前
|
前端开发 安全 JavaScript
2025年,Web3开发学习路线全指南
本文提供了一条针对Dapp应用开发的学习路线,涵盖了Web3领域的重要技术栈,如区块链基础、以太坊技术、Solidity编程、智能合约开发及安全、web3.js和ethers.js库的使用、Truffle框架等。文章首先分析了国内区块链企业的技术需求,随后详细介绍了每个技术点的学习资源和方法,旨在帮助初学者系统地掌握Dapp开发所需的知识和技能。
2025年,Web3开发学习路线全指南
|
2月前
|
设计模式 前端开发 数据库
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第27天】本文介绍了Django框架在Python Web开发中的应用,涵盖了Django与Flask等框架的比较、项目结构、模型、视图、模板和URL配置等内容,并展示了实际代码示例,帮助读者快速掌握Django全栈开发的核心技术。
225 45
|
2月前
|
存储 前端开发 JavaScript
如何在项目中高效地进行 Web 组件化开发
高效地进行 Web 组件化开发需要从多个方面入手,通过明确目标、合理规划、规范开发、加强测试等一系列措施,实现组件的高效管理和利用,从而提高项目的整体开发效率和质量,为用户提供更好的体验。
42 7
|
2月前
|
开发框架 搜索推荐 数据可视化
Django框架适合开发哪种类型的Web应用程序?
Django 框架凭借其强大的功能、稳定性和可扩展性,几乎可以适应各种类型的 Web 应用程序开发需求。无论是简单的网站还是复杂的企业级系统,Django 都能提供可靠的支持,帮助开发者快速构建高质量的应用。同时,其活跃的社区和丰富的资源也为开发者在项目实施过程中提供了有力的保障。