LAMP(Linux、Apache、MySQL、PHP)环境搭建和项目部署 编译安装 全流程!

ops/2024/9/24 15:52:58/

文章目录

    • LAMP架构
      • LAMP架构组件
      • LAMP架构的工作流程
      • LAMP组件的安装顺序
    • 编译安装 Apache HTTP 服务器
      • 1. 关闭防火墙并准备安装所需软件包
      • 2. 安装环境依赖包
      • 3. 配置软件模块
      • 4. 编译及安装
      • 5. 优化配置文件路径
      • 6. 添加 httpd 服务到系统服务管理
      • 7. 修改 httpd 服务配置文件
      • 8. 浏览器访问验证
    • 编译安装 MySQLd 服务
      • 1. 准备安装包
      • 2. 安装环境依赖包
      • 3. 配置软件模块
      • 4. 编译及安装
      • 5. 创建 MySQL 用户
      • 6. 修改 MySQL 配置文件
      • 7. 更改 MySQL 安装目录和配置文件的属主属组
      • 8. 设置路径环境变量
      • 9. 初始化数据库
      • 10. 添加 MySQL 系统服务
      • 11. 修改 MySQL 登录密码
      • 12. 授权远程登录
      • 13. 查看已有数据库
    • 编译安装 PHP 解析环境
      • 1. 将安装 PHP 所需软件包传到 `/opt` 目录
      • 2. 安装 GD 库和相关程序
      • 3. 配置 PHP 软件模块
      • 4. 编译及安装
      • 5. 优化 PHP 的可执行程序文件路径
      • 6. 复制模板文件并修改 PHP 配置
      • 7. 修改 Apache 配置文件以支持 PHP
      • 8. 验证 PHP 安装
    • 示例:论坛安装
      • 1. 创建数据库并授权
      • 2. 解压论坛压缩包
      • 3. 更改论坛目录的属主
      • 4. 浏览器访问验证
      • 论坛后台管理员页面
      • 同理搭建博客


LAMP架构

LAMP架构是目前广泛应用的企业网站开发与应用模式之一,能够提供稳定、灵活的动态Web站点服务及应用开发环境。

LAMP架构组件

LAMP是Linux、Apache、MySQL、PHP/Perl/Python的首字母缩写,代表一整套协同工作的软件系统:

  • Linux(平台):作为LAMP架构的基础。
    LAMP主要指Linux平台,但该架构的其他组件也支持Windows、UNIX等操作系统。
  • Apache(前端):Apache是LAMP中的Web服务器软件,功能强大且高度稳定。
    负责处理用户的请求,返回相应的网页内容、图像、文件等信息,是整个架构中直接与用户交互的组件。
    作为前端网站服务,处理静态页面请求。
  • MySQL(后台):后端数据库。
    MySQL是一款开源的关系型数据库管理系统,存储业务数据和账户信息。
  • PHP/Perl/Python(中间层/开发语言):这些动态编程语言负责连接Web服务器与数据库,解释和处理动态网页文件,进而生成用户请求的动态内容。
    • PHP 是最常见的用于Web开发的脚本语言,支持嵌入HTML,特别适合开发交互式Web应用程序。
      解释动态页面,并协同前端和后端工作。
    • PerlPython 也同样适用于Web开发,提供灵活的开发能力,但使用频率不如PHP。

LAMP架构的工作流程

  1. Linux 提供了操作系统环境,所有组件都在其上运行。
  2. Apache 处理用户发出的HTTP请求,决定需要展示哪些页面。
  3. PHP/Perl/Python 负责生成动态内容,处理用户的输入,调用后端数据库。
  4. MySQL 处理数据库查询和数据管理,返回请求的数据内容。

LAMP组件的安装顺序

构建LAMP环境时,通常遵循以下顺序:

  1. Linux:操作系统安装为第一步。
  2. Apache:安装并配置Web服务器
  3. MySQL:安装数据库系统。
  4. PHP:最后安装和配置PHP/Perl/Python语言环境,使其能够与Apache和MySQL协同工作。

Apache和MySQL的安装顺序并没有严格的限制,PHP作为中间语言需要与前后端紧密结合,通常在所有其他组件安装完成后进行配置。

编译安装 Apache HTTP 服务器

1. 关闭防火墙并准备安装所需软件包

  • 首先关闭防火墙,确保安装 Apache 的过程中没有外部干扰:

    systemctl stop firewalld
    systemctl disable firewalld
    setenforce 0
    
  • 准备好 Apache 和其依赖的组件包并将其传到 /opt 目录下:

    • httpd-2.4.29.tar.gz
    • apr-1.6.2.tar.gz
    • apr-util-1.6.0.tar.gz

    APR组件包:用于支持 Apache 上层应用跨平台,提供底层接口库,能够有效提高并发连接数、降低进程开销,并减少访问堵塞。

2. 安装环境依赖包

为了编译 Apache 服务,需要安装以下依赖包:

yum -y install gcc gcc-c++ make pcre pcre-devel expat-devel perl
  • gcc:C 语言编译器。
  • gcc-c++:C++ 语言编译器。
  • make:源代码编译器,将源代码转换为二进制文件。
  • pcre:Perl 兼容的正则表达式库。
  • pcre-devel:Perl 的接口开发包。
  • expat-devel:用于解析 HTML、XML 文件。
  • perl:Perl 语言编译器。

3. 配置软件模块

进入 /opt 目录,解压安装包:

cd /opt/
tar zxvf apr-1.6.2.tar.gz
tar zxvf apr-util-1.6.0.tar.gz
tar jxvf httpd-2.4.29.tar.bz2

aprapr-util 移动到 Apache 源码的 srclib 目录下:

mv apr-1.6.2 /opt/httpd-2.4.29/srclib/apr
mv apr-util-1.6.0 /opt/httpd-2.4.29/srclib/apr-util

配置 Apache,设置安装路径并启用相关模块:

cd /opt/httpd-2.4.29/
./configure --prefix=/usr/local/httpd \--enable-so \--enable-rewrite \--enable-charset-lite \--enable-cgi./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi
  • -prefix:指定 httpd 服务程序的安装路径。
  • -enable-so:启用动态加载模块支持,使 httpd 具备进一步扩展功能的能力。
  • -enable-rewrite:启用 URL 网页地址重写功能,用于王网站优化、防盗链及目录迁移维护。
  • -enable-charset-lite:启用字符集支持,以便支持使用各种字符集编码的页面。
  • -enable-cgi:启用 CGI (通用网关接口)脚本支持,便于网站的外部扩展应用访问能力。

4. 编译及安装

  • 使用 make 命令编译程序,使用 j 参数可以并行编译,提升效率:

    make       # make -j 2 开两核同时编译
    make install
    

5. 优化配置文件路径

为方便系统识别并简化操作,将相关文件链接到常用路径,把httpd服务的可执行程序文件放入路径环境变量的目录中便于系统识别:

ln -s /usr/local/httpd/conf/httpd.conf /etc/
ln -s /usr/local/httpd/bin/* /usr/local/bin/

6. 添加 httpd 服务到系统服务管理

可以选择两种方法将 Apache 注册为系统服务:

方法一

  • 复制可执行文件并创建服务:

    cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd             
    # 用于service服务管理chmod +x /etc/init.d/httpd
    vi /etc/init.d/httpd
    
  • 在脚本的开头添加以下三行内容:

    #!/bin/bash
    # chkconfig: 35 85 21
    # description: Apache is a World Wide Web server
    
  • 将 httpd 服务加入 chkconfig 管理(service管理器):

    chkconfig --add httpd
    systemctl start httpd.service
    

方法二

  • 创建 systemd 服务配置文件:

    vim /lib/systemd/system/httpd.service
    
  • 内容如下:

    [Unit]     #服务的说明
    Description=The Apache HTTP Server 
    #描述服务
    After=network.target  
    #依赖,当依赖的服务启动之后再启动自定义的服务[Service]  #服务运行参数的设置
    Type=forking 
    #后台运行方式
    PIDFile=/usr/local/httpd/logs/httpd.pid 
    #PID文件位置,必须和安装目录一致
    ExecStart=/usr/local/bin/apachectl $OPTIONS
    #服务的运行命令
    ExecReload=/bin/kill -HUP $MAINPID
    #服务安装的相关设置[Install]  #服务安装的相关设置
    WantedBy=multi-user.target  #设置为多用户
    
  • 启动并启用服务:

    systemctl start httpd.service
    systemctl enable httpd.service
    

7. 修改 httpd 服务配置文件

编辑 Apache 的配置文件 /etc/httpd.conf

vim /etc/httpd.conf
  • 修改监听 IP 和端口,默认为监听所有(52行):

    Listen 192.168.80.10:80
    

    注意:此行下方还有一段 Listen 不可配置相同端口!否则会端口冲突。

  • 修改服务器名称,取消注释(197行):

    ServerName www.myweb.com:80
    
  • 设置网站根目录(首页存放路径)(221行):

    DocumentRoot "/usr/local/httpd/htdocs"
    
  • 设置默认首页文件名(255行):

    DirectoryIndex index.html
    

检查配置文件是否正确:

httpd -t  #检查语法
#或 
apachectl -tcat /usr/local/httpd/htdocs/index.html

重启 Apache 服务:

systemctl restart httpd.service

8. 浏览器访问验证

  • 检查端口监听状态:

    netstat -anpt | grep 80
    
  • 添加域名解析:

    echo "192.168.80.10 www.myweb.com" >> /etc/hosts
    

通过浏览器访问:

  • http://192.168.80.10
  • http://www.myweb.com

LAMP 架构下的 Apache 已成功安装并配置完成。

编译安装 MySQLd 服务

1. 准备安装包

将安装 MySQL 所需的文件包传输到 /opt 目录:

  • mysql-5.7.17.tar.gz
  • boost_1_59_0.tar.gz(C++ 运行库)

2. 安装环境依赖包

为 MySQLd 服务编译安装所需的依赖包:

yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake openssl-devel
  • gcc:C 语言编译器。
  • gcc-c++:C++ 语言编译器。
  • ncurses:提供字符终端下的图形交互功能。
  • ncurses-devel:ncurses 的开发包。
  • bison:语法分析器。
  • cmake:用于构建 MySQL。
  • openssl-devel:用于加密功能支持。

3. 配置软件模块

解压 MySQL 和 Boost 包:

tar zxvf mysql-5.7.17.tar.gz
tar zxvf boost_1_59_0.tar.gz

将 Boost 包移动到目标路径并重命名:

mv boost_1_59_0 /usr/local/boost

进入 MySQL 源码目录并配置编译选项:

cd /opt/mysql-5.7.17/
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=/usr/local/boost \
-DWITH_SYSTEMD=1

配置选项说明:

  • DCMAKE_INSTALL_PREFIX:指定 MySQL 的安装路径。
  • DMYSQL_UNIX_ADDR:指定 MySQL 进程监听的套接字文件路径。
  • DSYSCONFDIR:配置文件存储路径。
  • DSYSTEMD_PID_DIR:指定 PID 文件存储路径。
  • DDEFAULT_CHARSET:设置默认字符集为 utf8
  • DDEFAULT_COLLATION:设置默认字符集的校对规则为 utf8_general_ci
  • DWITH_EXTRA_CHARSETS=all:支持所有字符集编码。
  • DWITH_INNOBASE_STORAGE_ENGINE:启用 InnoDB 存储引擎。
  • DWITH_ARCHIVE_STORAGE_ENGINE:启用 ARCHIVE 存储引擎。
  • DWITH_BLACKHOLE_STORAGE_ENGINE:启用 BLACKHOLE 存储引擎。
  • DWITH_PERFSCHEMA_STORAGE_ENGINE:启用 Performance Schema 存储引擎。
  • DMYSQL_DATADIR:指定数据库文件存储路径。
  • DWITH_BOOST:指定 Boost 的路径。
  • DWITH_SYSTEMD:生成便于 systemctl 管理的文件。

其他存储引擎选项:

  • MYISAM、MERGE、MEMORY、CSV:默认编译到服务器,不需要额外安装。
  • 静态编译特定存储引擎到服务器DWITH_engine_STORAGE_ENGINE=1
  • 可用的存储引擎值有:ARCHIVE, BLACKHOLE, EXAMPLE, FEDERATED, INNOBASE (InnoDB), PARTITION (partitioning support), 和PERFSCHEMA (Performance Schema)。

注意:如果 cmake 过程中出现错误,在解决错误后,需要删除源码目录中的 CMakeCache.txt 文件,然后重新运行 cmake,否则错误将持续存在。

4. 编译及安装

执行编译并安装 MySQL:

make && make install

此时,成功编译并安装 MySQLd 服务,后续可继续进行相关的配置、数据库初始化以及服务启动等操作。

5. 创建 MySQL 用户

创建一个专门用于管理 MySQL 的系统用户:

useradd -M -s /sbin/nologin mysql
  • M:不创建用户的主目录。
  • s /sbin/nologin:禁止用户登录系统。

6. 修改 MySQL 配置文件

编辑 MySQL 的主配置文件 /etc/my.cnf,删除原有配置项,可使用 yum remove -y mariadb* 删除默认配置文件,并自行添加以下内容:

[client]                    # 客户端设置
port = 3306                 # 指定 MySQL 连接的端口号
socket = /usr/local/mysql/mysql.sock  # 套接字文件位置[mysql]                     # MySQL 客户端设置
port = 3306                 # 端口号
socket = /usr/local/mysql/mysql.sock  # 套接字文件位置
auto-rehash                 # 启用自动补全功能[mysqld]                    # MySQL 服务端设置
user = mysql                # 设置管理 MySQL 的用户
basedir = /usr/local/mysql   # 指定 MySQL 的安装目录
datadir = /usr/local/mysql/data  # 数据库文件的存储路径
port = 3306                 # 指定服务的端口号
character-set-server = utf8mb4  # 设置 MySQL 的字符集编码格式为 utf8mb4
pid-file = /usr/local/mysql/mysqld.pid  # 指定 PID 文件路径
socket = /usr/local/mysql/mysql.sock    # 套接字文件位置
bind-address = 0.0.0.0     # 监听地址,0.0.0.0 允许所有地址连接,如允许多个IP需空格隔开,可改为仅本机
skip-name-resolve          # 禁止域名解析,包括主机名,授权时使用 IP 地址
max_connections = 4096      # 设置最大连接数为 4096
default-storage-engine = INNODB  # 设置默认的存储引擎为 INNODB
max_allowed_packet = 32M    # 设置最大传输数据包大小为 32M。在网络传输中一次消息传输量的最大值。系统默认值为 1MB,最大值是 1GB,必须设置 1024 的倍数。
server-id = 1               # 服务 ID 号

SQL 模式设置:

sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
  • NO_ENGINE_SUBSTITUTION:禁止在不支持存储引擎的情况下替换为其他存储引擎。如果需要的存储引擎被禁用或未编译,那么抛出错误。不设置此值时,用默认的存储引擎替代,并抛出一个异常。
  • STRICT_TRANS_TABLES:严格事务表模式。在该模式下,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做限制。
  • NO_AUTO_CREATE_USER:禁止在授权时自动创建用户。禁止GRANT创建密码为空的用户。
  • NO_AUTO_VALUE_ON_ZERO:禁止将零作为 AUTO_INCREMENT 值。mysql中的自增长列可以从0开始。默认情况下自增长列是从1开始的,如果插入值为0的数据会报错
  • NO_ZERO_IN_DATENO_ZERO_DATE:禁止不完整的日期输入。不允许日期和月份为零。mysql数据库不允许插入零日期,插入零日期会抛出错误而不是警告。
  • ERROR_FOR_DIVISION_BY_ZERO:除以零时报错。在INSERT或UPDATE过程中,如果数据被零除,则产生错误而非警告。默认情况下数据被零除时MySQL返回NULL。
  • PIPES_AS_CONCAT:将管道符 || 视为连接符。将"||"视为字符串的连接操作符而非或运算符,这和Oracle数据库是一样的,也和字符串的拼接函数Concat相类似
  • ANSI_QUOTES:启用 ANSI 标准引号。启用ANSI_QUOTES后,不能用双引号来引用字符串,因为它被解释为识别符

常见 sql_mode 配置值说明

  • NO_ENGINE_SUBSTITUTION:当需要的存储引擎被禁用或未编译时,会抛出错误。未设置此值时,会用默认存储引擎替代,并抛出警告。
  • STRICT_TRANS_TABLES:在该模式下,如果一个值不能插入到事务表中,则中断当前操作;非事务表不受限制。
  • NO_AUTO_CREATE_USER:禁止使用 GRANT 创建没有密码的用户。
  • NO_AUTO_VALUE_ON_ZERO:自增长列默认从 1 开始。设置此模式后,插入 0 到自增长列时会报错。
  • NO_ZERO_IN_DATE:禁止日期或月份为 0。
  • NO_ZERO_DATE:禁止插入零日期,否则会抛出错误而非警告。
  • ERROR_FOR_DIVISION_BY_ZERO:插入或更新时,如果数据被零除,将抛出错误而非警告(默认 MySQL 返回 NULL)。
  • PIPES_AS_CONCAT:将 || 视为字符串连接符,而非逻辑或运算符,类似于 Oracle 数据库中的字符串拼接。
  • ANSI_QUOTES:启用后,双引号不能用来引用字符串,而是用于标识符。

清爽版 MySQL 配置文件 (/etc/my.cnf) 完整示例

[client]
port = 3306
socket = /usr/local/mysql/mysql.sock[mysql]
port = 3306
socket = /usr/local/mysql/mysql.sock
auto-rehash[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character-set-server = utf8mb4
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
bind-address = 192.168.80.30
skip-name-resolve
max_connections = 4096
default-storage-engine = INNODB
max_allowed_packet = 32M
server-id = 1sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES

7. 更改 MySQL 安装目录和配置文件的属主属组

chown -R mysql:mysql /usr/local/mysql/
chown mysql:mysql /etc/my.cnf

8. 设置路径环境变量

将 MySQL 安装路径加入系统环境变量:

echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
source /etc/profile

9. 初始化数据库

初始化 MySQL 数据库,并设置密码为空:

cd /usr/local/mysql/bin/
./mysqld \
--initialize-insecure \				#生成初始化密码为空
--user=mysql \                #指定管理用户
--basedir=/usr/local/mysql \  #指定数据库的安装目录
--datadir=/usr/local/mysql/data #指定数据库文件的存储路径

清爽版:

cd /usr/local/mysql/bin/
./mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

10. 添加 MySQL 系统服务

将 MySQL 添加到系统服务管理中,便于使用 systemctl 管理:

cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/systemctl daemon-reload          # 刷新服务配置systemctl start mysqld.service   # 启动 MySQL 服务
systemctl enable mysqld          # 设置开机自启动netstat -anpt | grep 3306        # 查看 MySQL 是否在监听 3306 端口

11. 修改 MySQL 登录密码

root 用户设置密码,给root账号设置密码为abc123,原始密码为空:

mysqladmin -u root password "abc123"

12. 授权远程登录

登录 MySQL 并为 root 用户授权远程访问权限:

mysql -u root -p
grant all privileges on *.* to 'root'@'%' identified by 'abc123';
  • 授权 root 用户可以从任何终端远程登录,密码为 abc123,并对所有数据库和表拥有完全操作权限。

13. 查看已有数据库

show databases;

编译安装 PHP 解析环境

1. 将安装 PHP 所需软件包传到 /opt 目录

php-7.1.10.tar.bz2

2. 安装 GD 库和相关程序

GD 库用于处理和生成图片。执行以下命令安装相关依赖:

yum -y install \
gd \
libjpeg libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 libxml2-devel \
zlib zlib-devel \
curl curl-devel \
openssl openssl-devel

3. 配置 PHP 软件模块

进入 PHP 安装包目录,解压并进行配置:

cd /opt
tar xf php-7.1.10.tar.bz2
cd /opt/php-7.1.10/
./configure \
--prefix=/usr/local/php \                            # 指定 PHP 安装路径
--with-apxs2=/usr/local/httpd/bin/apxs \             # 指定 Apache httpd 服务提供的 apxs 模块支持程序路径
--with-mysql-sock=/usr/local/mysql/mysql.sock \      # 指定 MySQL 数据库连接文件路径
--with-config-file-path=/usr/local/php/lib \         # 设置 PHP 配置文件 php.ini 的存放路径
--with-mysqli \                                      # 添加 MySQLi 扩展支持,mysqli扩展技术不仅可以调用MySQL的存储过程、处理MySQL事务,而且还可以使访问数据库工作变得更加稳定
--with-zlib \                                        # 支持 zlib 功能,提供数据压缩
--with-curl \                                        # 启用 curl 扩展功能,实现HTTP的Get下载和Post请求的方法
--with-gd \                                          # 激活 GD 库支持
--with-jpeg-dir \                                    # 激活 JPEG 支持
--with-png-dir \                                     # 激活 PNG 支持
--with-freetype-dir \                                # 激活 FreeType 字体支持
--with-openssl \                                     # 启用 OpenSSL 支持
--enable-mbstring \                                  # 启用多字节字符串功能,以便支持中文等代码
--enable-xml \                                       # 启用 XML 支持,开启扩展性标记语言模块
--enable-session \                                   # 启用会话支持
--enable-ftp \                                       # 启用 FTP 支持
--enable-pdo \                                       # 启用 PDO 数据库支持
--enable-tokenizer \                                 # 启用 Tokenizer 支持
--enable-zip                                         # 启用 ZIP 压缩支持

清爽版:

./configure \
--prefix=/usr/local/php \
--with-apxs2=/usr/local/httpd/bin/apxs \
--with-mysql-sock=/usr/local/mysql/mysql.sock \
--with-config-file-path=/usr/local/php/lib \
--with-mysqli \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-openssl \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip

4. 编译及安装

执行以下命令进行编译和安装:

make && make install

5. 优化 PHP 的可执行程序文件路径

将 PHP 可执行文件添加到系统路径,便于系统识别:

ln -s /usr/local/php/bin/* /usr/local/bin/
php -m          # 查看 PHP 加载了哪些模块

6. 复制模板文件并修改 PHP 配置

  1. 查看 PHP 使用的配置文件路径:

    php --ini
    
  2. 复制开发环境配置文件作为 PHP 的主配置文件:

    cp /opt/php-7.1.10/php.ini-development /usr/local/php/lib/php.ini
    

    注意: 测试环境使用 php.ini-development,生产环境使用 php.ini-production

  3. 修改 PHP 配置文件:

    vim /usr/local/php/lib/php.ini
    
    • 1170 行: 修改 MySQL 默认 socket 路径:

      mysqli.default_socket = /usr/local/mysql/mysql.sock
      
    • 939 行: 取消注释并修改时区为上海:

      date.timezone = Asia/Shanghai
      

7. 修改 Apache 配置文件以支持 PHP

  1. 打开 Apache 配置文件:

    vim /etc/httpd.conf
    
  2. 393 行: 插入以下内容,使 Apache 支持 PHP 文件解析:

    AddType application/x-httpd-php .php
    AddType application/x-httpd-php-source .phps
    
  3. 255 行: 修改默认首页文件名设置,添加 index.php

    DirectoryIndex index.html index.php
    
  4. 确保加载了支持 PHP 7 的模块,检查是否存在以下模块:

    LoadModule php7_module modules/libphp7.so
    

8. 验证 PHP 安装

  1. 删除默认首页文件并创建 PHP 测试页:

    rm -rf /usr/local/httpd/htdocs/index.html
    vim /usr/local/httpd/htdocs/index.php
    
  2. index.php 文件中插入以下内容:

    php"><?php
    phpinfo();
    ?>
    
  3. 重启 Apache 服务:

    systemctl restart httpd.service
    
  4. 在浏览器中访问 PHP 测试页面:

    http://192.168.80.10/index.php
    

示例:论坛安装

1. 创建数据库并授权

  1. 登录 MySQL:

    mysql -u root -p
    
  2. 创建论坛数据库:

    CREATE DATABASE bbs;
    
  3. 授予用户 bbsuser 访问 bbs 数据库的所有权限,并设置密码为 admin123

    GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY 'admin123';
    
  4. 刷新权限,使授权生效:

    FLUSH PRIVILEGES;
    
  5. 查看已创建的数据库:

    SHOW DATABASES;
    

2. 解压论坛压缩包

如需软件包,可私信我,发密码。
压缩包文件:蓝奏云链接

  1. 解压 Discuz 论坛压缩包:

    unzip /opt/Discuz_X3.4_SC_UTF8.zip -d /opt/dis
    
  2. 进入解压目录:

    cd /opt/dis/dir_SC_UTF8/
    
  3. upload/ 目录复制到 Apache 的 htdocs 目录下并重命名为 bbs

    cp -r upload/ /usr/local/httpd/htdocs/bbs
    

3. 更改论坛目录的属主

  1. 查看 Apache 进程的用户信息:

    ps aux
    

    注意: 通常,Apache 运行的用户是 daemon

  2. 进入论坛目录并修改权限:

    cd /usr/local/httpd/htdocs/bbs
    
  3. 更改以下目录的属主为 daemon

    chown -R daemon ./config
    chown -R daemon ./data
    chown -R daemon ./uc_client
    chown -R daemon ./uc_server/data
    

4. 浏览器访问验证

  1. 在浏览器中访问论坛页面:

    http://192.168.80.10/bbs
    
  2. 在安装页面中输入以下数据库配置信息:

    • 数据库服务器: localhost(如果不是本地服务器,填写服务器 IP 和端口)
    • 数据库名称: bbs
    • 数据库用户名: bbsuser
    • 数据库密码: admin123
    • 管理员账号: admin
    • 管理员密码: admin123

论坛后台管理员页面

  • 后台管理地址:

    http://192.168.80.10/bbs/admin.php
    

同理搭建博客

同理同样的步骤,网站文件夹解压复制到 /usr/local/httpd/htdocs/ 下,即可。



http://www.ppmy.cn/ops/115345.html

相关文章

(Python) Structured Streaming读取Kafka源实时处理图像

Producer.py import cv2 from kafka import KafkaProducer import os import os.path as osp# Kafka 服务器地址 bootstrap_servers [xxx.xxx.xxx.xxx:9092] #terminal运行ifconfig可以查看localhost# 创建 Kafka 生产者 producer KafkaProducer(bootstrap_serversbootstrap…

IR21364的代替品SLM21364CF-DG:带过流保护、使能和故障反馈 高压三相半桥驱动芯片 神秘芯片背后的惊人力量

SLM21364CF-DG是一款高压、高速的三相功率MOSFET和IGBT驱动器。采用专有的高压集成电路和锁存免疫CMOS技术&#xff0c;提供可靠的单芯片驱动方案。逻辑输入电平与标准CMOS或LSTTL输出兼容&#xff0c;最低支持3.3V逻辑。通过检测外部电流电阻上电流&#xff0c;过流保护功能能…

【CTF】Nginx日志注入

Nginx日志注入&#xff1a; 日志包含漏洞的成因还是服务器没有进行严格的过滤 &#xff0c;导致用户可以进行任意文件读取&#xff0c;但是前提是服务器需要开启了记录日志的功能才可以利用这个漏洞。 对于Apache&#xff0c;日志存放路径&#xff1a;/var/log/apache/access.l…

Python 二次开发金橙子打印软件:开启高效打印新旅程

目录 一、准备工作&#xff1a;搭建系统环境 二、二次开发流程详解 结合一个实例来讲解如何进行二次开发。 三、Python 二次开发关键要素 &#xff08;一&#xff09;源码示例与解读 &#xff08;二&#xff09;二次开发文档指引 四、问题汇总与解决方案 &#xff08;一…

【Python报错已解决】AttributeError: ‘Tensor‘ object has no attribute ‘kernel_size‘

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 专栏介绍 在软件开发和日常使用中&#xff0c;BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…

PyQT开发总结

用PyQT开发了一个界面小程序&#xff0c;记录一下。 pyuic和pyrcc pyuic &#xff08;PYthon User Interface Compiler&#xff09;是一个命令行工具&#xff0c;用于将 Qt Designer 生成的 .ui 文件转换成 Python 代码。pyrcc 用于处理 Qt 资源文件&#xff08;如图片&#…

云手机可以挂在服务器使用吗?

随着移动互联网的迅速发展&#xff0c;手机已成为个人和企业必不可少的工具。为了满足更大规模的应用需求以及简化管理&#xff0c;云手机技术应运而生。云手机是一种虚拟化的手机设备&#xff0c;它依托云计算技术&#xff0c;将手机操作系统和应用托管在云端数据中心。用户可…

动态住宅IP的多元化应用

在现代网络环境中&#xff0c;动态住宅IP以其灵活、隐蔽性强和全球范围覆盖的特点&#xff0c;逐渐成为各行业不可或缺的工具。本文将从多个角度解析动态住宅IP的多元化应用。 1. 跨境电商中的账号管理 在跨境电商平台上运营&#xff0c;通常需要多个账号来管理不同市场和区域…