运维为什么要学lamp

apt管理ubuntu软件,综合软件部署练习。

LAMP(Linux + Apache + MySQL + PHP/Perl/Python)是一种经典的Web应用程序架构,被广泛用于搭建动态网站和Web应用。

学习LAMP架构有以下几个重要原因:

  1. 广泛应用:许多Web应用程序都是基于LAMP架构构建的,掌握LAMP能够帮助你更好地理解和管理这些应用。
  2. 基础技能:学习LAMP架构可以帮助你掌握Linux操作系统、Apache Web服务器、MySQL数据库和PHP/Perl/Python等编程语言的基本使用和配置。
  3. 系统管理:LAMP架构涉及到多个组件,学习它可以帮助你了解系统管理的各个方面,包括安装、配置、优化和故障排除。
  4. 就业机会:熟练掌握LAMP架构相关技术可以增加你在Web开发和系统管理领域的就业机会,因为许多企业在寻找懂得这些技术的人才。

总的来说,学习LAMP架构对于从事Web开发、系统管理和相关领域的运维人员来说是非常有价值的。

lamp适用于什么业务,场景

LAMP架构适用于许多类型的业务和场景,特别是针对需要搭建动态、交互性强的Web应用程序的情况。以下是一些适合使用LAMP架构的业务和场景:

  1. 网站开发:LAMP架构非常适合开发各种规模的网站,包括企业网站、电子商务网站、新闻门户等。
  2. Web应用程序:许多Web应用程序,如博客、论坛、社交网络、在线工具等,都可以使用LAMP架构进行开发和部署。
  3. 内部管理系统:企业内部的管理系统,如人事管理系统、财务管理系统等,可以使用LAMP架构构建。
  4. 在线服务:各种类型的在线服务,如在线教育、在线咨询、在线预订等,都可以使用LAMP架构来支持。
  5. 数据展示和分析:需要展示和分析大量数据的应用,如数据可视化平台、报表系统等,也适合使用LAMP架构。

总的来说,只要涉及到Web应用程序开发和部署的场景,LAMP架构都是一个不错的选择,特别是对于小型和中型的项目来说。

lamp性能如何,有什么替代方案

LAMP架构在性能方面可以说是相当可靠的,但性能取决于各个组件的配置、优化以及应用程序本身的设计。以下是一些影响LAMP性能的因素:

  1. 硬件配置:服务器的硬件配置(CPU、内存、硬盘)会直接影响LAMP架构的性能表现。
  2. 软件配置:Linux、Apache、MySQL和PHP/Perl/Python的配置和优化对性能至关重要。例如,调整Apache的并发连接数、启用缓存、优化MySQL的查询等都可以提升性能。
  3. 代码优化:编写高效的代码和SQL查询也是提升性能的关键。避免过多的数据库查询和复杂的业务逻辑可以减轻服务器负载。
  4. 负载均衡和缓存:在高负载情况下,可以使用负载均衡来分散流量,以及使用缓存技术(如Memcached、Redis)来减轻数据库压力。
  5. 替代方案:虽然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!你可以:

  1. 熟悉PHP编程:Discuz!是用PHP编写的,通过对其源代码的学习和修改,可以帮助你提升PHP编程技能。(php/python/)
  2. 了解MySQL数据库:Discuz!使用MySQL作为后端数据库,通过配置和管理Discuz!的数据库,你可以学习MySQL数据库的基本操作和优化技巧。SQL
  3. 掌握Web开发技术:通过使用Discuz!构建和定制论坛系统,你可以了解到如何使用HTML、CSS和JavaScript等前端技术,以及如何与后端PHP代码进行交互。HTML,js,css
  4. 系统管理和优化:在部署和维护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 具有以下特点:

  1. 开源:Linux 内核及大部分相关软件都是开源的,意味着用户可以自由查看、修改和分发源代码。
  2. 多用户:Linux 支持多用户同时登录,并为每个用户提供独立的环境和资源。
  3. 多任务:Linux 支持多任务处理,可以同时运行多个程序。
  4. 稳定性:Linux 内核和大部分软件经过严格测试,通常比较稳定,可以长时间运行而不需要重新启动。
  5. 安全性:Linux 具有较好的安全性,有强大的权限管理和访问控制机制,减少了受到恶意软件攻击的风险。
  6. 灵活性:Linux 可以在各种硬件平台上运行,支持多种文件系统,具有较高的灵活性和可定制性。

Linux 在服务器、嵌入式系统、超级计算机等领域得到广泛应用,也是许多个人用户选择的操作系统之一。

apache是什么

Apache 是一个开源的、跨平台的 Web 服务器软件,是目前互联网上使用最广泛的 Web 服务器软件之一。Apache 的全称是 Apache HTTP Server,它最初由美国国家超级计算应用中心(National Center for Supercomputing Applications,NCSA)开发,后来成为一个独立的开源项目。Apache 是一个功能强大、稳定可靠的 Web 服务器,支持多种操作系统(如 Linux、Unix、Windows 等),并提供了丰富的功能和灵活的配置选项。Apache 的主要特点包括:

  1. 开源免费:Apache 是开源软件,可以免费获取、使用和修改。
  2. 跨平台:Apache 可以运行在多种操作系统上,如 Linux、Unix、Windows 等。
  3. 模块化:Apache 的功能可以通过模块进行扩展,可以根据需要加载不同的模块来提供额外的功能。
  4. 稳定可靠:Apache 经过长期的发展和测试,具有较高的稳定性和可靠性,可以处理大量的并发请求。
  5. 灵活配置:Apache 提供了丰富的配置选项,管理员可以根据需求灵活配置服务器的行为和性能。
  6. 安全性: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 提供了一个强大的数据库管理系统,具有以下特点:

  1. 开源免费:MySQL 是开源软件,可以免费获取、使用和修改。
  2. 跨平台:MySQL 可以运行在多种操作系统上,如 Linux、Unix、Windows 等。
  3. 高性能:MySQL 具有优化的数据库引擎和查询优化器,可以处理大量的并发请求,并具有较高的性能表现。
  4. 可靠性:MySQL 支持事务处理和数据恢复功能,保证了数据库的可靠性和一致性。
  5. 灵活性:MySQL 支持多种数据存储引擎,如 InnoDB、MyISAM 等,可以根据需求选择合适的存储引擎。
  6. 易用性:MySQL 提供了简单易用的 SQL 接口,使用户可以方便地管理和查询数据库。
  7. 扩展性: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 具有以下特点:

  1. 开源免费:PHP 是开源软件,可以免费获取、使用和修改。
  2. 跨平台:PHP 可以运行在多种操作系统上,如 Linux、Unix、Windows 等。
  3. 易学易用:PHP 语法类似于 C 语言,易于学习和使用,尤其适用于初学者。
  4. 灵活性:PHP 可以与各种数据库(如 MySQL、MariaDB、PostgreSQL 等)结合使用,可以生成各种形式的输出(如 HTML、XML、JSON 等)。
  5. 强大的功能:PHP 支持面向对象编程、文件处理、图像处理、网络编程等丰富的功能。
  6. 支持大型框架:PHP 有许多流行的 Web 开发框架,如 Laravel、Symfony、CodeIgniter 等,可以加快 Web 开发的速度。
  7. 广泛应用:许多知名网站和 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无论是性能、质量还是价格都是企业搭建网站的首选平台。

image-20240323084450470

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服务器初始化

image-20240323084832347

安全组/防火墙

image-20240323084912265

软件防火墙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 服务器,可以按照以下步骤操作:

  1. 更新软件包列表(可选):

    
    sudo apt update
    
  2. 安装 Apache

    
    sudo apt install apache2
    
  3. 启动 Apache 服务: 安装完成后,Apache 服务会自动启动。如果未启动,可以使用以下命令手动启动:

    
    sudo systemctl start apache2
    
  4. 验证安装: 打开 Web 浏览器,并访问 http://服务器IP地址/,如果看到 Apache 的默认欢迎页面,则表示安装成功。

  5. 配置防火墙(如果需要): 如果系统上启用了防火墙(如 ufw),请确保允许 HTTP(端口 80)和 HTTPS(端口 443)流量。可以使用以下命令允许 HTTP 流量:

    
    sudo ufw allow 'Apache'
    
  6. 设置 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 配置文件:

  1. 启用 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
    
  2. 配置虚拟主机:如果你希望在同一台服务器上托管多个网站,则需要配置虚拟主机。在 Apache 的虚拟主机配置文件(通常是 sites-available 目录下的 .conf 文件)中添加或修改虚拟主机配置,包括网站根目录、域名和其他设置。

  3. 启用 .htaccess 文件:默认情况下,Apache 可能禁用了 .htaccess 文件的使用。确保在虚拟主机配置中启用了 .htaccess 文件的重写规则,以便应用程序可以使用它们来配置 URL 重写和其他功能。

  4. 调整内存和连接限制:根据你的应用程序需求,可能需要调整 Apache 的内存限制和最大连接数等参数。这些设置通常在 Apache 主配置文件中(如 httpd.confapache2.conf)进行修改。

  5. 配置日志:确保 Apache 的访问日志和错误日志已正确配置,以便记录网站的访问情况和任何错误信息。

这些是一些可能需要修改的主要 Apache 配置。根据你的具体需求和应用程序,可能还需要进行其他配置更改。在修改配置文件之后,记得重新启动 Apache 以使更改生效:


sudo systemctl restart apache2

apache如何与php工作

Apache 与 PHP 之间的集成通常通过模块来实现。Apache 提供了 mod_php 模块,用于与 PHP 解释器进行通信,从而可以执行 PHP 脚本并将结果返回给客户端浏览器。下面是 Apache 与 PHP 的工作原理:

  1. 加载 PHP 模块:在 Apache 的配置文件中(如 httpd.confapache2.conf),需要加载 PHP 模块,以便 Apache 可以识别和执行 PHP 脚本。这通常通过以下方式实现:

    # For Apache 2.2
    LoadModule php5_module modules/libphp5.so
    
    # For Apache 2.4
    LoadModule php7_module modules/libphp7.so
    
  2. 配置虚拟主机:如果你使用虚拟主机来托管多个网站,需要在 Apache 的虚拟主机配置中指定 PHP 的处理方式。这通常通过将以下行添加到虚拟主机配置中来完成:

    
    AddType application/x-httpd-php .php
    
  3. 执行 PHP 脚本:当客户端请求一个 PHP 页面时,Apache 将会将该请求传递给 PHP 解释器进行处理。PHP 解释器将执行 PHP 脚本,并将结果返回给 Apache,然后由 Apache 将结果发送给客户端浏览器。

  4. 处理动态内容:Apache 与 PHP 的集成使得可以在 Web 服务器上动态生成内容。PHP 脚本可以与数据库交互、处理表单数据、生成动态页面等,从而实现丰富的 Web 应用程序功能。

通过这种方式,Apache 可以与 PHP 协同工作,为 Web 应用程序提供动态内容和交互性。

apache配置文件

Apache 的主要配置文件通常位于 /etc/apache2 目录下,主要包括以下几个文件和目录:

  1. apache2.conf:主要的 Apache 配置文件,包含全局的配置指令,如服务器标识、服务器端口、日志文件位置等。
  2. ports.conf:包含 Apache 监听的端口配置信息,默认情况下包括 80(HTTP)和 443(HTTPS)端口。
  3. sites-available:存放虚拟主机的配置文件模板,每个虚拟主机一个文件,但未启用。
  4. sites-enabled:包含指向 sites-available 中配置文件的符号链接,已启用的虚拟主机配置文件应该在这里。
  5. mods-available:存放 Apache 可用模块的配置文件模板。
  6. mods-enabled:包含指向 mods-available 中配置文件的符号链接,已启用的模块配置文件应该在这里。
  7. conf-available:存放其他配置文件的模板,如安全策略、性能优化等。
  8. conf-enabled:包含指向 conf-available 中配置文件的符号链接,已启用的其他配置文件应该在这里。

主要配置文件是 apache2.conf,其他目录下的配置文件通常通过在主配置文件中包含来生效。在 Ubuntu 等 Debian 系统中,可以使用 a2enconfa2ensitea2dissitea2dismod 等命令来管理这些配置文件。

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 中常见配置指令的解释:

  1. ServerRoot:指定 Apache 服务器的根目录。
  2. ServerName:指定服务器的主机名或 IP 地址。
  3. Listen:指定服务器监听的端口号。
  4. DirectoryIndex:指定默认情况下访问目录时要显示的文件名。
  5. ErrorLogCustomLog:指定错误日志和访问日志的位置和格式。
  6. OptionsAllowOverride:控制对目录的访问权限和允许使用的重写规则。
  7. Include:用于包含其他配置文件,通常用于包含 conf-enabled 目录中的配置文件。
  8. LimitRequestBodyLimitRequestFields:限制请求主体和请求字段的大小。
  9. TimeoutKeepAliveTimeout:设置超时时间,以及长连接的超时时间。
  10. ServerTokensServerSignature:控制服务器响应中的版本信息。

通过编辑 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" 的行。

image-20240323094220945

图解

image-20240323094244087

apt安装mysql

要在 Ubuntu 上安装 MySQL,可以按照以下步骤进行:

  1. 更新软件包列表:

    
    sudo apt update
    
  2. 安装 MySQL 服务器软件包:

    
    sudo apt install mysql-server
    
  3. 在安装过程中,系统会提示你设置 root 用户的密码。输入并确认密码。

  4. 安装完成后,MySQL 服务器应该已经自动启动。你可以使用以下命令检查 MySQL 服务器的状态:

    
    sudo systemctl status mysql
    
  5. 如果 MySQL 服务器未运行,你可以使用以下命令启动它:

    
    sudo systemctl start mysql
    
  6. (可选)针对安全性考虑,你可以运行 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

版本不是随便装的,要根据代码要求安装。

https://www.discuz.vip/

image-20240323103457161

要在 Ubuntu 上通过 apt 安装 PHP 并安装解释器(通常是 PHP 解释器),你可以按照以下步骤操作:

  1. 首先,更新 apt 软件包索引:

    
    sudo apt update
    
  2. 然后,安装 PHP 和 PHP 解释器:

    
    sudo apt install php
    
  3. 安装完成后,你可以验证 PHP 是否已成功安装并运行:

    
    php -v
    

    这会显示 PHP 的版本信息,以确认 PHP 已经安装并且解释器也可用。

  4. 若要在 Web 服务器上使用 PHP,请确保安装了适当的 PHP 模块,例如在 Apache 上使用 PHP,可以安装 libapache2-mod-php

    
    sudo apt install libapache2-mod-php
    
  5. 安装完成后,重启 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.confphp8.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 脚本的配置。让我们逐行解释:

  1. <FilesMatch ".+\.ph(ar|p|tml)$">:这个指令匹配所有以 .php.php4.php5.phtml 结尾的文件。对于这些文件,设置处理程序为 application/x-httpd-php,意味着 Apache 将它们交给 PHP 解释器处理。
  2. <FilesMatch ".+\.phps$">:这个指令匹配所有以 .phps 结尾的文件,通常是 PHP 源代码文件。对于这些文件,设置处理程序为 application/x-httpd-php-source,并禁止对它们的访问。
  3. <FilesMatch "^\.ph(ar|p|ps|tml)$">:这个指令匹配所有没有文件名的 PHP 文件,例如 .php。对于这些文件,禁止所有访问。
  4. <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 模块的方式。让我们解释其中的每一行:

  1. # Conflicts: php5:这行注释指明该模块与 php5 模块存在冲突,意味着不能同时加载这两个模块。
  2. # Depends: mpm_prefork:这行注释指明该模块依赖于 mpm_prefork 模块。mpm_prefork 是 Apache 的一种多进程模型,通常与 PHP 模块一起使用。
  3. 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 文件,并在浏览器中访问它来查看结果。以下是一个示例:

  1. 使用以下命令在 Apache 的网站根目录(通常是 /var/www/html)中创建一个新的 PHP 文件,例如 test.php

    
    sudo vim /var/www/html/test.php
    
  2. 将以下内容粘贴到 test.php 文件中:

    <?php
    echo "于超老师带你学linux";
    phpinfo();
    ?>
    

    这个 PHP 脚本将输出 PHP 的信息,包括版本、配置等。

  3. 保存并关闭文件。

  4. 在浏览器中访问 http://你的服务器IP地址/test.php(将 你的服务器IP地址 替换为你的服务器的实际 IP 地址),或者如果是在本地服务器上访问,可以使用 http://localhost/test.php

    如果一切正常,你应该会看到一个 PHP 信息页面,其中包含 PHP 的版本、配置选项等信息。这表明 Apache 已经正确解释和执行了 PHP 脚本。

如果你能够在浏览器中看到 PHP 信息页面,那么说明 Apache 和 PHP 都已经成功安装并正常工作。

大功告成

image-20240323110001507

部署代码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配置中的这段代码指定了针对特定目录的访问规则。让我解释一下每个指令的作用:

  1. Options Indexes FollowSymLinks: 这个指令定义了对目录的访问选项。其中:
    • Indexes: 允许在目录中显示文件列表,如果没有默认首页文件。
    • FollowSymLinks: 允许Apache跟随符号链接。
  2. AllowOverride None: 这个指令定义了是否允许使用.htaccess文件来覆盖服务器配置。在这种情况下,None 表示不允许使用.htaccess文件。
  3. 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.0192.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#

image-20240323111525262

错误修复

image-20240323111537380

在Ubuntu上处理这两个问题,你需要确保安装了正确的PHP扩展和模块。下面是解决这两个问题的步骤:

  1. 处理 mysqli_connect() 不支持
  • 首先,你需要确保安装了 PHP 的 MySQLi 扩展。你可以通过以下命令来安装:

     sudo apt update
    sudo apt install php-mysql
    
  • 安装完成后,重新加载 Apache 或 Nginx 服务,以使更改生效:

     sudo systemctl reload apache2    # 如果使用 Apache
    或
    sudo systemctl reload nginx      # 如果使用 Nginx
    
  1. 处理 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() 不支持的问题。

image-20240323111759753

数据库填写

image-20240323111841873

发表帖子

image-20240323113511615

Copyright © www.yuchaoit.cn 2024 all right reserved,powered by Gitbook作者:猿来教育 2024-05-11 17:53:30

results matching ""

    No results matching ""