运维为什么要学lamp
apt管理ubuntu软件,综合软件部署练习。
LAMP(Linux + Apache + MySQL + PHP/Perl/Python)是一种经典的Web应用程序架构,被广泛用于搭建动态网站和Web应用。
学习LAMP架构有以下几个重要原因:
- 广泛应用:许多Web应用程序都是基于LAMP架构构建的,掌握LAMP能够帮助你更好地理解和管理这些应用。
- 基础技能:学习LAMP架构可以帮助你掌握Linux操作系统、Apache Web服务器、MySQL数据库和PHP/Perl/Python等编程语言的基本使用和配置。
- 系统管理:LAMP架构涉及到多个组件,学习它可以帮助你了解系统管理的各个方面,包括安装、配置、优化和故障排除。
- 就业机会:熟练掌握LAMP架构相关技术可以增加你在Web开发和系统管理领域的就业机会,因为许多企业在寻找懂得这些技术的人才。
总的来说,学习LAMP架构对于从事Web开发、系统管理和相关领域的运维人员来说是非常有价值的。
lamp适用于什么业务,场景
LAMP架构适用于许多类型的业务和场景,特别是针对需要搭建动态、交互性强的Web应用程序的情况。以下是一些适合使用LAMP架构的业务和场景:
- 网站开发:LAMP架构非常适合开发各种规模的网站,包括企业网站、电子商务网站、新闻门户等。
- Web应用程序:许多Web应用程序,如博客、论坛、社交网络、在线工具等,都可以使用LAMP架构进行开发和部署。
- 内部管理系统:企业内部的管理系统,如人事管理系统、财务管理系统等,可以使用LAMP架构构建。
- 在线服务:各种类型的在线服务,如在线教育、在线咨询、在线预订等,都可以使用LAMP架构来支持。
- 数据展示和分析:需要展示和分析大量数据的应用,如数据可视化平台、报表系统等,也适合使用LAMP架构。
总的来说,只要涉及到Web应用程序开发和部署的场景,LAMP架构都是一个不错的选择,特别是对于小型和中型的项目来说。
lamp性能如何,有什么替代方案
LAMP架构在性能方面可以说是相当可靠的,但性能取决于各个组件的配置、优化以及应用程序本身的设计。以下是一些影响LAMP性能的因素:
- 硬件配置:服务器的硬件配置(CPU、内存、硬盘)会直接影响LAMP架构的性能表现。
- 软件配置:Linux、Apache、MySQL和PHP/Perl/Python的配置和优化对性能至关重要。例如,调整Apache的并发连接数、启用缓存、优化MySQL的查询等都可以提升性能。
- 代码优化:编写高效的代码和SQL查询也是提升性能的关键。避免过多的数据库查询和复杂的业务逻辑可以减轻服务器负载。
- 负载均衡和缓存:在高负载情况下,可以使用负载均衡来分散流量,以及使用缓存技术(如Memcached、Redis)来减轻数据库压力。
- 替代方案:虽然LAMP架构是一种成熟和广泛应用的方案,但也有一些替代方案,如LEMP(Linux + Nginx + MySQL + PHP/Perl/Python)和MEAN(MongoDB + Express + AngularJS + Node.js)。这些方案在某些方面可能具有更好的性能表现或开发体验,可以根据实际需求进行选择。
综合来看,LAMP架构在适当的配置和优化下可以提供良好的性能,但在高负载和大规模应用场景下,可能需要考虑更高级的解决方案来满足性能需求。
Discuz论坛项目
Discuz!是一个基于PHP和MySQL的社区论坛系统,它可以在LAMP架构上运行。学习如何使用Discuz!可以帮助你更深入地理解和应用LAMP架构中的PHP和MySQL技术。具体来说,通过学习Discuz!你可以:
- 熟悉PHP编程:Discuz!是用PHP编写的,通过对其源代码的学习和修改,可以帮助你提升PHP编程技能。(php/python/)
- 了解MySQL数据库:Discuz!使用MySQL作为后端数据库,通过配置和管理Discuz!的数据库,你可以学习MySQL数据库的基本操作和优化技巧。
SQL - 掌握Web开发技术:通过使用Discuz!构建和定制论坛系统,你可以了解到如何使用HTML、CSS和JavaScript等前端技术,以及如何与后端PHP代码进行交互。
HTML,js,css - 系统管理和优化:在部署和维护Discuz!时,你可以学习到如何在Linux系统上配置和优化Apache服务器,以及如何监控和调整系统性能。``
总的来说,通过学习和使用Discuz!你可以很好地结合实际项目来学习和应用LAMP架构中的各项技术,为将来的Web开发和系统管理奠定良好的基础。
部署流程
- linux
- apache
- mysql
- php
LAMP详解
linux是什么
Linux 是一种开源的类 Unix 操作系统内核,由 Linus Torvalds 在1991年首次发布。Linux 内核负责管理计算机的硬件资源,并提供了许多系统级的功能,如进程管理、内存管理、文件系统等。除了 Linux 内核外,一个完整的 Linux 系统还包括了各种 GNU 工具和其他软件,组合在一起构成了一个完整的操作系统,通常称为 Linux 发行版(Linux distribution)。
Linux 具有以下特点:
- 开源:Linux 内核及大部分相关软件都是开源的,意味着用户可以自由查看、修改和分发源代码。
- 多用户:Linux 支持多用户同时登录,并为每个用户提供独立的环境和资源。
- 多任务:Linux 支持多任务处理,可以同时运行多个程序。
- 稳定性:Linux 内核和大部分软件经过严格测试,通常比较稳定,可以长时间运行而不需要重新启动。
- 安全性:Linux 具有较好的安全性,有强大的权限管理和访问控制机制,减少了受到恶意软件攻击的风险。
- 灵活性:Linux 可以在各种硬件平台上运行,支持多种文件系统,具有较高的灵活性和可定制性。
Linux 在服务器、嵌入式系统、超级计算机等领域得到广泛应用,也是许多个人用户选择的操作系统之一。
apache是什么
Apache 是一个开源的、跨平台的 Web 服务器软件,是目前互联网上使用最广泛的 Web 服务器软件之一。Apache 的全称是 Apache HTTP Server,它最初由美国国家超级计算应用中心(National Center for Supercomputing Applications,NCSA)开发,后来成为一个独立的开源项目。Apache 是一个功能强大、稳定可靠的 Web 服务器,支持多种操作系统(如 Linux、Unix、Windows 等),并提供了丰富的功能和灵活的配置选项。Apache 的主要特点包括:
- 开源免费:Apache 是开源软件,可以免费获取、使用和修改。
- 跨平台:Apache 可以运行在多种操作系统上,如 Linux、Unix、Windows 等。
- 模块化:Apache 的功能可以通过模块进行扩展,可以根据需要加载不同的模块来提供额外的功能。
- 稳定可靠:Apache 经过长期的发展和测试,具有较高的稳定性和可靠性,可以处理大量的并发请求。
- 灵活配置:Apache 提供了丰富的配置选项,管理员可以根据需求灵活配置服务器的行为和性能。
- 安全性:Apache 提供了一些安全性功能,如访问控制、加密传输等,可以帮助保护 Web 服务器和网站免受攻击。
总的来说,Apache 是一个强大、稳定、灵活的 Web 服务器软件,适用于各种规模的网站和 Web 应用程序。
这玩意,简单过一遍,apache配置相比nginx,太复杂,太吃配置,啰嗦,用的不如nginx多了。
web server ,这个软件,启动之后,你就可以访问你IP:port 看到你的产品
apache = nginx 更牛逼一些
LAMP
⬇️
LNMP
mysql是什么
运维,综合技能,linux基础,软件配置,不需要自己额外去看apache,mysql是什么,。不需要。
抓重点,你当下在学什么,需要理解什么。
当你学到mysql
MySQL 是一个开源的关系型数据库管理系统(RDBMS),是目前世界上最流行的数据库之一。MySQL 最初由瑞典的 MySQL AB 公司开发,后被 Sun Microsystems 收购,最终成为 Oracle Corporation 的产品。MySQL 提供了一个强大的数据库管理系统,具有以下特点:
- 开源免费:MySQL 是开源软件,可以免费获取、使用和修改。
- 跨平台:MySQL 可以运行在多种操作系统上,如 Linux、Unix、Windows 等。
- 高性能:MySQL 具有优化的数据库引擎和查询优化器,可以处理大量的并发请求,并具有较高的性能表现。
- 可靠性:MySQL 支持事务处理和数据恢复功能,保证了数据库的可靠性和一致性。
- 灵活性:MySQL 支持多种数据存储引擎,如 InnoDB、MyISAM 等,可以根据需求选择合适的存储引擎。
- 易用性:MySQL 提供了简单易用的 SQL 接口,使用户可以方便地管理和查询数据库。
- 扩展性:MySQL 支持主从复制和分布式数据库架构,可以实现数据库的水平和垂直扩展。
MySQL 在 Web 开发中得到了广泛应用,特别是在与 PHP 结合使用的 LAMP(Linux + Apache + MySQL + PHP)架构中。它适用于各种规模的应用程序,从小型网站到大型企业应用都可以使用 MySQL 来管理数据。
php是什么
PHP 是一种通用开源脚本语言,特别适用于 Web 开发,并可以嵌入到 HTML 中使用。PHP 的全称是 "PHP: Hypertext Preprocessor"(最初是 "Personal Home Page" 的缩写),它由 Rasmus Lerdorf 开发,最初发布于 1995 年。PHP 是一种服务器端脚本语言,用于创建动态网页和 Web 应用程序。PHP 具有以下特点:
- 开源免费:PHP 是开源软件,可以免费获取、使用和修改。
- 跨平台:PHP 可以运行在多种操作系统上,如 Linux、Unix、Windows 等。
- 易学易用:PHP 语法类似于 C 语言,易于学习和使用,尤其适用于初学者。
- 灵活性:PHP 可以与各种数据库(如 MySQL、MariaDB、PostgreSQL 等)结合使用,可以生成各种形式的输出(如 HTML、XML、JSON 等)。
- 强大的功能:PHP 支持面向对象编程、文件处理、图像处理、网络编程等丰富的功能。
- 支持大型框架:PHP 有许多流行的 Web 开发框架,如 Laravel、Symfony、CodeIgniter 等,可以加快 Web 开发的速度。
- 广泛应用:许多知名网站和 Web 应用程序(如 Facebook、WordPress、Wikipedia 等)都使用 PHP 进行开发。
总的来说,PHP 是一种功能强大、灵活易用的脚本语言,特别适用于 Web 开发,是构建动态网站和 Web 应用程序的重要工具之一。
PHP 版本: 5.6 ~ 8.2 ,你知道linux上安装对应合适的版本就行了。
MySQL 版本:5.5 ~ 8.0,MariaDB 10.2+
简体中文
LAMP组合架构
LAMP(Linux-Apache-MySQL-PHP)网站架构是目前国际流行的Web框架,该框架包括:Linux操作系统,Apache网络服务器,MySQL数据库,Perl、PHP或者Python编程语言
所有组成产品均是开源软件,是国际上成熟的架构框架,很多流行的商业应用都是采取这个架构
LAMP具有通用、跨平台、高性能、低价格的优势,因此LAMP无论是性能、质量还是价格都是企业搭建网站的首选平台。

linux系统环境检查
# 1.如果是首次跟着教程安装的同学,你们不需要做如下操作,linux虚拟机
# 2.我们部署服务器,你无法确保机器,都是纯净,可能都有很多内置一些软件,LAMP,甚至软件安装还会有冲突。。
# 保留现有环境,再部署你需要,出方案
# 保留人家,你还得部署新的,还不能冲突,覆盖,,,(换个机器?容器技术?伏笔)
# 超哥先清理环境,给各位演示下
systemctl stop mysql.service
systemctl stop nginx
# apache > 80
# 卸载软件
apt remove nginx mysql-server redis-server redis-tools -y
# 再自动清理无用驱动(A B C D 各类软件都可能用到的底层软件,相互依赖。)
apt autoremove # 自动删除系统不在使用的包
linux服务器初始化

安全组/防火墙

软件防火墙ufw
root@VM-8-7-ubuntu:/etc/apt# ufw status
Status: inactive
root@VM-8-7-ubuntu:/etc/apt# systemctl status ufw
● ufw.service - Uncomplicated firewall
Loaded: loaded (/lib/systemd/system/ufw.service; enabled; vendor preset: enabled)
Active: active (exited) since Sat 2024-03-16 09:00:16 CST; 6 days ago
Docs: man:ufw(8)
Main PID: 429 (code=exited, status=0/SUCCESS)
CPU: 1ms
Notice: journal has been rotated since unit was started, output may be incomplete.
root@VM-8-7-ubuntu:/etc/apt#
这是显示 ufw(Uncomplicated Firewall)服务状态的命令输出。根据输出,可以看到 ufw 服务当前处于活动状态(active),但已经退出(exited)。这意味着 ufw 服务在启动后完成了其任务并退出了,但仍然处于激活状态以监视系统防火墙规则的更改。
输出中还显示了服务的加载状态(Loaded)、启用状态(enabled)、厂商预设状态(vendor preset)、文档位置(Docs)、主进程ID(Main PID)、CPU 使用情况等信息。由于日志轮换(journal has been rotated)可能导致输出不完整,但这通常不影响对服务状态的基本了解。
root@VM-8-7-ubuntu:/etc/apt# systemctl disable ufw
Synchronizing state of ufw.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install disable ufw
Removed /etc/systemd/system/multi-user.target.wants/ufw.service.
root@VM-8-7-ubuntu:/etc/apt#
root@VM-8-7-ubuntu:/etc/apt# systemctl stop ufw
root@VM-8-7-ubuntu:/etc/apt#
root@VM-8-7-ubuntu:/etc/apt# systemctl status ufw
○ ufw.service - Uncomplicated firewall
Loaded: loaded (/lib/systemd/system/ufw.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:ufw(8)
Mar 23 08:50:32 VM-8-7-ubuntu systemd[1]: Stopping Uncomplicated firewall...
Mar 23 08:50:32 VM-8-7-ubuntu ufw-init[2502050]: Skip stopping firewall: ufw (not enabled)
Mar 23 08:50:32 VM-8-7-ubuntu systemd[1]: ufw.service: Deactivated successfully.
Mar 23 08:50:32 VM-8-7-ubuntu systemd[1]: Stopped Uncomplicated firewall.
root@VM-8-7-ubuntu:/etc/apt#
AppArmor是什么
firewalld 关闭
iptables清理
selinux关闭
都是关闭无用防火墙
ufw
AppArmor --selinux
AppArmor(Application Armor)是一个 Linux 内核安全模块,用于实施操作系统上的应用程序级别的访问控制安全策略。它可以限制应用程序的访问权限,以减少潜在的安全漏洞和攻击风险。
AppArmor 的工作方式是为每个应用程序创建一个安全策略文件(profile),该文件描述了应用程序允许访问的文件、目录和网络资源,以及允许执行的操作。这些安全策略文件告诉内核如何限制应用程序的行为,以确保其在安全的边界内运行。
通过实施最小权限原则,AppArmor 可以帮助防止应用程序执行恶意操作或访问不应访问的资源。它还可以提供对系统资源的额外保护,如文件系统和网络访问。
AppArmor 是 Ubuntu 和其他一些 Linux 发行版的默认安全模块,但它也可以在其他 Linux 发行版上使用。与 SELinux 相比,AppArmor 更容易配置和管理,因为它使用了基于路径的访问控制模型,而不是 SELinux 的强制访问控制模型。这使得 AppArmor 更适合于桌面和服务器环境中的普通用户和管理员。
root@VM-8-7-ubuntu:/etc/apt# systemctl status apparmor.service
● apparmor.service - Load AppArmor profiles
Loaded: loaded (/lib/systemd/system/apparmor.service; enabled; vendor preset: enabled)
Active: active (exited) since Sat 2024-03-16 09:00:16 CST; 6 days ago
Docs: man:apparmor(7)
https://gitlab.com/apparmor/apparmor/wikis/home/
Main PID: 417 (code=exited, status=0/SUCCESS)
CPU: 53ms
Notice: journal has been rotated since unit was started, output may be incomplete.
root@VM-8-7-ubuntu:/etc/apt#
root@yuchao-linux-2024:~# sudo apparmor_status
apparmor module is loaded.
34 profiles are loaded.
34 profiles are in enforce mode.
/snap/snapd/20290/usr/lib/snapd/snap-confine
/snap/snapd/20290/usr/lib/snapd/snap-confine//mount-namespace-capture-helper
/snap/snapd/20671/usr/lib/snapd/snap-confine
/snap/snapd/20671/usr/lib/snapd/snap-confine//mount-namespace-capture-helper
/snap/snapd/21184/usr/lib/snapd/snap-confine
/snap/snapd/21184/usr/lib/snapd/snap-confine//mount-namespace-capture-helper
/usr/bin/man
/usr/lib/NetworkManager/nm-dhcp-client.action
/usr/lib/NetworkManager/nm-dhcp-helper
/usr/lib/connman/scripts/dhclient-script
/usr/lib/snapd/snap-confine
/usr/lib/snapd/snap-confine//mount-namespace-capture-helper
/usr/sbin/ntpd
/{,usr/}sbin/dhclient
lsb_release
man_filter
man_groff
nvidia_modprobe
nvidia_modprobe//kmod
snap-update-ns.lxd
snap.lxd.activate
snap.lxd.benchmark
snap.lxd.buginfo
snap.lxd.check-kernel
snap.lxd.daemon
snap.lxd.hook.configure
snap.lxd.hook.install
snap.lxd.hook.remove
snap.lxd.lxc
snap.lxd.lxc-to-lxd
snap.lxd.lxd
snap.lxd.migrate
snap.lxd.user-daemon
tcpdump
0 profiles are in complain mode.
0 profiles are in kill mode.
0 profiles are in unconfined mode.
1 processes have profiles defined.
1 processes are in enforce mode.
/usr/sbin/ntpd (7792)
0 processes are in complain mode.
0 processes are unconfined but have a profile defined.
0 processes are in mixed mode.
0 processes are in kill mode.
root@yuchao-linux-2024:~#
apt安装apache
- deb包安装
- apt安装
- 源代码编译安装
要在 Ubuntu 上使用 apt 安装 Apache Web 服务器,可以按照以下步骤操作:
更新软件包列表(可选):
sudo apt update安装 Apache:
sudo apt install apache2启动 Apache 服务: 安装完成后,Apache 服务会自动启动。如果未启动,可以使用以下命令手动启动:
sudo systemctl start apache2验证安装: 打开 Web 浏览器,并访问
http://服务器IP地址/,如果看到 Apache 的默认欢迎页面,则表示安装成功。配置防火墙(如果需要): 如果系统上启用了防火墙(如 ufw),请确保允许 HTTP(端口 80)和 HTTPS(端口 443)流量。可以使用以下命令允许 HTTP 流量:
sudo ufw allow 'Apache'设置 Apache 开机自启(可选): 如果希望 Apache 在系统启动时自动启动,可以使用以下命令:
sudo systemctl enable apache2
通过这些步骤,你应该能够成功在 Ubuntu 上安装和配置 Apache Web 服务器。
默认配置
/etc/apache2/
|-- apache2.conf
| `-- ports.conf
|-- mods-enabled
| |-- *.load
| `-- *.conf
|-- conf-enabled
| `-- *.conf
|-- sites-enabled
| `-- *.conf
/var/www/html
修改apache配置
在安装 LAMP(Linux + Apache + MySQL + PHP)堆栈时,通常需要对 Apache 的配置进行一些修改以确保其与 PHP 和 MySQL 协同工作。以下是一些可能需要修改的主要 Apache 配置文件:
启用 PHP 模块:确保 Apache 已经启用了 PHP 模块,以便解释和执行 PHP 脚本。在 Apache 配置文件中,可能需要添加或取消注释以下行:
# For Apache 2.2 LoadModule php5_module modules/libphp5.so # For Apache 2.4 LoadModule php7_module modules/libphp7.so配置虚拟主机:如果你希望在同一台服务器上托管多个网站,则需要配置虚拟主机。在 Apache 的虚拟主机配置文件(通常是
sites-available目录下的.conf文件)中添加或修改虚拟主机配置,包括网站根目录、域名和其他设置。启用
.htaccess文件:默认情况下,Apache 可能禁用了.htaccess文件的使用。确保在虚拟主机配置中启用了.htaccess文件的重写规则,以便应用程序可以使用它们来配置 URL 重写和其他功能。调整内存和连接限制:根据你的应用程序需求,可能需要调整 Apache 的内存限制和最大连接数等参数。这些设置通常在 Apache 主配置文件中(如
httpd.conf或apache2.conf)进行修改。配置日志:确保 Apache 的访问日志和错误日志已正确配置,以便记录网站的访问情况和任何错误信息。
这些是一些可能需要修改的主要 Apache 配置。根据你的具体需求和应用程序,可能还需要进行其他配置更改。在修改配置文件之后,记得重新启动 Apache 以使更改生效:
sudo systemctl restart apache2
apache如何与php工作
Apache 与 PHP 之间的集成通常通过模块来实现。Apache 提供了 mod_php 模块,用于与 PHP 解释器进行通信,从而可以执行 PHP 脚本并将结果返回给客户端浏览器。下面是 Apache 与 PHP 的工作原理:
加载 PHP 模块:在 Apache 的配置文件中(如
httpd.conf或apache2.conf),需要加载 PHP 模块,以便 Apache 可以识别和执行 PHP 脚本。这通常通过以下方式实现:# For Apache 2.2 LoadModule php5_module modules/libphp5.so # For Apache 2.4 LoadModule php7_module modules/libphp7.so配置虚拟主机:如果你使用虚拟主机来托管多个网站,需要在 Apache 的虚拟主机配置中指定 PHP 的处理方式。这通常通过将以下行添加到虚拟主机配置中来完成:
AddType application/x-httpd-php .php执行 PHP 脚本:当客户端请求一个 PHP 页面时,Apache 将会将该请求传递给 PHP 解释器进行处理。PHP 解释器将执行 PHP 脚本,并将结果返回给 Apache,然后由 Apache 将结果发送给客户端浏览器。
处理动态内容:Apache 与 PHP 的集成使得可以在 Web 服务器上动态生成内容。PHP 脚本可以与数据库交互、处理表单数据、生成动态页面等,从而实现丰富的 Web 应用程序功能。
通过这种方式,Apache 可以与 PHP 协同工作,为 Web 应用程序提供动态内容和交互性。
apache配置文件
Apache 的主要配置文件通常位于 /etc/apache2 目录下,主要包括以下几个文件和目录:
- apache2.conf:主要的 Apache 配置文件,包含全局的配置指令,如服务器标识、服务器端口、日志文件位置等。
- ports.conf:包含 Apache 监听的端口配置信息,默认情况下包括 80(HTTP)和 443(HTTPS)端口。
- sites-available:存放虚拟主机的配置文件模板,每个虚拟主机一个文件,但未启用。
- sites-enabled:包含指向
sites-available中配置文件的符号链接,已启用的虚拟主机配置文件应该在这里。 - mods-available:存放 Apache 可用模块的配置文件模板。
- mods-enabled:包含指向
mods-available中配置文件的符号链接,已启用的模块配置文件应该在这里。 - conf-available:存放其他配置文件的模板,如安全策略、性能优化等。
- conf-enabled:包含指向
conf-available中配置文件的符号链接,已启用的其他配置文件应该在这里。
主要配置文件是 apache2.conf,其他目录下的配置文件通常通过在主配置文件中包含来生效。在 Ubuntu 等 Debian 系统中,可以使用 a2enconf、a2ensite、a2dissite、a2dismod 等命令来管理这些配置文件。
root@yuchao-linux-2024:~# ls /etc/apache2/
apache2.conf conf-enabled magic mods-enabled sites-available
conf-available envvars mods-available ports.conf sites-enabled
root@yuchao-linux-2024:~#
这是列出 /etc/apache2/ 目录下文件和目录的命令输出。这些文件和目录包括:
- apache2.conf:主要的 Apache 配置文件,包含全局的配置指令。
- conf-enabled:包含已启用的其他配置文件的符号链接。
- conf-available:存放其他配置文件的模板,未启用的配置文件应该在这里。
- envvars:包含 Apache 运行环境变量的配置文件。
- magic:包含 Apache 的 MIME 类型和编码的配置文件。
- mods-enabled:包含已启用的模块配置文件的符号链接。
- mods-available:存放可用模块的配置文件模板,未启用的模块配置文件应该在这里。
- ports.conf:包含 Apache 监听的端口配置信息。
- sites-available:存放虚拟主机的配置文件模板,未启用的虚拟主机配置文件应该在这里。
- sites-enabled:包含已启用的虚拟主机配置文件的符号链接。
这些文件和目录是 Apache 在 Ubuntu 上的典型配置。你可以通过编辑这些文件来配置 Apache 服务器的行为和功能。
如何理解apache2.conf
apache2.conf 是 Apache Web 服务器的主要配置文件之一,用于配置全局的服务器行为和属性。这个文件包含了许多重要的配置指令,可以影响整个服务器的运行方式。理解 apache2.conf 对于配置和管理 Apache 服务器非常重要。以下是一些 apache2.conf 中常见配置指令的解释:
- ServerRoot:指定 Apache 服务器的根目录。
- ServerName:指定服务器的主机名或 IP 地址。
- Listen:指定服务器监听的端口号。
- DirectoryIndex:指定默认情况下访问目录时要显示的文件名。
- ErrorLog 和 CustomLog:指定错误日志和访问日志的位置和格式。
- Options 和 AllowOverride:控制对目录的访问权限和允许使用的重写规则。
- Include:用于包含其他配置文件,通常用于包含
conf-enabled目录中的配置文件。 - LimitRequestBody 和 LimitRequestFields:限制请求主体和请求字段的大小。
- Timeout 和 KeepAliveTimeout:设置超时时间,以及长连接的超时时间。
- ServerTokens 和 ServerSignature:控制服务器响应中的版本信息。
通过编辑 apache2.conf,管理员可以更改服务器的全局行为,例如更改默认端口、调整超时设置、启用或禁用模块等。在修改 apache2.conf 之后,需要重新加载或重启 Apache 服务器才能使更改生效。
网站vhost配置文件
root@yuchao-linux-2024:/etc/apache2# ls sites-enabled/
000-default.conf
root@yuchao-linux-2024:/etc/apache2# grep -v '^\s*$\|^\s*#' sites-enabled/000-default.conf
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
这段配置定义了一个基本的虚拟主机,监听端口 80(HTTP),使用 /var/www/html 目录作为文档根目录。ServerAdmin 指令设置了管理员的电子邮件地址。ErrorLog 和 CustomLog 指令定义了错误日志和访问日志的位置和格式。
/etc/apache2/sites-enabled/ 目录中只包含一个文件 000-default.conf。
这是 Apache 中默认的虚拟主机配置文件,用于处理所有未匹配到其他虚拟主机的请求。
在这个文件中,你可以配置默认的虚拟主机,包括根目录、日志文件路径、服务器别名等。
如果你想为特定域名或目录配置不同的虚拟主机,可以创建额外的配置文件并在 sites-enabled/ 中启用它们。重新加载 Apache 以使更改生效。
启动访问
root@yuchao-linux-2024:/etc/apache2# ss -tunlp |grep 80
udp UNCONN 0 0 [fe80::5054:ff:fecc:2fc7]%eth0:123 [::]:* users:(("ntpd",pid=7792,fd=19))
tcp LISTEN 0 511 *:80 *:* users:(("apache2",pid=2504708,fd=4),("apache2",pid=2504707,fd=4),("apache2",pid=2504705,fd=4))
root@yuchao-linux-2024:/etc/apache2#
这里是使用 ss 命令查看端口 80 的监听情况的输出:
- 第一行显示了一个 UDP 端口的监听情况,但并未指向 Apache,而是指向 ntpd 进程(Network Time Protocol 守护进程)。
- 第二行显示了 TCP 端口 80 正在被 Apache 进程监听,并处于 LISTEN 状态。
root@yuchao-linux-2024:/etc/apache2# ps aux|grep apache
root 2504705 0.0 0.1 6780 4788 ? Ss 08:58 0:00 /usr/sbin/apache2 -k start
www-data 2504707 0.0 0.1 1211828 5600 ? Sl 08:58 0:00 /usr/sbin/apache2 -k start
www-data 2504708 0.0 0.1 1211756 4652 ? Sl 08:58 0:00 /usr/sbin/apache2 -k start
www-data 2504831 0.0 0.0 3740 168 ? Ss 08:58 0:00 /usr/bin/htcacheclean -d 120 -p /var/cache/apache2/mod_cache_disk -l 300M -n
root 2515754 0.0 0.0 6480 2320 pts/1 S+ 09:40 0:00 grep --color=auto apache
root@yuchao-linux-2024:/etc/apache2#
这里是使用 ps aux | grep apache 命令查看 Apache 进程的输出:
- 第一行显示了一个
apache2进程,由root用户启动,是主 Apache 进程,负责监听端口并接受连接请求。 - 接下来两行显示了两个
apache2进程,由www-data用户启动,这些进程实际上处理客户端的请求,并执行与之相关的操作。 - 最后一行是
grep命令自身的输出,用于过滤包含 "apache" 的行。

图解

apt安装mysql
要在 Ubuntu 上安装 MySQL,可以按照以下步骤进行:
更新软件包列表:
sudo apt update安装 MySQL 服务器软件包:
sudo apt install mysql-server在安装过程中,系统会提示你设置 root 用户的密码。输入并确认密码。
安装完成后,MySQL 服务器应该已经自动启动。你可以使用以下命令检查 MySQL 服务器的状态:
sudo systemctl status mysql如果 MySQL 服务器未运行,你可以使用以下命令启动它:
sudo systemctl start mysql(可选)针对安全性考虑,你可以运行 MySQL 安全性脚本来执行一些安全性设置:
sudo mysql_secure_installation此脚本将引导你执行一些常见的安全设置,如移除匿名用户、禁用远程 root 登录等。
现在,MySQL 应该已经成功安装在你的 Ubuntu 系统上了。你可以使用 mysql 命令登录到 MySQL 数据库服务器,并开始使用。
登录访问mysql8
root@yuchao-linux-2024:~# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.36-0ubuntu0.22.04.1 (Ubuntu)
Copyright (c) 2000, 2024, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
修改密码
root@yuchao-linux-2024:~# mysqladmin -uroot -p password
Enter password:
New password:
Confirm new password:
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
root@yuchao-linux-2024:~#
# yuchao 密码
mysql默认密码插件非文本
5.6 5.7 mysql默认是密码认证,8版本之后,本地socket套接字认证
mysql> SELECT plugin FROM mysql.user WHERE User='root';
+-------------+
| plugin |
+-------------+
| auth_socket |
+-------------+
1 row in set (0.00 sec)
这里显示 root 用户使用的认证插件是 auth_socket。这意味着该用户使用基于套接字的身份验证,而不是密码进行身份验证。
修改为密码文本
mysql章节
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'yuchao666';
Query OK, 0 rows affected (0.01 sec)
mysql>
mysql> select user,host,plugin from mysql.user;
+------------------+-----------+-----------------------+
| user | host | plugin |
+------------------+-----------+-----------------------+
| debian-sys-maint | localhost | caching_sha2_password |
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session | localhost | caching_sha2_password |
| mysql.sys | localhost | caching_sha2_password |
| root | localhost | mysql_native_password |
+------------------+-----------+-----------------------+
5 rows in set (0.00 sec)
mysql>
新密码登录
root@yuchao-linux-2024:~# mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
root@yuchao-linux-2024:~#
root@yuchao-linux-2024:~# mysql -uroot -pyuchao666
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 16
Server version: 8.0.36-0ubuntu0.22.04.1 (Ubuntu)
Copyright (c) 2000, 2024, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
apt安装php
版本不是随便装的,要根据代码要求安装。

要在 Ubuntu 上通过 apt 安装 PHP 并安装解释器(通常是 PHP 解释器),你可以按照以下步骤操作:
首先,更新 apt 软件包索引:
sudo apt update然后,安装 PHP 和 PHP 解释器:
sudo apt install php安装完成后,你可以验证 PHP 是否已成功安装并运行:
php -v这会显示 PHP 的版本信息,以确认 PHP 已经安装并且解释器也可用。
若要在 Web 服务器上使用 PHP,请确保安装了适当的 PHP 模块,例如在 Apache 上使用 PHP,可以安装
libapache2-mod-php:sudo apt install libapache2-mod-php安装完成后,重启 Apache 服务器以使更改生效:
sudo systemctl restart apache2
现在,PHP 已经成功安装在你的 Ubuntu 系统上,并且可以在命令行中执行 PHP 脚本,并在 Web 服务器上解释 PHP 页面。
查询apache和php的关系
root@yuchao-linux-2024:/etc/apache2# ls mods-enabled/ |grep php
php8.1.conf
php8.1.load
在你的系统中,mods-enabled 目录下的 php8.1.conf 和 php8.1.load 文件指示了 Apache 使用的 PHP 模块配置。这表明你的 Apache 实例已经配置了 PHP 8.1 版本的模块。
可以通过查看这些文件来了解 Apache 如何加载和配置 PHP 模块,以及与 PHP 解释器的连接关系。通常,这些文件中包含指令来加载 PHP 模块,并将 PHP 请求转发给 PHP 解释器进行处理。
php8.1.conf
root@yuchao-linux-2024:/etc/apache2# cat mods-enabled/php8.1.conf
<FilesMatch ".+\.ph(ar|p|tml)$">
SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch ".+\.phps$">
SetHandler application/x-httpd-php-source
# Deny access to raw php sources by default
# To re-enable it's recommended to enable access to the files
# only in specific virtual host or directory
Require all denied
</FilesMatch>
# Deny access to files without filename (e.g. '.php')
<FilesMatch "^\.ph(ar|p|ps|tml)$">
Require all denied
</FilesMatch>
# Running PHP scripts in user directories is disabled by default
#
# To re-enable PHP in user directories comment the following lines
# (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
# prevents .htaccess files from disabling it.
<IfModule mod_userdir.c>
<Directory /home/*/public_html>
php_admin_flag engine Off
</Directory>
</IfModule>
这是 mods-enabled/php8.1.conf 文件的内容,它指定了 Apache 如何处理 PHP 脚本的配置。让我们逐行解释:
<FilesMatch ".+\.ph(ar|p|tml)$">:这个指令匹配所有以.php、.php4、.php5或.phtml结尾的文件。对于这些文件,设置处理程序为application/x-httpd-php,意味着 Apache 将它们交给 PHP 解释器处理。<FilesMatch ".+\.phps$">:这个指令匹配所有以.phps结尾的文件,通常是 PHP 源代码文件。对于这些文件,设置处理程序为application/x-httpd-php-source,并禁止对它们的访问。<FilesMatch "^\.ph(ar|p|ps|tml)$">:这个指令匹配所有没有文件名的 PHP 文件,例如.php。对于这些文件,禁止所有访问。<IfModule mod_userdir.c>:这个指令检查是否加载了mod_userdir模块,如果加载了,那么会在用户目录中禁用 PHP。通常情况下,不允许在用户目录中执行 PHP 脚本,以提高安全性。
总的来说,mods-enabled/php8.1.conf 文件配置了 Apache 如何处理 PHP 文件,包括设置处理程序和限制对文件的访问。
php8.1.load
root@yuchao-linux-2024:/etc/apache2# cat mods-enabled/php8.1.load
# Conflicts: php5
# Depends: mpm_prefork
LoadModule php_module /usr/lib/apache2/modules/libphp8.1.so
mods-enabled/php8.1.load 文件定义了 Apache 加载 PHP 模块的方式。让我们解释其中的每一行:
# Conflicts: php5:这行注释指明该模块与php5模块存在冲突,意味着不能同时加载这两个模块。# Depends: mpm_prefork:这行注释指明该模块依赖于mpm_prefork模块。mpm_prefork是 Apache 的一种多进程模型,通常与 PHP 模块一起使用。LoadModule php_module /usr/lib/apache2/modules/libphp8.1.so:这行指令加载了 PHP 模块,并指定了模块文件的路径为/usr/lib/apache2/modules/libphp8.1.so。这是 Apache 加载 PHP 模块的方式之一,它告诉 Apache 在运行时加载 PHP 模块,使得 Apache 能够解释和执行 PHP 脚本。
综上所述,mods-enabled/php8.1.load 文件指定了 Apache 如何加载 PHP 模块,以便在 Web 服务器上解释和执行 PHP 脚本。
测试apache和php工作结果
要测试 Apache 和 PHP 是否正常工作,你可以创建一个简单的 PHP 文件,并在浏览器中访问它来查看结果。以下是一个示例:
使用以下命令在 Apache 的网站根目录(通常是
/var/www/html)中创建一个新的 PHP 文件,例如test.php:sudo vim /var/www/html/test.php将以下内容粘贴到
test.php文件中:<?php echo "于超老师带你学linux"; phpinfo(); ?>这个 PHP 脚本将输出 PHP 的信息,包括版本、配置等。
保存并关闭文件。
在浏览器中访问
http://你的服务器IP地址/test.php(将你的服务器IP地址替换为你的服务器的实际 IP 地址),或者如果是在本地服务器上访问,可以使用http://localhost/test.php。如果一切正常,你应该会看到一个 PHP 信息页面,其中包含 PHP 的版本、配置选项等信息。这表明 Apache 已经正确解释和执行了 PHP 脚本。
如果你能够在浏览器中看到 PHP 信息页面,那么说明 Apache 和 PHP 都已经成功安装并正常工作。
大功告成

部署代码Discuz
https://www.discuz.vip/download.html
已经有了一个可以解析php程序的平台
linux
apache 提供80端口访问,包括网页目录设置
下载代码,放入apache的网页根目录
php部署,解析php程序代码
mysql部署,存储程序的数据
Discuz 是一个开源的论坛系统,它是基于 PHP 语言开发的,并使用 MySQL 数据库存储数据。因此,Discuz 需要在支持 PHP 和 MySQL 的环境中运行。
LAMP 是一个开发 Web 应用程序的技术栈,它由 Linux、Apache、MySQL 和 PHP 组成。Discuz 可以在 LAMP 技术栈上运行,这意味着你可以在 Linux 操作系统上安装 Apache 作为 Web 服务器、MySQL 作为数据库服务器,同时支持 PHP 解释器。通过在 LAMP 环境中运行,你可以轻松地部署和管理 Discuz 论坛系统。
因此,Discuz 和 LAMP 的关系是,Discuz 是一个基于 PHP 和 MySQL 的论坛系统,而 LAMP 提供了运行 Discuz 所需的环境和基础设施。在 LAMP 技术栈上部署 Discuz 可以使你更容易地搭建和管理论坛网站。
root@yuchao-linux-2024:/mysite# !ps
ps -ef |grep apache
www-data 2504831 1 0 08:58 ? 00:00:00 /usr/bin/htcacheclean -d 120 -p /var/cache/apache2/mod_cache_disk -l 300M -n
root 2540756 1 0 10:52 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 2540760 2540756 0 10:52 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 2540761 2540756 0 10:52 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 2540762 2540756 0 10:52 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 2540763 2540756 0 10:52 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 2540764 2540756 0 10:52 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 2542546 2540756 0 10:57 ? 00:00:00 /usr/sbin/apache2 -k start
root 2543745 2502940 0 11:02 pts/1 00:00:00 grep --color=auto apache
root@yuchao-linux-2024:/mysite#
root@yuchao-linux-2024:/mysite# mv upload/* .
root@yuchao-linux-2024:/mysite# chown -R www-data.www-data /mysite
root@yuchao-linux-2024:/mysite# ls
admin.php config Discuz_X3.5_SC_UTF8_20231221.zip home.php member.php qqqun.png search.php uc_client
api connect.php favicon.ico index.php misc.php readme source uc_server
api.php crossdomain.xml forum.php install plugin.php readme.html static upload
archiver data group.php LICENSE portal.php robots.txt template utility.html
root@yuchao-linux-2024:/mysite#
在 Linux 系统中,chown 命令用于更改文件或目录的所有者(owner)和所属组(group)。在你的情况下,执行 chown -R www-data.www-data /mysite 命令的目的是将 /mysite 目录及其下所有文件和子目录的所有者和所属组都设置为 www-data 用户和 www-data 组。
通常情况下,将 Web 服务器(例如 Apache)的运行用户和组设置为文件和目录的所有者和所属组,是为了确保 Web 服务器对这些文件和目录有足够的权限来读取和写入。这对于 Web 应用程序来说是非常重要的,因为它们需要访问存储在文件系统中的文件(例如上传的文件、缓存文件等)。
因此,在你的情况下,将 /mysite 目录及其下的文件和子目录的所有者和所属组设置为 www-data.www-data 可以确保 Apache(或其他 Web 服务器)对这些文件和目录有足够的权限来访问和操作它们,从而保证 Web 应用程序的正常运行。
修改apache网站目录
root@yuchao-linux-2024:/mysite# grep -v '^\s*$\|^\s*#' /etc/apache2/sites-enabled/000-default.conf
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /mysite
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
root@yuchao-linux-2024:/mysite#
root@yuchao-linux-2024:/mysite# systemctl restart apache2.service
root@yuchao-linux-2024:/mysite#
修改网页授权apache2.conf
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>
<Directory /usr/share>
AllowOverride None
Require all granted
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
在你提供的Apache配置中,<Directory> 指令用于指定不同路径下的访问控制规则。根据你的配置,/usr/share 和 /var/www/ 目录下的访问被允许了,而根目录 / 的访问则被拒绝了。
如果你的网站内容在 /mysite/ 目录下,你需要添加一个类似的 <Directory> 块来允许对该目录的访问。
你可以添加如下的 <Directory> 块到你的 Apache 配置文件中,以允许对 /mysite/ 目录的访问:
<Directory /path/to/mysite/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
确保将 /path/to/mysite/ 替换为实际的 /mysite/ 目录的路径。
你的Apache配置中的这段代码指定了针对特定目录的访问规则。让我解释一下每个指令的作用:
Options Indexes FollowSymLinks: 这个指令定义了对目录的访问选项。其中:Indexes: 允许在目录中显示文件列表,如果没有默认首页文件。FollowSymLinks: 允许Apache跟随符号链接。
AllowOverride None: 这个指令定义了是否允许使用.htaccess文件来覆盖服务器配置。在这种情况下,None表示不允许使用.htaccess文件。Require all granted: 这个指令定义了允许访问该目录的要求。all granted表示允许所有请求通过,没有任何访问限制。
因此,这段配置允许对指定目录的内容进行索引显示,同时允许Apache跟随符号链接。它还禁止使用.htaccess文件覆盖服务器配置,并允许所有请求通过访问限制。
如果你想要修改允许访问的IP地址范围,你可以将 Require all granted 修改为 Require ip,并指定特定的IP地址或IP地址范围。例如:
Require ip 192.168.1.0/24
这将只允许IP地址在 192.168.1.0 到 192.168.1.255 范围内的请求通过。
确保修改配置后保存文件,并重新加载或重启Apache服务以使更改生效。
这将允许所有客户端访问
/mysite/目录下的内容。
如果你只想允许特定的 IP 地址访问,可以修改 Require all granted 部分来指定允许的 IP 地址,例如:
<Directory /path/to/mysite/>
Options Indexes FollowSymLinks
AllowOverride None
Require ip 106.40.205.29
</Directory>
完成修改后,保存 Apache 配置文件并重新加载 Apache 服务以使更改生效。
重启访问
root@yuchao-linux-2024:/etc/apache2# vim /etc/apache2/apache2.conf
root@yuchao-linux-2024:/etc/apache2# systemctl restart apache2.service
root@yuchao-linux-2024:/etc/apache2#

错误修复

在Ubuntu上处理这两个问题,你需要确保安装了正确的PHP扩展和模块。下面是解决这两个问题的步骤:
- 处理 mysqli_connect() 不支持:
首先,你需要确保安装了 PHP 的 MySQLi 扩展。你可以通过以下命令来安装:
sudo apt update sudo apt install php-mysql安装完成后,重新加载 Apache 或 Nginx 服务,以使更改生效:
sudo systemctl reload apache2 # 如果使用 Apache 或 sudo systemctl reload nginx # 如果使用 Nginx
处理 xml_parser_create() 不支持:
首先,你需要确保 PHP 已启用 XML 支持。你可以通过安装 PHP 的 XML 扩展来实现:
sudo apt update sudo apt install php-xml安装完成后,重新加载 Apache 或 Nginx 服务,以使更改生效:
sudo systemctl reload apache2 # 如果使用 Apache 或 sudo systemctl reload nginx # 如果使用 Nginx
完成上述步骤后,重新测试你的 PHP 代码,应该不再遇到 mysqli_connect() 和 xml_parser_create() 不支持的问题。

数据库填写

发表帖子
