简体中文 繁體中文 English Deutsch 한국 사람 بالعربية TÜRKÇE português คนไทย Français Japanese

站内搜索

搜索
AI 风月

活动公告

03-01 22:34
通知:本站资源由网友上传分享,如有违规等问题请到版务模块进行投诉,资源失效请在帖子内回复要求补档,会尽快处理!
10-23 09:31

CentOS 8服务器安装PHP与Apache的完整指南轻松搭建个人或企业网站运行环境

3万

主题

640

科技点

3万

积分

白金月票

碾压王

积分
32704

立华奏

发表于 2025-9-8 11:40:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
引言

在当今数字化时代,拥有一个可靠的网络服务器环境对于个人开发者和企业都至关重要。CentOS作为一款稳定、安全且免费的企业级Linux发行版,是搭建网站服务器的理想选择。结合强大的Apache web服务器和灵活的PHP编程语言,您可以创建一个功能完善的网站运行环境。本指南将详细介绍如何在CentOS 8系统上安装和配置PHP与Apache,帮助您轻松搭建适合个人或企业使用的网站运行环境。

准备工作

在开始安装之前,我们需要确保系统满足基本要求并进行必要的准备工作。

系统要求

• 已安装CentOS 8操作系统
• 至少1GB RAM(推荐2GB或更多)
• 至少20GB的可用磁盘空间
• 具有sudo权限的用户账户
• 稳定的网络连接

系统更新

首先,确保您的系统是最新的。打开终端,执行以下命令更新系统软件包:
  1. sudo dnf update -y
复制代码

安装必要的工具

安装一些基本的工具,这些工具在后续的安装和配置过程中可能会用到:
  1. sudo dnf install -y wget vim curl unzip
复制代码

配置防火墙

CentOS 8默认使用firewalld作为防火墙。我们需要确保HTTP和HTTPS服务可以通过防火墙:
  1. sudo firewall-cmd --permanent --add-service=http
  2. sudo firewall-cmd --permanent --add-service=https
  3. sudo firewall-cmd --reload
复制代码

如果您不熟悉firewalld,也可以暂时禁用防火墙(不推荐在生产环境中使用):
  1. sudo systemctl stop firewalld
  2. sudo systemctl disable firewalld
复制代码

SELinux设置

SELinux(Security-Enhanced Linux)是CentOS的强制访问控制系统。为了确保Apache和PHP能够正常运行,我们需要正确配置SELinux。首先检查SELinux的状态:
  1. sestatus
复制代码

如果SELinux处于 enforcing 模式,我们需要确保Apache有正确的权限:
  1. sudo setsebool -P httpd_can_network_connect=1
  2. sudo setsebool -P httpd_execmem=1
复制代码

安装Apache Web服务器

Apache(也称为httpd)是世界上使用最广泛的Web服务器软件。下面是在CentOS 8上安装Apache的步骤。

安装Apache

使用dnf包管理器安装Apache:
  1. sudo dnf install -y httpd
复制代码

启动并启用Apache服务

安装完成后,启动Apache服务并设置为开机自启:
  1. sudo systemctl start httpd
  2. sudo systemctl enable httpd
复制代码

验证Apache安装

检查Apache服务的状态:
  1. sudo systemctl status httpd
复制代码

如果服务正在运行,您应该看到绿色的”active (running)“状态。

您还可以通过Web浏览器验证Apache是否正常工作。在浏览器地址栏输入您的服务器IP地址:
  1. http://your_server_ip
复制代码

如果看到Apache的默认欢迎页面,说明Apache已成功安装。

Apache基本配置

Apache的主配置文件位于/etc/httpd/conf/httpd.conf。您可以使用文本编辑器(如vim或nano)修改此文件:
  1. sudo vim /etc/httpd/conf/httpd.conf
复制代码

以下是一些常用的配置项:

• ServerName:设置服务器的主机名和端口。如果没有设置,Apache会尝试从系统获取。建议明确设置:
  1. ServerName your_server_ip:80
复制代码

• Listen:指定Apache监听的IP地址和端口。默认是监听所有IP地址的80端口:
  1. Listen 80
复制代码

• DocumentRoot:设置网站文件的根目录。默认是/var/www/html:
  1. DocumentRoot "/var/www/html"
复制代码

修改配置后,需要重新启动Apache服务使更改生效:
  1. sudo systemctl restart httpd
复制代码

创建虚拟主机(可选)

如果您计划在服务器上托管多个网站,可以配置虚拟主机。以下是一个简单的虚拟主机配置示例:

1. 为您的网站创建目录:
  1. sudo mkdir -p /var/www/example.com
  2. sudo chown -R apache:apache /var/www/example.com
  3. sudo chmod -R 755 /var/www/example.com
复制代码

1. 创建一个简单的测试页面:
  1. echo "<html>
  2.   <head>
  3.     <title>Welcome to Example.com!</title>
  4.   </head>
  5.   <body>
  6.     <h1>Success! The example.com virtual host is working!</h1>
  7.   </body>
  8. </html>" | sudo tee /var/www/example.com/index.html
复制代码

1. 创建虚拟主机配置文件:
  1. sudo vim /etc/httpd/conf.d/example.com.conf
复制代码

添加以下内容:
  1. <VirtualHost *:80>
  2.     ServerName example.com
  3.     ServerAlias www.example.com
  4.     DocumentRoot /var/www/example.com
  5.    
  6.     <Directory /var/www/example.com>
  7.         Options Indexes FollowSymLinks
  8.         AllowOverride All
  9.         Require all granted
  10.     </Directory>
  11.    
  12.     ErrorLog /var/log/httpd/example.com-error.log
  13.     CustomLog /var/log/httpd/example.com-access.log combined
  14. </VirtualHost>
复制代码

1. 检查配置文件语法并重启Apache:
  1. sudo apachectl configtest
  2. sudo systemctl restart httpd
复制代码

安装PHP

PHP是一种广泛使用的服务器端脚本语言,特别适合Web开发。在CentOS 8上,我们可以使用Remi存储库来安装最新版本的PHP。

添加EPEL和Remi存储库

首先,安装EPEL(Extra Packages for Enterprise Linux)存储库:
  1. sudo dnf install -y epel-release
复制代码

然后,安装Remi存储库:
  1. sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm
复制代码

安装PHP及相关模块

查看可用的PHP版本:
  1. sudo dnf module list php
复制代码

选择要安装的PHP版本并启用相应的模块流。例如,要安装PHP 7.4:
  1. sudo dnf module enable php:remi-7.4 -y
复制代码

安装PHP及常用扩展:
  1. sudo dnf install -y php php-cli php-common php-fpm php-mysqlnd php-zip php-gd php-mbstring php-curl php-xml php-pear php-bcmath php-json
复制代码

如果您需要其他PHP扩展,可以使用以下命令搜索并安装:
  1. sudo dnf search php-
  2. sudo dnf install -y php-extension_name
复制代码

配置PHP

PHP的主配置文件是/etc/php.ini。您可以使用文本编辑器修改此文件:
  1. sudo vim /etc/php.ini
复制代码

以下是一些常用的配置项:

• memory_limit:设置PHP脚本可用的最大内存量。默认值通常是128M,对于复杂的应用程序可能需要增加:
  1. memory_limit = 256M
复制代码

• upload_max_filesize和post_max_size:设置上传文件的最大大小:
  1. upload_max_filesize = 64M
  2. post_max_size = 64M
复制代码

• max_execution_time:设置脚本的最大执行时间(秒):
  1. max_execution_time = 300
复制代码

• date.timezone:设置时区:
  1. date.timezone = Asia/Shanghai
复制代码

修改配置后,需要重启Apache服务使更改生效:
  1. sudo systemctl restart httpd
复制代码

配置PHP-FPM(可选)

PHP-FPM(FastCGI Process Manager)是一个替代PHP FastCGI的实现,具有一些额外的功能,特别适用于高流量网站。如果您选择使用PHP-FPM,请按照以下步骤配置:

1. 安装PHP-FPM:
  1. sudo dnf install -y php-fpm
复制代码

1. 启动并启用PHP-FPM服务:
  1. sudo systemctl start php-fpm
  2. sudo systemctl enable php-fpm
复制代码

1. 配置PHP-FPM池。编辑/etc/php-fpm.d/www.conf文件:
  1. sudo vim /etc/php-fpm.d/www.conf
复制代码

根据您的需求调整以下参数:
  1. listen = /var/run/php-fpm/php-fpm.sock
  2. listen.owner = apache
  3. listen.group = apache
  4. listen.mode = 0660
  5. user = apache
  6. group = apache
复制代码

1. 重启PHP-FPM服务:
  1. sudo systemctl restart php-fpm
复制代码

1. 配置Apache使用PHP-FPM。创建或编辑Apache配置文件:
  1. sudo vim /etc/httpd/conf.d/php-fpm.conf
复制代码

添加以下内容:
  1. <FilesMatch \.php$>
  2.     SetHandler "proxy:fcgi://localhost:9000"
  3. </FilesMatch>
复制代码

1. 重启Apache服务:
  1. sudo systemctl restart httpd
复制代码

配置Apache与PHP协同工作

现在我们已经安装了Apache和PHP,需要确保它们能够正确协同工作。

测试PHP处理

创建一个PHP测试文件来验证PHP是否正确配置:
  1. echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
复制代码

在Web浏览器中访问此文件:
  1. http://your_server_ip/info.php
复制代码

如果看到PHP信息页面,说明PHP已正确配置并与Apache协同工作。

安全提示:测试完成后,建议删除此文件,因为它包含有关您的PHP安装的敏感信息:
  1. sudo rm /var/www/html/info.php
复制代码

配置Apache处理PHP文件

Apache需要知道如何处理.php文件。确保已加载PHP模块。在CentOS 8上,当您安装PHP时,通常会自动配置Apache。但如果没有,您可能需要手动配置。

检查PHP模块是否已加载:
  1. sudo httpd -M | grep php
复制代码

如果看到php7_module (shared)或类似输出,说明PHP模块已加载。

如果需要手动配置,创建或编辑PHP配置文件:
  1. sudo vim /etc/httpd/conf.d/php.conf
复制代码

添加以下内容:
  1. <IfModule mod_php7.c>
  2.     <FilesMatch \.php$>
  3.         SetHandler application/x-httpd-php
  4.     </FilesMatch>
  5.    
  6.     <FilesMatch \.phps$>
  7.         SetHandler application/x-httpd-php-source
  8.     </FilesMatch>
  9.    
  10.     # PHP is a module
  11.     php_value session.save_handler "files"
  12.     php_value session.save_path    "/var/lib/php/session"
  13. </IfModule>
复制代码

确保会话目录存在并具有正确的权限:
  1. sudo mkdir -p /var/lib/php/session
  2. sudo chown -R apache:apache /var/lib/php/session
  3. sudo chmod -R 770 /var/lib/php/session
复制代码

重启Apache服务:
  1. sudo systemctl restart httpd
复制代码

安装和配置数据库(可选)

大多数动态网站都需要数据库来存储数据。MySQL或MariaDB是最常用的选择之一。以下是安装MariaDB的步骤:

安装MariaDB
  1. sudo dnf install -y mariadb-server mariadb
复制代码

启动并启用MariaDB服务
  1. sudo systemctl start mariadb
  2. sudo systemctl enable mariadb
复制代码

安全配置MariaDB

运行安全配置脚本:
  1. sudo mysql_secure_installation
复制代码

按照提示设置root密码、删除匿名用户、禁止root远程登录等。

创建数据库和用户

登录MariaDB:
  1. mysql -u root -p
复制代码

创建数据库和用户:
  1. CREATE DATABASE your_database_name;
  2. CREATE USER 'your_user'@'localhost' IDENTIFIED BY 'your_password';
  3. GRANT ALL PRIVILEGES ON your_database_name.* TO 'your_user'@'localhost';
  4. FLUSH PRIVILEGES;
  5. EXIT;
复制代码

安装PHP数据库扩展

确保已安装PHP的MySQL扩展:
  1. sudo dnf install -y php-mysqlnd
复制代码

重启Apache服务:
  1. sudo systemctl restart httpd
复制代码

测试网站环境

现在我们已经安装了所有必要的组件,让我们创建一个简单的PHP网站来测试环境。

创建测试网站

1. 创建网站目录:
  1. sudo mkdir -p /var/www/mywebsite
  2. sudo chown -R apache:apache /var/www/mywebsite
  3. sudo chmod -R 755 /var/www/mywebsite
复制代码

1. 创建一个简单的PHP页面:
  1. sudo vim /var/www/mywebsite/index.php
复制代码

添加以下内容:
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6.     <title>My Test Website</title>
  7. </head>
  8. <body>
  9.     <h1>Welcome to My Test Website</h1>
  10.     <p>This is a test page to verify that PHP and Apache are working correctly.</p>
  11.    
  12.     <?php
  13.     echo "<h2>PHP Information</h2>";
  14.     echo "<p>PHP Version: " . phpversion() . "</p>";
  15.    
  16.     // Test database connection if you have installed MariaDB/MySQL
  17.     $db_host = 'localhost';
  18.     $db_user = 'your_user';
  19.     $db_pass = 'your_password';
  20.     $db_name = 'your_database_name';
  21.    
  22.     $conn = new mysqli($db_host, $db_user, $db_pass, $db_name);
  23.    
  24.     if ($conn->connect_error) {
  25.         echo "<p>Database connection failed: " . $conn->connect_error . "</p>";
  26.     } else {
  27.         echo "<p>Database connection successful!</p>";
  28.         $conn->close();
  29.     }
  30.     ?>
  31.    
  32.     <h2>Server Information</h2>
  33.     <p>Server Software: <?php echo $_SERVER['SERVER_SOFTWARE']; ?></p>
  34.     <p>Server Name: <?php echo $_SERVER['SERVER_NAME']; ?></p>
  35.     <p>Document Root: <?php echo $_SERVER['DOCUMENT_ROOT']; ?></p>
  36. </body>
  37. </html>
复制代码

1. 配置Apache虚拟主机:
  1. sudo vim /etc/httpd/conf.d/mywebsite.conf
复制代码

添加以下内容:
  1. <VirtualHost *:80>
  2.     ServerName mywebsite.local
  3.     DocumentRoot /var/www/mywebsite
  4.    
  5.     <Directory /var/www/mywebsite>
  6.         Options Indexes FollowSymLinks
  7.         AllowOverride All
  8.         Require all granted
  9.     </Directory>
  10.    
  11.     ErrorLog /var/log/httpd/mywebsite-error.log
  12.     CustomLog /var/log/httpd/mywebsite-access.log combined
  13. </VirtualHost>
复制代码

1. 检查配置并重启Apache:
  1. sudo apachectl configtest
  2. sudo systemctl restart httpd
复制代码

1. 在浏览器中访问您的网站:
  1. http://your_server_ip
复制代码

或者,如果您配置了DNS或hosts文件,可以使用域名访问。

常见问题及解决方案

Apache无法启动

如果Apache无法启动,首先检查错误日志:
  1. sudo tail -n 50 /var/log/httpd/error_log
复制代码

常见问题包括:

1. 端口80被占用:
  1. sudo netstat -tlnp | grep :80
复制代码

找到占用端口的进程并停止它,或者更改Apache的监听端口。

1. 配置文件语法错误:
  1. sudo apachectl configtest
复制代码

修复报告的任何语法错误。

1. SELinux阻止Apache运行:
  1. sudo grep httpd /var/log/audit/audit.log | audit2allow -M mypolicy
  2. sudo semodule -i mypolicy.pp
复制代码

PHP文件不被解析,而是显示源代码或下载

这通常是因为Apache没有正确配置来处理PHP文件。检查:

1. PHP模块是否已加载:
  1. sudo httpd -M | grep php
复制代码

1. PHP配置文件是否正确:
  1. sudo cat /etc/httpd/conf.d/php.conf
复制代码

确保包含类似以下内容:
  1. <FilesMatch \.php$>
  2.     SetHandler application/x-httpd-php
  3. </FilesMatch>
复制代码

1. 重启Apache服务:
  1. sudo systemctl restart httpd
复制代码

上传文件大小限制

如果您遇到上传文件大小限制的问题,需要修改PHP配置:
  1. sudo vim /etc/php.ini
复制代码

修改以下值:
  1. upload_max_filesize = 64M
  2. post_max_size = 64M
复制代码

然后重启Apache服务:
  1. sudo systemctl restart httpd
复制代码

权限问题

如果网站文件无法访问或写入,检查文件权限:
  1. sudo chown -R apache:apache /var/www/mywebsite
  2. sudo chmod -R 755 /var/www/mywebsite
复制代码

对于需要写入的目录,如上传目录,可以设置更高的权限:
  1. sudo chmod -R 775 /var/www/mywebsite/uploads
复制代码

安全优化

为了确保您的网站环境安全,请考虑以下安全优化措施:

更新系统

定期更新系统和软件包:
  1. sudo dnf update -y
复制代码

配置防火墙

确保只开放必要的端口:
  1. sudo firewall-cmd --permanent --add-service=http
  2. sudo firewall-cmd --permanent --add-service=https
  3. sudo firewall-cmd --reload
复制代码

禁用不必要的Apache模块

查看已启用的Apache模块:
  1. sudo httpd -M
复制代码

禁用不必要的模块,编辑Apache配置文件并注释掉不需要的模块加载行:
  1. sudo vim /etc/httpd/conf.modules.d/00-base.conf
复制代码

隐藏Apache和PHP版本

编辑Apache配置文件:
  1. sudo vim /etc/httpd/conf/httpd.conf
复制代码

添加或修改以下行:
  1. ServerTokens Prod
  2. ServerSignature Off
复制代码

编辑PHP配置文件:
  1. sudo vim /etc/php.ini
复制代码

添加或修改以下行:
  1. expose_php = Off
复制代码

重启Apache服务:
  1. sudo systemctl restart httpd
复制代码

安装ModSecurity

ModSecurity是一个Web应用防火墙,可以帮助保护您的网站免受攻击:
  1. sudo dnf install -y mod_security
  2. sudo systemctl restart httpd
复制代码

使用SSL/TLS加密

为您的网站配置SSL/TLS证书,启用HTTPS。您可以使用免费的Let’s Encrypt证书:
  1. sudo dnf install -y certbot python3-certbot-apache
  2. sudo certbot --apache
复制代码

按照提示完成证书申请和配置。

定期备份

设置定期备份您的网站文件和数据库:
  1. #!/bin/bash
  2. # Backup script
  3. # Variables
  4. BACKUP_DIR="/backup"
  5. WEBSITE_DIR="/var/www/mywebsite"
  6. DB_NAME="your_database_name"
  7. DB_USER="your_user"
  8. DB_PASS="your_password"
  9. DATE=$(date +%Y%m%d)
  10. # Create backup directory if it doesn't exist
  11. mkdir -p $BACKUP_DIR
  12. # Backup website files
  13. tar -czf $BACKUP_DIR/website_backup_$DATE.tar.gz $WEBSITE_DIR
  14. # Backup database
  15. mysqldump -u $DB_USER -p$DB_PASS $DB_NAME | gzip > $BACKUP_DIR/database_backup_$DATE.sql.gz
  16. # Delete backups older than 30 days
  17. find $BACKUP_DIR -type f -name "*.gz" -mtime +30 -delete
复制代码

将此脚本保存为backup.sh,然后设置cron任务定期执行:
  1. sudo chmod +x backup.sh
  2. sudo crontab -e
复制代码

添加以下行以每天凌晨2点运行备份:
  1. 0 2 * * * /path/to/backup.sh
复制代码

性能优化

为了确保您的网站运行高效,请考虑以下性能优化措施:

启用Apache缓存

启用Apache的mod_cache和mod_disk_cache模块:
  1. sudo vim /etc/httpd/conf.d/cache.conf
复制代码

添加以下内容:
  1. LoadModule cache_module modules/mod_cache.so
  2. LoadModule disk_cache_module modules/mod_disk_cache.so
  3. <IfModule mod_cache.c>
  4.     CacheQuickHandler off
  5.     CacheLock on
  6.     CacheLockPath /tmp/mod_cache-lock
  7.     CacheLockMaxAge 5
  8.     CacheEnable disk /
  9.     CacheRoot /var/cache/httpd/mod_disk_cache
  10.     CacheDirLevels 2
  11.     CacheDirLength 1
  12. </IfModule>
复制代码

创建缓存目录并设置权限:
  1. sudo mkdir -p /var/cache/httpd/mod_disk_cache
  2. sudo chown -R apache:apache /var/cache/httpd/mod_disk_cache
  3. sudo chmod -R 700 /var/cache/httpd/mod_disk_cache
复制代码

重启Apache服务:
  1. sudo systemctl restart httpd
复制代码

启用PHP OPcache

OPcache可以显著提高PHP性能。编辑PHP配置文件:
  1. sudo vim /etc/php.d/10-opcache.ini
复制代码

添加或修改以下配置:
  1. opcache.enable=1
  2. opcache.memory_consumption=128
  3. opcache.interned_strings_buffer=8
  4. opcache.max_accelerated_files=4000
  5. opcache.revalidate_freq=60
  6. opcache.fast_shutdown=1
  7. opcache.enable_cli=1
  8. opcache.validate_timestamps=0  # Set to 1 in development environment
复制代码

重启Apache服务:
  1. sudo systemctl restart httpd
复制代码

使用PHP-FPM

如前所述,PHP-FPM比传统的mod_php更高效,特别是在高流量网站上。考虑使用PHP-FPM替代mod_php。

优化MySQL/MariaDB

编辑MySQL/MariaDB配置文件:
  1. sudo vim /etc/my.cnf.d/mariadb-server.cnf
复制代码

在[mysqld]部分添加或修改以下配置:
  1. innodb_buffer_pool_size = 1G  # Adjust based on available RAM
  2. innodb_log_file_size = 256M
  3. query_cache_type = 1
  4. query_cache_size = 128M
  5. query_cache_limit = 2M
复制代码

重启MariaDB服务:
  1. sudo systemctl restart mariadb
复制代码

使用内容分发网络(CDN)

对于高流量网站,考虑使用CDN来分发静态内容,减轻服务器负担。

总结

通过本指南,您已经成功在CentOS 8服务器上安装了Apache和PHP,并配置了一个完整的网站运行环境。我们涵盖了从基础安装到高级配置和安全优化的各个方面,为您提供了一个稳定、安全且高效的Web服务器环境。

无论您是搭建个人博客还是企业网站,这个环境都能满足您的需求。随着您的网站发展,您可能需要进一步优化和扩展这个环境,例如添加负载均衡、配置集群或实施更高级的安全措施。

记住,维护一个Web服务器是一个持续的过程,包括定期更新、监控和备份。通过遵循最佳实践和保持警惕,您可以确保您的网站始终保持安全、稳定和高效。

祝您的网站项目取得成功!
「七転び八起き(ななころびやおき)」
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

手机版|联系我们|小黑屋|TG频道|RSS |网站地图

Powered by Pixtech

© 2025-2026 Pixtech Team.

>