源码编译构建LAMP

一:Apache 网站服务基础

1.1:apache简介

1:Apache 的起源

Apache HTTP服务器起源于1995年,最初是为了解决当时快速增长的World Wide Web需求而诞生的。它的发展始于对国家超级计算机应用中心(NCSA)的HTTPd服务器的一系列补丁和扩展。由于这些补丁的积累,“a patchy server”(意即充满补丁的服务器)的概念逐渐形成,从而得名“Apache”。随着时间的推移,它超越了原有的补丁集合,演变成一个功能全面且强大的独立项目,由Apache Software Foundation维护。

2:Apache 的主要特点

  • 开源性:Apache 是开源软件,这使得全球的开发者能够参与到它的改进和功能扩展中,促进了其快速发展和广泛应用。
  • 跨平台:几乎支持所有主流的操作系统平台,包括Linux、Windows、macOS等,提供了极高的灵活性和可移植性。
  • 模块化设计:通过动态加载模块的方式,用户可以根据需要启用或禁用特定功能,如SSL、URL重写、压缩等,增强了定制性和效率。
  • 稳定性与安全性:Apache 以其高度稳定性和安全性著称,常被用于高流量的网站和服务中。
  • 性能与可伸缩性:支持多种性能优化措施,如事件驱动模型(MPMs),能够处理大量并发连接,同时设计上便于水平扩展以应对更高的访问量。
  • 丰富的文档和支持:拥有庞大的用户社区和详尽的文档资源,便于用户学习、配置和故障排查。
  • 广泛的生态系统:作为LAMP栈的核心组成部分,与MySQL、PHP等技术紧密结合,广泛应用于Web开发和托管场景。

1.2:安装 httpd 服务器

1:准备工作

  • 确保系统已安装必要的依赖,如GCC(GNU Compiler Collection)、make工具、以及一些库文件(如pcre-devel、zlib-devel等,具体依赖根据Apache版本可能有所不同)。
  • 下载Apache HTTP Server的源代码包,可以从官方网站获取最新版本,例如通过wget命令下载。

2:源码编译及安装

(1)解包
tar -xvf httpd-<version>.tar.gz
cd httpd-<version>

(请将<version>替换为实际下载的版本号)

(2)配置

配置步骤通常包括指定安装路径、启用或禁用特定模块、指定编译参数等。例如:

./configure --prefix=/usr/local/apache --enable-so --with-mpm=event --with-included-apr

这里,--prefix指定了安装目录,--enable-so启用了动态加载模块的功能,--with-mpm=event选择了事件驱动的多路处理模块以提高性能,--with-included-apr使用随Apache源代码一起提供的APR库。

(3)编译及安装
make
sudo make install

3:确认安装结果

  • 可以通过运行安装目录下的bin/apachectl命令来测试安装是否成功,例如:
/usr/local/apache/bin/apachectl -v

此命令应显示Apache的版本信息。

4:优化执行路径

为了方便使用,可以将Apache的可执行文件路径添加到系统的PATH环境变量中:

echo 'export PATH=$PATH:/usr/local/apache/bin' >> ~/.bashrc
source ~/.bashrc

这样就可以在任何位置直接运行apachectl命令。

5:添加 httpd 系统服务

为了让Apache作为系统服务自动启动和管理,可以创建Systemd单元文件或在init系统中创建相应的脚本。以Systemd为例:

sudo nano /etc/systemd/system/httpd.service

在文件中添加以下内容:

[Unit]
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/usr/local/apache/logs/httpd.pid
ExecStart=/usr/local/apache/bin/apachectl start
ExecStop=/usr/local/apache/bin/apachectl stop
PrivateTmp=true

[Install]
WantedBy=multi-user.target

保存后,使用以下命令分别启动服务、设置开机启动,并查看状态:

sudo systemctl daemon-reload
sudo systemctl start httpd
sudo systemctl enable httpd
sudo systemctl status httpd

二:httpd 服务器的基本配置

2.1:Web 站点的部署过程

1:确定网站名称、IP 地址

  • 网站名称:为您的网站选择一个易于识别和记忆的名字,如 example.com
  • IP地址:确保您的服务器具有固定的公网IP地址或使用域名解析指向服务器的私有IP地址(如果是内部网络部署)。

2:配置并启动 httpd 服务

(1)配置 httpd 服务
  • 编辑Apache的主配置文件 httpd.conf,通常位于 /usr/local/apache/conf/ 或 /etc/httpd/conf/,根据实际情况而定。
  • 设置服务器根目录(DocumentRoot),指定网页文件存放的位置。例如:
  DocumentRoot "/var/www/html"
  
  • 配置监听的IP地址和端口(默认是80),例如:
  Listen 80
  ServerName your_domain_name_or_IP
  
  • 允许目录列表(可选),在 <Directory "/var/www/html"> 部分添加:
  Options Indexes FollowSymLinks
  
  • 保存配置文件并退出编辑器。
(2)启动 httpd 服务
  • 使用 Systemd 系统的服务管理命令启动:
  sudo systemctl start httpd
  

3:部署网页文档

  • 将您的网页文件上传至之前配置的 DocumentRoot 目录,例如 /var/www/html/

4:在客户机中访问 Web 站点

  • 打开浏览器,在地址栏输入您的网站域名或IP地址,如 http://your_domain_name_or_IP,按回车键访问。

5:查看 Web 站点的访问情况

  • 日志查看:Apache的访问日志和错误日志是监控网站访问情况的重要途径。默认情况下,这些日志文件可能位于 /var/log/httpd/ 目录下,名为 access_log 和 error_log
  • 使用命令行查看最近的日志条目:
  tail -f /var/log/httpd/access_log
  

这将实时显示访问日志的最新条目,帮助您了解谁在何时访问了哪些页面,以及是否有任何错误发生。

2.2:httpd.conf 配置文件

1:全局配置项

全局配置项影响整个Apache服务器的行为,它们通常位于配置文件的顶部,并且不位于任何特定的<Directory>, <VirtualHost>, 或其他容器内。以下是一些重要的全局配置项:

  • ServerRoot: 指定Apache服务器的根目录。
  ServerRoot "/etc/httpd"
  
  • Listen: 指定Apache监听的IP地址和端口号。
  Listen 80
  
  • ServerName: 设置服务器的主机名或IP地址,用于识别服务器。
  ServerName www.example.com:80
  
  • DocumentRoot: 设置网站的根目录,即默认存放网页文件的目录。
  DocumentRoot "/var/www/html"
  
  • ErrorLog: 错误日志文件的路径。
  ErrorLog "logs/error_log"
  
  • CustomLog: 访问日志文件的路径及格式。
  CustomLog "logs/access_log" common
  
  • LogLevel: 设置日志级别,如debug、info、notice、warn、error、crit、alert、emerg。
  LogLevel warn
  

2:区域配置项

区域配置项通常在特定的容器内定义,用于控制特定目录、文件或虚拟主机的行为。主要有以下几种类型的区域配置:

  • Directory: 控制特定目录下的访问权限、执行权限、重定向等。
  <Directory "/var/www/html">
      Options Indexes FollowSymLinks
      AllowOverride All
      Require all granted
  </Directory>
  
  • FilesMatch: 针对特定文件类型或名称的设置。
  <FilesMatch "\.php$">
      SetHandler application/x-httpd-php
  </FilesMatch>
  
  • Location: 针对URL路径的特殊处理。
  <Location "/secret">
      AuthType Basic
      AuthName "Restricted Area"
      AuthUserFile /etc/httpd/conf/.htpasswd
      Require valid-user
  </Location>
  
  • VirtualHost: 用于配置多个虚拟主机,每个虚拟主机可以有不同的域名、端口、文档根目录等。
  <VirtualHost *:80>
      ServerName www.example1.com
      DocumentRoot /var/www/example1
      ...
  </VirtualHost>
  
  <VirtualHost *:80>
      ServerName www.example2.com
      DocumentRoot /var/www/example2
      ...
  </VirtualHost>
  

三:构建虚拟 Web 主机

3.1:基于域名的虚拟主机

1:为虚拟主机提供域名解析(两个域名)

  • 注册域名:首先确保您拥有两个可用的域名,比如 site1.example.com 和 site2.example.com
  • DNS配置:登录到您的域名注册商或DNS提供商的控制面板,分别为这两个域名添加A记录或CNAME记录,指向您的服务器的IP地址。A记录直接指向IP,CNAME记录则指向另一个域名。例如:
    • site1.example.com A记录指向 192.0.2.1(您的服务器IP)
    • site2.example.com A记录指向 192.0.2.1(同上)

2:为虚拟主机准备网页文档(两个网站)

  • 在服务器上为每个虚拟主机创建独立的网页根目录,并放入相应的网页文件。
    • 例如,为 site1 创建 /var/www/site1 目录,放入首页文件如 index.html
    • 同样,为 site2 创建 /var/www/site2 目录,并放置其网页文件。

3:添加虚拟主机配置

  • 编辑Apache的配置文件 httpd.conf 或者在 /etc/httpd/conf.d/ 目录下创建单独的配置文件,如 vhosts.conf
  • 添加以下虚拟主机配置:
  <VirtualHost *:80>
      ServerName site1.example.com
      DocumentRoot /var/www/site1
      ErrorLog logs/site1-error.log
      CustomLog logs/site1-access.log combined
  </VirtualHost>

  <VirtualHost *:80>
      ServerName site2.example.com
      DocumentRoot /var/www/site2
      ErrorLog logs/site2-error.log
      CustomLog logs/site2-access.log combined
  </VirtualHost>
  
  • 确保配置文件正确无误后,重启Apache服务以应用更改:
  sudo systemctl restart httpd
  

4:在客户机中访问虚拟 Web 主机

  • 使用浏览器,在地址栏分别输入两个虚拟主机的域名 http://site1.example.com 和 http://site2.example.com
  • 如果配置正确,您应该能看到各自网站的内容,证明基于域名的虚拟主机配置成功。

3.2:基于 IP 地址、基于端口的虚拟主机

1:为主机设置多个IP地址

  • 分配IP地址:在服务器的网络配置中,您需要为其配置额外的IP地址。具体操作方法因操作系统而异,以下以Linux系统为例:
    • 编辑网络配置文件,如 /etc/network/interfaces(Debian/Ubuntu)或 /etc/sysconfig/network-scripts/ifcfg-eth0(CentOS/RHEL)。
    • 添加静态IP地址配置,示例:
    # 第二个IP地址配置
    auto eth0:1
    iface eth0:1 inet static
    address 192.0.2.2
    netmask 255.255.255.0
    gateway 192.0.2.1
    
  • 保存文件后,重启网络服务或执行 ifup 命令激活新的网络接口配置。

2:基于 IP 地址的虚拟主机

  • 在Apache的配置文件中,为每个IP地址配置不同的虚拟主机:
  <VirtualHost 192.0.2.1:80>
      ServerName site1.example.com
      DocumentRoot /var/www/site1
      ErrorLog logs/site1-error.log
      CustomLog logs/site1-access.log combined
  </VirtualHost>

  <VirtualHost 192.0.2.2:80>
      ServerName site2.example.com
      DocumentRoot /var/www/site2
      ErrorLog logs/site2-error.log
      CustomLog logs/site2-access.log combined
  </VirtualHost>
  
  • 重启Apache服务后,通过各自的IP地址即可访问对应的网站。

3:基于端口的虚拟主机

  • 当您希望在同一IP地址上通过不同端口提供多个网站时,可以在Apache配置中设置:
  <VirtualHost *:8080>
      ServerName site1.example.com
      DocumentRoot /var/www/site1_port
      ErrorLog logs/site1_port-error.log
      CustomLog logs/site1_port-access.log combined
  </VirtualHost>

  <VirtualHost *:8081>
      ServerName site2.example.com
      DocumentRoot /var/www/site2_port
      ErrorLog logs/site2_port-error.log
      CustomLog logs/site2_port-access.log combined
  </VirtualHost>
  
  • 访问时,用户需要在域名后加上指定的端口号,如 http://site1.example.com:8080 和 http://site2.example.com:8081

四:MySQL 的编译安装

1:准备工作

(1)检查安装环境

  • 确保您的系统满足MySQL的最低要求,包括足够的磁盘空间、内存和处理器能力。
  • 检查系统中是否已经安装了MySQL或其他数据库软件,避免端口冲突和配置文件覆盖。

(2)安装cmake

CMake是一个跨平台的自动化构建系统,用于从源代码构建、测试和打包软件。在大多数Linux发行版中,可以通过包管理器安装CMake。

对于基于Debian/Ubuntu的系统:

sudo apt-get update
sudo apt-get install cmake

对于基于Red Hat/CentOS的系统:

sudo yum install cmake

或者对于较新版本的CentOS/RHEL使用dnf:

sudo dnf install cmake

对于Fedora:

sudo dnf install cmake

对于Arch Linux及其衍生版:

sudo pacman -S cmake

安装完CMake后,您可以继续进行MySQL的编译安装步骤。请注意,直接从源代码编译MySQL可能比使用预编译的二进制包更复杂,并且需要解决更多的依赖关系。如果您不特别需要自定义编译选项,推荐使用操作系统提供的包管理器安装MySQL。

2:源码编译及安装

(1)创建运行用户

为了增强安全性,MySQL应当以非root用户身份运行。我们通常创建一个名为mysql的用户和组:

sudo useradd -r -s /bin/false -g mysql mysql

(2)解包

假设您已经下载了MySQL源代码压缩包(如mysql-8.0.26.tar.gz),将其解压到适当位置:

tar xzf mysql-8.0.26.tar.gz
cd mysql-8.0.26

(3)配置

配置步骤是编译前非常关键的一步,它允许您自定义MySQL的安装路径、特性、插件等。确保您已经安装了所有必要的依赖项,如ncurses-devel、openssl-devel等,然后执行配置脚本:

cmake \
  -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
  -DMYSQL_DATADIR=/data/mysql \
  -DWITH_SSL=yes \
  -DWITH_ZLIB=yes \
  -DENABLED_LOCAL_INFILE=ON \
  -DWITH_EDITLINE=OFF \
  -DWITH_READLINE=ON \
  -DMYSQL_UNIX_ADDR=/var/run/mysqld/mysqld.sock \
  -DSYSCONFDIR=/etc \
  -DDEFAULT_CHARSET=utf8mb4 \
  -DDEFAULT_COLLATION=utf8mb4_general_ci

请注意,上述命令中的路径(如/usr/local/mysql/data/mysql)需根据实际情况调整。

(4)编译并安装

配置完成后,开始编译并安装MySQL:

make
sudo make install

这可能需要一段时间,具体取决于您的硬件性能。

后续步骤

安装完成后,还需要进行一系列后续操作来初始化MySQL、设置root用户的密码、启动服务、配置开机启动等。这些步骤包括但不限于:

  • 初始化MySQL数据目录
  • 设置MySQL的环境变量(可选)
  • 创建MySQL系统服务(如果使用Systemd)
  • 启动MySQL服务
  • 运行安全脚本来设置root用户的密码并加强MySQL的安全性

请参照MySQL官方文档或相关教程完成这些后续步骤,以确保MySQL能够正常且安全地运行。

3:安装后的其他调整

1)对数据库目录进行权限设置

确保MySQL的数据目录(如之前配置的/data/mysql)的权限正确设置,以便MySQL服务能够读写数据:

sudo chown -R mysql:mysql /data/mysql

2)建立配置文件

如果在编译安装过程中没有自动生成配置文件,您需要手动创建或复制一个模板。MySQL安装目录下通常会有示例配置文件,如support-files/my-default.cnf,您可以基于此文件创建自己的配置文件,例如复制到/etc/my.cnf

sudo cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf

然后根据需要编辑/etc/my.cnf,调整端口、字符集、日志文件位置等配置。

(3)初始化数据库

使用mysqld二进制文件初始化MySQL的数据目录,这将创建必要的系统表等:

sudo /usr/local/mysql/bin/mysqld --initialize --console

初始化过程中,会输出root用户的临时密码,请注意保存。

(4)设置环境变量

为了方便在命令行中直接调用MySQL客户端和服务端程序,可以将MySQL的二进制目录加入到PATH环境变量中。编辑~/.bashrc(或相应shell的配置文件)并添加如下行:

export PATH=$PATH:/usr/local/mysql/bin

然后使修改生效:

source ~/.bashrc

4:启动并访问 MySQL 服务

启动MySQL服务

如果使用Systemd,可以创建一个新的服务单元文件或直接启动MySQL服务:

sudo systemctl start mysqld

若未自动创建服务,需手动创建:

sudo nano /etc/systemd/system/mysqld.service

然后添加服务定义(请根据实际路径调整):

[Unit]
Description=MySQL Server
After=network.target

[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

之后,重新加载Systemd并启动服务:

sudo systemctl daemon-reload
sudo systemctl start mysqld
sudo systemctl enable mysqld
访问MySQL服务

使用MySQL客户端连接到服务:

mysql -u root -p

系统会提示输入初始密码,输入后即可进入MySQL的命令行界面,开始管理和使用数据库。

五:构建 PHP 运行环境

5.1:安装 PHP 软件包

1:准备工作

确保您的系统已更新,并安装了必要的开发工具和库,例如GCC、make等。在Debian/Ubuntu上,可以使用以下命令安装:

sudo apt-get update
sudo apt-get install build-essential libxml2-dev libssl-dev libcurl4-openssl-dev pkg-config libbz2-dev libjpeg-dev libpng-dev libfreetype6-dev libmcrypt-dev libmysqlclient-dev libzip-dev

在基于RPM的系统(如CentOS/RHEL)上,可以使用:

sudo yum install gcc make libxml2-devel openssl-devel curl-d

2:安装扩展工具库

对于旧版本的PHP(如PHP 5.x),可能需要安装libmcryptmhashmcrypt。但请注意,对于PHP 7.2及以后的版本,mcrypt已被废弃,因此不需要安装。以下仅提供历史参考:

  • 安装 libmcrypt
wget https://github.com/libmcrypt/libmcrypt/releases/download/v2.5.8/libmcrypt-2.5.8.tar.gz
tar xzvf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8
./configure
make
sudo make install
  • 安装 mhash
wget https://github.com/tels/mhash/archive/mhash-0.9.9.9.tar.gz
tar xzvf mhash-0.9.9.9.tar.gz
cd mhash-mhash-0.9.9.9
./configure
make
sudo make install
  • 安装 mcrypt
wget https://github.com/php-mcrypt/mcrypt/releases/download/v2.6.8/mcrypt-2.6.8.tar.gz
tar xzvf mcrypt-2.6.8.tar.gz
cd mcrypt-2.6.8
./configure
make
sudo make install
ldconfig

3:编译安装 PHP

  • 解包
wget https://www.php.net/distributions/php-X.Y.Z.tar.gz  # X.Y.Z替换为所需版本号
tar xzvf php-X.Y.Z.tar.gz
cd php-X.Y.Z
  • 配置 配置步骤根据您的需求调整,以下是一个基本的例子,包含一些常用扩展:
./configure \
--prefix=/usr/local/php \
--with-config-file-path=/etc/php \
--with-config-file-scan-dir=/etc/php/conf.d \
--enable-mbstring \
--enable-zip \
--enable-bcmath \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--enable-gd-jis-conv \
--with-iconv-dir \
--enable-exif \
--enable-calendar \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-zlib \
--enable-xml \
--disable-rpath \
--enable-bcmath \
--enable-shmop \
--enable-soap \
--enable-sockets \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-wddx \
--with-xmlrpc \
--with-xsl \
--enable-opcache
  • 编译及安装
make
sudo make install

完成上述步骤后,别忘了配置PHP的ini文件(通常位于/etc/php/php.ini),并根据需要启用或禁用扩展。最后,重启web服务器(如Apache或Nginx),使其能识别并使用新安装的PHP。

5.2:设置 LAMP 组件环境

1:php.ini 配置调整

(1)php.ini 的建立及基本设置

通常,PHP安装过程中会自动复制默认的php.ini文件到指定的位置(如/etc/php/php.ini)。如果没有自动复制,您需要手动从源代码目录下的php.ini-productionphp.ini-development复制一份作为生产或开发环境的配置基础。例如:

sudo cp /usr/local/php/php.ini-production /etc/php/php.ini

接下来,根据您的应用程序需求调整php.ini中的设置,例如错误报告级别、上传文件大小限制、日期时间区域设置等。

(2)添加 ZendGuardLoader 优化模块

ZendGuardLoader 已经被废弃,取而代之的是 Zend OPcache,它是PHP 5.5及以上版本中内置的性能优化组件。如果您确实需要使用类似功能,对于PHP 7及以上版本,应配置OPcache而非ZendGuardLoader。在php.ini中查找或添加以下内容以启用OPcache:

zend_extension=opcache.so
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=0

请根据您的服务器配置调整各项参数。

2:httpd.conf 配置调整

为了使Apache支持PHP处理,需要在httpd.conf(或Apache的其他配置文件,如/etc/apache2/sites-available/000-default.conf)中添加或调整以下设置:

  • 加载PHP模块:确保Apache知道如何处理.php文件。找到或添加以下行到配置文件中(路径可能根据您的安装位置有所不同):
LoadModule php_module modules/libphp7.so
  • PHP处理器配置:在配置文件中,确保有如下配置段落,指示Apache使用PHP处理器来处理.php文件:
<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>
  • 目录权限与索引设置:如果需要在特定目录下运行PHP文件,确保该目录具有正确的权限和索引文件设置,例如:
<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

完成配置后,记得重启Apache服务以应用更改:

sudo systemctl restart apache2

sudo service httpd restart

通过以上步骤,您完成了LAMP环境中的PHP配置调整,以及Apache服务器与PHP的集成,使得服务器能够正确解析并运行PHP脚本。

5.3:测试 LAMP 协同工作

1:测试 PHP 网页能否正确显示

为了验证PHP是否正确安装并由Apache服务解析,您可以创建一个简单的PHP信息页面。在Apache的文档根目录(通常是/var/www/html/srv/http,具体取决于您的配置)中创建一个名为info.php的文件,并写入以下内容:

<?php
phpinfo();
?>

保存文件后,通过浏览器访问 http://your_server_ip_or_domain/info.php。如果一切配置正确,您应该能看到一个展示PHP安装详情的页面,包括版本信息、配置选项、已加载的模块等。

2:测试 PHP 网页能否访问 MySQL 数据库

接下来,我们将创建一个PHP脚本来测试能否成功连接到MySQL数据库。首先确保您已为数据库创建了用户和数据库,并记下相应的用户名、密码和数据库名。

在Apache的文档根目录下,创建一个名为test_db_connection.php的文件,写入以下代码(替换your_usernameyour_passwordyour_database为实际值):

<?php
$servername = "localhost";
$username = "your_username";
$password = "your_password";
$dbname = "your_database";

// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);

// 检测连接
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
} 
echo "连接成功";
$conn->close();
?>

保存文件后,通过浏览器访问 http://your_server_ip_or_domain/test_db_connection.php。如果网页显示“连接成功”,则表明PHP能够成功访问MySQL数据库。如果遇到错误,检查数据库的登录凭据、数据库是否正确创建以及MySQL服务是否正在运行。

相关推荐

  1. 编译构建LAMP

    2024-07-10 01:08:04       24 阅读
  2. 编译构建LAMP

    2024-07-10 01:08:04       17 阅读
  3. 第2章 编译构建LAMP

    2024-07-10 01:08:04       15 阅读
  4. 编译安装LAMP

    2024-07-10 01:08:04       21 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-10 01:08:04       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 01:08:04       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 01:08:04       58 阅读
  4. Python语言-面向对象

    2024-07-10 01:08:04       69 阅读

热门阅读

  1. 网络安全筑基篇——反序列化漏洞

    2024-07-10 01:08:04       19 阅读
  2. 网络安全主动防御技术与应用

    2024-07-10 01:08:04       20 阅读
  3. 手写Spring MVC中DispatcherServlet与核心组件底层

    2024-07-10 01:08:04       22 阅读
  4. 移动端Vant-list的二次封装,查询参数重置

    2024-07-10 01:08:04       26 阅读
  5. @SpringBootApplication 注解

    2024-07-10 01:08:04       25 阅读
  6. 整车行业APS项目难点(我的APS项目九)

    2024-07-10 01:08:04       23 阅读
  7. 7月07日,每日信息差

    2024-07-10 01:08:04       25 阅读
  8. 定义变量和声明变量、定义类和声明类

    2024-07-10 01:08:04       25 阅读
  9. 2024第三届中国医疗机器人大会第一轮通知

    2024-07-10 01:08:04       16 阅读
  10. 反向业务判断逻辑

    2024-07-10 01:08:04       21 阅读