【运维知识进阶篇】集群架构-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. ?>

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
存储 监控 安全
Veeam Backup & Replication 13 之初见 - 基于 Linux 和 Web 控制台
Veeam Backup & Replication 13 之初见 - 基于 Linux 和 Web 控制台
919 1
Veeam Backup & Replication 13 之初见 - 基于 Linux 和 Web 控制台
|
应用服务中间件 PHP nginx
今日小结通过aliyun的本地容器镜像部署我的nginx和php环境
简介: 本教程介绍如何基于 Dragonwell 的 Ubuntu 镜像创建一个运行 Nginx 的 Docker 容器。首先从阿里云容器镜像服务拉取基础镜像,然后编写 Dockerfile 确保 Nginx 作为主进程运行,并暴露 80 端口。最后,在包含 Dockerfile 的目录下构建自定义镜像并启动容器,确保 Nginx 在前台运行,避免容器启动后立即退出。通过 `docker build` 和 `docker run` 命令完成整个流程。
685 25
今日小结通过aliyun的本地容器镜像部署我的nginx和php环境
|
11月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
997 6
|
前端开发 JavaScript
探索现代Web应用的微前端架构
【10月更文挑战第40天】在数字时代的浪潮中,Web应用的发展日益复杂多变。微前端架构作为一种新兴的设计理念,正逐步改变着传统的单一前端开发模式。本文将深入探讨微前端的核心概念、实现原理及其在实际项目中的应用,同时通过一个简单的代码示例,揭示如何将一个庞大的前端工程拆分成小而美的模块,进而提升项目的可维护性、可扩展性和开发效率。
|
应用服务中间件 Linux nginx
【Azure App Service】基于Linux创建的App Service是否可以主动升级内置的Nginx版本呢?
基于Linux创建的App Service是否可以主动升级内置的Nginx版本呢?Web App Linux 默认使用的 Nginx 版本是由平台预定义的,无法更改这个版本。
436 77
|
负载均衡 算法 关系型数据库
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL集群架构负载均衡故障排除与解决方案
本文深入探讨 MySQL 集群架构负载均衡的常见故障及排除方法。涵盖请求分配不均、节点无法响应、负载均衡器故障等现象,介绍多种负载均衡算法及故障排除步骤,包括检查负载均衡器状态、调整算法、诊断修复节点故障等。还阐述了预防措施与确保系统稳定性的方法,如定期监控维护、备份恢复策略、团队协作与知识管理等。为确保 MySQL 数据库系统高可用性提供全面指导。
|
人工智能 Linux iOS开发
Burp Suite Professional 2025.2 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
Burp Suite Professional 2025.2 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
1134 12
Burp Suite Professional 2025.2 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
|
存储 消息中间件 缓存
支持百万人超大群聊的Web端IM架构设计与实践
本文将回顾实现一个支持百万人超大群聊的Web端IM架构时遇到的技术挑战和解决思路,内容包括:通信方案选型、消息存储、消息有序性、消息可靠性、未读数统计。希望能带给你启发。
846 0
支持百万人超大群聊的Web端IM架构设计与实践
|
监控 关系型数据库 MySQL
云数据库:从零到一,构建高可用MySQL集群
在互联网时代,数据成为企业核心资产,传统单机数据库难以满足高并发、高可用需求。云数据库通过弹性扩展、分布式架构等优势解决了这些问题,但也面临数据安全和性能优化挑战。本文介绍了如何从零开始构建高可用MySQL集群,涵盖选择云服务提供商、创建实例、配置高可用架构、数据备份恢复及性能优化等内容,并通过电商平台案例展示了具体应用。