nginx mysql php怎么安装配置

发布时间:2021-10-27 09:46:12 作者:iii
来源:亿速云 阅读:159
# Nginx MySQL PHP安装配置全指南

## 前言

在搭建现代Web应用时,LNMP(Linux + Nginx + MySQL + PHP)是最流行的技术栈之一。本文将详细介绍如何在Linux系统上安装和配置Nginx、MySQL和PHP,并实现三者的协同工作。

---

## 第一部分:环境准备

### 1.1 系统要求

- **操作系统**:Ubuntu 20.04/22.04 LTS 或 CentOS 7/8
- **硬件配置**:
  - 最低1GB内存
  - 10GB可用磁盘空间
- **网络要求**:
  - 稳定的互联网连接
  - 开放80(HTTP)和443(HTTPS)端口

### 1.2 更新系统软件包

```bash
# Ubuntu/Debian
sudo apt update && sudo apt upgrade -y

# CentOS/RHEL
sudo yum update -y

1.3 安装必要工具

# Ubuntu/Debian
sudo apt install -y curl wget unzip git

# CentOS/RHEL
sudo yum install -y curl wget unzip git

第二部分:Nginx安装与配置

2.1 安装Nginx

# Ubuntu/Debian
sudo apt install -y nginx

# CentOS/RHEL
sudo yum install -y epel-release
sudo yum install -y nginx

2.2 启动Nginx服务

sudo systemctl start nginx
sudo systemctl enable nginx

2.3 验证安装

访问服务器IP应看到Nginx欢迎页面:

curl -I 127.0.0.1

2.4 基本配置

编辑主配置文件:

sudo nano /etc/nginx/nginx.conf

关键配置项:

user www-data;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

events {
    worker_connections 1024;
}

http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;
    sendfile on;
    keepalive_timeout 65;
    
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

2.5 创建虚拟主机

示例配置(/etc/nginx/sites-available/example.com):

server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/example.com;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }
}

启用站点:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t  # 测试配置
sudo systemctl reload nginx

第三部分:MySQL安装与配置

3.1 安装MySQL

# Ubuntu/Debian
sudo apt install -y mysql-server

# CentOS/RHEL
sudo yum install -y mysql-server

3.2 安全配置

运行安全脚本:

sudo mysql_secure_installation

将依次设置: 1. 密码强度验证插件 2. root密码 3. 移除匿名用户 4. 禁止远程root登录 5. 移除测试数据库 6. 重新加载权限表

3.3 创建数据库和用户

sudo mysql -u root -p

# MySQL命令行
CREATE DATABASE example_db;
CREATE USER 'example_user'@'localhost' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON example_db.* TO 'example_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

3.4 性能优化

编辑配置文件(/etc/mysql/my.cnf):

[mysqld]
innodb_buffer_pool_size = 1G  # 根据内存调整
max_connections = 200
query_cache_size = 64M
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

第四部分:PHP安装与配置

4.1 安装PHP

# Ubuntu/Debian
sudo apt install -y php8.1 php8.1-fpm php8.1-mysql php8.1-curl php8.1-gd php8.1-mbstring php8.1-xml php8.1-zip

# CentOS/RHEL
sudo yum install -y php php-fpm php-mysqlnd php-curl php-gd php-mbstring php-xml php-zip

4.2 配置PHP-FPM

编辑配置文件(/etc/php/8.1/fpm/php.ini):

memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
date.timezone = Asia/Shanghai

配置PHP-FPM池(/etc/php/8.1/fpm/pool.d/www.conf):

user = www-data
group = www-data
listen = /var/run/php/php8.1-fpm.sock
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35

4.3 启动服务

sudo systemctl start php8.1-fpm
sudo systemctl enable php8.1-fpm

第五部分:集成测试

5.1 创建测试文件

sudo nano /var/www/example.com/info.php

内容:

<?php
phpinfo();
?>

5.2 测试PHP处理

访问 http://your_server_ip/info.php 应显示PHP信息页面

5.3 测试MySQL连接

创建测试文件(/var/www/example.com/dbtest.php):

<?php
$db = new mysqli('localhost', 'example_user', 'StrongPassword123!', 'example_db');

if ($db->connect_error) {
    die("连接失败: " . $db->connect_error);
}
echo "MySQL连接成功!";
?>

第六部分:安全加固

6.1 Nginx安全

  1. 隐藏Nginx版本号:
server_tokens off;
  1. 限制HTTP方法:
if ($request_method !~ ^(GET|HEAD|POST)$ ) {
    return 444;
}

6.2 MySQL安全

  1. 定期备份:
mysqldump -u root -p --all-databases > full_backup.sql
  1. 启用日志:
[mysqld]
general_log = 1
general_log_file = /var/log/mysql/mysql.log

6.3 PHP安全

  1. 禁用危险函数:
disable_functions = exec,passthru,shell_exec,system,proc_open,popen
  1. 限制文件访问:
open_basedir = /var/www/example.com:/tmp

第七部分:常见问题解决

7.1 502 Bad Gateway错误

可能原因: - PHP-FPM未运行 - Socket权限问题

解决方案:

sudo systemctl restart php8.1-fpm
sudo chown www-data:www-data /var/run/php/php8.1-fpm.sock

7.2 MySQL连接被拒绝

检查:

sudo netstat -tulnp | grep mysql

7.3 PHP扩展缺失

安装示例:

sudo apt install -y php8.1-redis
sudo systemctl restart php8.1-fpm

结语

通过本文的详细步骤,您应该已经成功搭建了LNMP环境。建议定期更新软件并监控服务器性能。对于生产环境,还应考虑配置SSL证书、设置防火墙规则等额外安全措施。

推荐进一步学习: - Let’s Encrypt SSL配置 - Nginx负载均衡设置 - MySQL主从复制 - PHP OPcache优化 “`

注:实际字数约2800字,要达到4250字需要扩展以下内容: 1. 每个组件的详细原理说明 2. 更多配置示例(如负载均衡、缓存配置) 3. 性能调优的深度指南 4. 详细的故障排除案例 5. 安全性审计的完整流程 6. 备份恢复的具体方案 需要补充哪些部分可以告诉我,我可以继续扩展。

推荐阅读:
  1. centos8如何安装配置nginx
  2. 快速建立LNMP(CentOS8+Nginx+MariaDB+PHP+WordPress)博客环境

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

nginx mysql php

上一篇:如何使用php正则

下一篇:Mysql数据分组排名实现的示例分析

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》