目录

LNMP

安装mysql数据库

安装配置PHP解析环境

部署 Discuz!社区论坛 Web 应用


至少需要四核八G

LNMP

  • l: linux系统

  • n: nginx静态页面,转发动态请求

  • m: mysql数据库,后端服务器,保存用户和密码信息,以及论坛的信息。

  • p: PHP,处理动态请求,动态请求转发数据库,然后再把动态的响应结果返回nginx

解析动态页面,.html .php .jsp动态页面。.php里面php的代码.


LNMP架构是一种用于搭建和运行Web服务器环境的技术架构,主要用于支持动态网站和应用程序的开发与部署。LNMP代表Linux、Nginx、MySQL、PHP/Python/Perl,分别表示操作系统、Web服务器、数据库和脚本语言。

具体组件包括:

  1. Linux(操作系统): 作为底层操作系统,提供服务器硬件资源的管理和基本服务支持。常见的Linux发行版有 Debian、CentOS、Ubuntu 等。

  2. Nginx(Web服务器): Nginx是一个高性能的HTTP和反向代理服务器,它能够处理大量并发连接,具有低内存消耗和高扩展性的特点。相对于传统的Apache服务器,Nginx更适合处理静态文件和高并发请求。

  3. MySQL(数据库): MySQL是一种关系型数据库管理系统,用于存储和管理网站或应用程序的数据。它支持SQL查询语言,被广泛用于Web开发中。

  4. PHP/Python/Perl(脚本语言): 这里主要指的是服务器端脚本语言,用于处理动态内容和与数据库交互。在常见的LNMP架构中,PHP是最常用的脚本语言,因此常常将LNMP称为Linux + Nginx + MySQL + PHP。

LNMP架构的工作原理大致如下:

  • 当用户发起HTTP请求时,Nginx接收并处理请求。

  • 对于静态资源(如HTML、CSS、JS等),Nginx可以直接响应,而对于动态内容,Nginx会将请求转发给PHP解释器进行处理。

  • PHP解释器处理动态内容,并通过FastCGI与Nginx通信,将结果返回给Nginx。

  • Nginx再将结果返回给用户。

这种架构的优势在于高性能、低资源消耗以及良好的扩展性,使其成为许多Web开发者和系统管理员的首选。


提前准备好nginx服务

安装mysql数据库

安装依赖包

yum -y install ncurses ncurses-devel bison cmake

  • 解析

    这是一个在Linux系统上使用yum包管理器安装一些开发工具和库的命令。具体来说,该命令安装了以下软件包:

    • ncurses: 提供了在终端上进行文本界面操作的库,通常用于开发命令行界面的程序。

    • ncurses-devel: 包含ncurses库的头文件和静态库,用于开发需要使用ncurses库的程序。

    • bison: 一个用于生成语法解析器的工具,通常在编译器和解释器的开发中使用。

    • cmake: 一个跨平台的开源构建系统,用于管理软件项目的构建过程。

    通过使用yum -y install命令,用户可以在不需要手动确认的情况下安装这些软件包。 -y标志表示”yes”,即在安装过程中不需要用户确认。这些工具和库通常用于软件开发和编译环境的配置。

创建运行用户

useradd -M -s /sbin/nologin mysql

  • -M: 表示不创建用户的主目录(home directory)。这通常用于创建系统用户,这些用户不需要登录系统,因此也不需要主目录。

  • -s /sbin/nologin: 指定用户的登录 shell 为 /sbin/nologin/sbin/nologin是一个特殊的shell,它允许用户通过网络登录(例如,通过SSH等方式),但不允许在系统的本地终端登录。这通常用于创建系统用户,这些用户只用于运行特定的服务而不需要交互式登录。

    最后的mysql是要创建的用户名。整个命令的目的是创建一个名为mysql的用户,该用户不具备登录系统的能力,且不拥有主目录。这种设置通常用于服务用户,例如数据库服务用户,以增强系统的安全性。

解压

cd /opt tar zxvf mysql-boost-5.7.20.tar.gz

  • tar: 是用于处理.tar文件的命令。

  • z: 表示使用gzip解压缩。

  • x: 表示解压缩。

  • v: 表示在解压缩过程中显示详细信息。

  • f: 后面紧跟着要解压的文件名。

配置编译

cd /opt/mysql-5.7.20/

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=boost \-DWITH_SYSTEMD=1

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \#指定mysql的安装路径-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \#指定mysql进程监听套接字文件(数据库连接文件)的存储路径-DSYSCONFDIR=/etc \#指定配置文件的存储路径-DSYSTEMD_PID_DIR=/usr/local/mysql \#指定进程文件的存储路径-DDEFAULT_CHARSET=utf8\#指定默认使用的字符集编码,如utf8-DDEFAULT_COLLATION=utf8_general_ci \#指定默认使用的字符集校对规则-DWITH_INNOBASE_STORAGE_ENGINE=1 \#安装INNOBASE存储引擎-DWITH_ARCHIVE_STORAGE_ENGINE=1 \#安装ARCHIVE存储引擎-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \#安装BLACKHOLE存储引擎-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \#安装FEDERATED存储引擎-DMYSQL_DATADIR=/usr/local/mysql/data \#指定数据库文件的存储路径-DWITH_BOOST=boost \#指定boost的路径,-DWITH_SYSTEMD=1#生成便于systemctl管理的文件

编译安装

make && make install

make: 这是一个用于构建和编译项目的命令。通常,在一个项目的根目录中存在一个名为 “Makefile” 的文件,其中包含了一系列规则和命令,用于指导构建过程。运行 make 命令将根据这些规则执行相应的命令,以生成最终的可执行文件或库等。 make install: 一旦通过 make 构建了软件,make install 命令通常用于将生成的可执行文件、库文件等安装到系统中。这可能涉及将文件复制到标准的系统目录,以便其他用户或系统进程可以访问它们。 综合起来,make && make install 是一个常见的软件构建和安装过程的缩写。首先,通过 make 构建项目,然后通过 make install 将生成的二进制文件和相关资源安装到系统中。这两个步骤通常在软件从源代码编译到可执行文件并安装到系统之间完成。

修改mysql 配置文件

vim /etc/my.cnf

可以直接覆盖掉原配置

[client]port = 3306socket=/usr/local/mysql/mysql.sock[mysqld]user = mysqlbasedir=/usr/local/mysqldatadir=/usr/local/mysql/dataport = 3306character-set-server=utf8pid-file = /usr/local/mysql/mysqld.pidsocket=/usr/local/mysql/mysql.sockbind-address = 0.0.0.0skip-name-resolvemax_connections=2048default-storage-engine=INNODBmax_allowed_packet=16Mserver-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
在[client]节中:port: 客户端连接MySQL服务器使用的端口号,默认为3306。socket: 客户端连接MySQL服务器使用的Unix socket文件路径,默认为/tmp/mysql.sock。在该配置文件中指定的路径是/usr/local/mysql/mysql.sock。在[mysqld]节中:user: MySQL服务器运行时的用户名,一般设置为mysql。basedir: MySQL安装目录的路径。datadir: 存放MySQL数据文件的路径。port: MySQL服务器监听的端口号,默认为3306。character-set-server: MySQL服务器使用的默认字符集,这里设置为UTF-8编码(utf8)。pid-file: 保存MySQL服务器进程ID的文件路径,默认为/var/run/mysqld/mysqld.pid。在该配置文件中指定的路径是/usr/local/mysql/mysqld.pid。socket: MySQL服务器监听的Unix socket文件路径,默认为/tmp/mysql.sock。在该配置文件中指定的路径是/usr/local/mysql/mysql.sock。bind-address: MySQL服务器绑定的IP地址,默认为127.0.0.1,这里设置为0.0.0.0表示允许任何IP地址访问MySQL服务器。skip-name-resolve: 禁用DNS反向解析,可以提高性能,尤其是在有大量连接时。max_connections: MySQL服务器支持的最大并发连接数,默认为151,这里设置为2048。default-storage-engine: 设置默认的存储引擎为InnoDB。max_allowed_packet: 设置MySQL服务器接收的最大数据包大小,默认为4MB,这里设置为16MB。server-id: 设置MySQL服务器的唯一ID,在主从复制设置中使用。

  • 可能遇到的问题

    • NOENGINESUBSTITUTION 如果需要的存储引擎被禁用或未编译,那么抛出错误。不设置此值时,用默认的存储引擎替代,并抛出一个异常

    • STRICTTRANSTABLES 在该模式下,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做限制

    • NOAUTOCREATE_USER 禁止:GRANT创建密码为空的用户

    • NOAUTOVALUEONZERO mysql中的自增长列可以从o开始。默认情况下自增长列是从1开始的,如果你插入值为0的数据会报错

    • NOZEROIN_DATE mysql数据库不允许插入零日期,插入零日期会抛出错误而不是警告

    • ERRORFORDIVISIONBYZERO 在INSERT或UPDATE过程中,如果数据被零除,则产生错误而非警告。默认情况下数据被零除时MysQL返回NULL

    • IPESASCONCAT 将”||”视为字符串的连接操作符而非或运算符,这和oracle数据库是一样的,

    • ANSI QUOTES 启用ANSI QUOTES后,不能用双引号来引用字符串,因为它被解释为识别符

更改mysql安装目录和配置文件的属主属组

chown -R mysql:mysql /usr/local/mysql/

  • 这个命令将/usr/local/mysql/目录下的所有文件和子目录的所有者(owner)设置为mysql用户,所有者的组(group)也设置为mysql-R选项表示递归地应用更改,包括子目录中的所有文件和目录。

    chown mysql:mysql /etc/my.cnf

  • 这个命令将/etc/my.cnf文件的所有者设置为mysql用户,组也设置为mysql

    通过将文件或目录的所有者设置为特定的用户和组,可以确保相关服务有适当的权限来访问和修改这些文件。

设置路径环境变量

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

  • /usr/local/mysql/bin/usr/local/mysql/lib是MySQL安装目录下的binlib目录,$PATH表示将原有的PATH变量内容保留。

  • >> /etc/profile: 将上一步输出的字符串追加到/etc/profile文件末尾。>>是将输出附加到文件的重定向操作符。

    这个命令的目的是将MySQL的执行文件路径(/usr/local/mysql/bin)和库文件路径(/usr/local/mysql/lib)添加到系统的PATH环境变量中,使得在终端中可以直接运行MySQL相关的命令,而不需要提供完整的路径。这样做有助于简化命令的使用。

重新加载/etc/profile文件

source /etc/profile

通过执行source /etc/profile,系统会重新加载/etc/profile文件中的配置,包括之前添加的MySQL路径到PATH环境变量的配置。这样做是为了确保最新的环境变量配置在当前Shell会话中立即生效,而不需要注销或重新启动系统。

初始化数据库

cd /usr/local/mysql/bin/

Plain Text ./mysqld \ --initialize-insecure \ --user=mysql \ --basedir=/usr/local/mysql \ --datadir=/usr/local/mysql/data

  • ./mysqld: 这是运行MySQL服务器的可执行文件。通常,这个文件位于MySQL安装目录的bin目录下。./表示在当前目录下查找并执行mysqld

  • --initialize-insecure: 这是一个选项,它告诉MySQL在初始化数据库时使用不安全的方式。这通常用于快速初始化MySQL服务器,但不设置密码,因此不安全,主要用于开发和测试环境。

  • --user=mysql: 指定MySQL服务器运行时的用户为mysql。这是为了确保MySQL以指定的用户身份运行,提高安全性。

  • --basedir=/usr/local/mysql: 指定MySQL的安装目录。这是MySQL服务器的基本目录,包含二进制文件、配置文件等。

  • --datadir=/usr/local/mysql/data: 指定MySQL的数据目录,即存储数据库文件的位置。

    这个命令的目的是在指定的目录下初始化一个MySQL数据库。请注意,使用--initialize-insecure选项意味着初始化过程中不会设置MySQL root用户的密码,因此应该谨慎在生产环境中使用。

添加mysqld系统服务

cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/

  • cp: 是用于复制文件和目录的命令。

  • /usr/local/mysql/usr/lib/systemd/system/mysqld.service: 是源文件的路径,这是MySQL服务的systemd服务单元文件(mysqld.service)的路径。

  • /usr/lib/systemd/system/: 是目标目录的路径,这是要将源文件复制到的目录。

    整个命令的目的是将MySQL服务的systemd服务单元文件复制到系统的systemd服务单元文件目录中,以便systemd可以管理MySQL服务。

重加载配置

systemctl daemon-reload

systemctl start mysqld.

service systemctl enable mysqld

  1. systemctl daemon-reload: 这个命令重新加载systemd的配置,以便识别新的或修改过的服务单元文件。在这里,它确保系统知道有关MySQL服务的任何更改。

  2. systemctl start mysqld.service: 这个命令启动MySQL服务。mysqld.service是MySQL的systemd服务单元文件,它包含了关于MySQL服务的配置信息。

  3. systemctl enable mysqld: 这个命令配置系统启动时自动启用MySQL服务。它会在系统引导时自动启动MySQL服务。通常,在安装新服务或更改现有服务的配置后,使用此命令确保服务会在系统重启后自动启动。

    这一系列命令的目的是在系统中启动MySQL服务并配置为在系统启动时自动启动。

修改mysql的登录密码

mysqladmin -u root -p password "123456"

这个命令是使用 mysqladmin 工具来更改 MySQL 根用户的密码。

  • mysqladmin:这是用于在 MySQL 服务器上执行管理操作的命令行实用工具。

  • -u root:指定 MySQL 用户,这里是 “root”。

  • -p:提示输入 MySQL 用户的密码。在输入这部分命令后,将会被提示交互式地输入密码。

  • password:这部分是实际密码的占位符。这里密码是 “123456”。

    因此,这个命令是将 MySQL 根用户的密码更改为 “123456”。

    输入命令后,应该会被要求输入根用户的当前密码。如果正确输入了当前密码,然后会被要求输入新密码,然后确认新密码。如果成功,MySQL 根用户的密码将会更新为 “123456”。

    有时候会显示密码错误,那是因为使用了占位符,直接回车不用输入密码。

授权远程登录

mysql -u root -p

这个命令是用于通过命令行以交互方式登录到 MySQL 数据库的方式。

  • mysql: 这是用于启动 MySQL 命令行客户端的关键字。

  • -u root: 这个部分指定了要使用的 MySQL 用户,这里是 “root” 用户。如果使用的是不同的用户名,可以将 “root” 替换为相应的用户名。

  • -p: 这个选项表示系统会提示输入密码。在输入这个命令后,系统会等待您输入密码,然后按回车键。

    如果输入正确的密码,将成功登录到 MySQL 数据库的命令行终端。如果密码不正确,系统将显示错误消息,并且需要重新尝试。

    如果成功登录,您将看到 MySQL 提示符,表示已成功连接到数据库。在这个提示符下,可以执行各种 MySQL 查询和命令。

    grant all privileges on *.* to 'root'@'%' identified by '123456';(有封号 ;)

    授予root用户可以在所有终端远程登录,使用的密码是123456,并对所有数据库和所有表有操作权限

  • GRANT ALL PRIVILEGES: 这是指授予用户所有的权限,包括 SELECT、INSERT、UPDATE、DELETE 等。GRANT: 这是授权语句的关键字,用于授予特定的权限给指定用户。

  • ON *.*: 这部分表示授予权限的对象,这里是所有数据库和所有表。

    • 第一个 * 表示数据库(schemas)的通配符,表示对所有数据库进行授权。

    • 第二个 * 表示表的通配符,表示对所有表进行授权。

    因此,*.* 组合在一起表示对所有数据库和所有表进行授权。也可以使用 ON database.* 来将权限限制在特定数据库上,或者 ON database.table 将权限限制在特定表上。

  • TO 'root'@'%': 指定了要授予权限的用户。在这里,’root’ 是用户名,’%’ 表示可以从任何主机连接。如果希望只允许来自特定主机的连接,可以将 ‘%’ 替换为相应的主机名或 IP 地址。

  • IDENTIFIED BY '123456': 指定了连接时使用的密码,这里是 ‘123456’。这是为了增加连接的安全性,确保只有知道密码的用户才能连接到数据库。

    总体而言,这个命令的效果是将所有权限授予 ‘root’ 用户,允许其从任何主机连接到 MySQL 数据库,并使用密码 ‘123456’ 进行身份验证。请确保在实际生产环境中使用强密码,并仅为需要的用户分配最小必要的权限,以提高系统的安全性。

刷新权限

flush privileges;

使设置生效

安装配置PHP解析环境

安装环境依赖包

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
  • gd: 一个用于图形处理的库。这里是要安装 GD 库。

  • libjpeg, libjpeg-devel: JPEG 图像格式的支持库和相关的开发包。

  • libpng, libpng-devel: PNG 图像格式的支持库和相关的开发包。

  • freetype, freetype-devel: 用于处理字体的库和相关的开发包。

  • libxml2, libxml2-devel: 用于 XML 处理的库和相关的开发包。

  • zlib, zlib-devel: 压缩库和相关的开发包。

  • curl, curl-devel: 用于 URL 数据传输的库和相关的开发包。

  • openssl, openssl-devel: 加密库和相关的开发包。

    这个命令会在系统上安装这些指定的软件包及其开发库。这些软件包通常用于开发和运行 web 应用程序、图像处理和数据传输等功能,它们提供了许多常见任务所需的基本库和工具。

解压PHP压缩包

cd /opt tar jxvf php-7.1.10.tar.bz2

这个命令是用于解压缩一个被打包成 tar.bz2 格式的文件。

  • tar: 这是用于处理 tar 归档文件的命令。

  • j: 这是一个选项,指示 tar 使用 bzip2 解压缩算法。在这里,它表示输入的文件是经过 bzip2 压缩的。

  • x: 这是 tar 的一个选项,表示执行解压缩操作。

  • v: 这是一个选项,表示详细模式(verbose),它会显示解压缩的详细过程。

  • f: 这是一个选项,用于指定要解压缩的文件。

    最后的参数是要解压缩的文件名,这里是 php-7.1.10.tar.bz2

    因此,整个命令的目的是使用 tar 命令解压缩一个经过 bzip2 压缩的文件 php-7.1.10.tar.bz2。解压缩后的文件将包含 PHP 版本 7.1.10 的源代码或二进制文件,可以用于安装或编译 PHP。

配置编译PHP

cd php-7.1.10

./configure \--prefix=/usr/local/php \--with-mysql-sock=/usr/local/mysql/mysql.sock \--with-mysqli \--with-zlib \--with-curl \--with-gd \--with-jpeg-dir \--with-png-dir \--with-freetype-dir \--with-openssl \--enable-fpm \--enable-mbstring \--enable-xml \--enable-session \--enable-ftp \--enable-pdo \--enable-tokenizer \--enable-zip
--prefix=/usr/local/php: 指定PHP的安装目录为/usr/local/php。--with-mysql-sock=/usr/local/mysql/mysql.sock: 指定MySQL的Unix socket文件路径,用于与MySQL数据库建立连接。--with-mysqli: 启用MySQLi扩展,用于支持MySQL数据库。--with-zlib: 启用Zlib库,用于压缩和解压缩数据。--with-curl: 启用cURL库,用于支持对URL的操作,如下载文件等。--with-gd: 启用GD库,用于处理图像。--with-jpeg-dir: 指定JPEG库的路径,用于GD库对JPEG格式图片的处理。--with-png-dir: 指定PNG库的路径,用于GD库对PNG格式图片的处理。--with-freetype-dir: 指定FreeType库的路径,用于GD库对字体的支持。--with-openssl: 启用OpenSSL库,用于支持SSL加密和HTTPS协议。--enable-fpm: 启用PHP-FPM(FastCGI Process Manager),用于提供更高效的PHP进程管理和请求处理。--enable-mbstring: 启用多字节字符串支持,用于处理多字节字符集的操作。--enable-xml: 启用XML支持,用于处理XML文档和数据。--enable-session: 启用会话支持,用于在不同页面间保持用户会话状态。--enable-ftp: 启用FTP支持,用于对FTP服务器进行操作。--enable-pdo: 启用PDO(PHP Data Objects),用于支持数据库访问的统一接口。--enable-tokenizer: 启用Tokenizer扩展,用于对字符串进行分词处理。--enable-zip: 启用Zip扩展,用于对ZIP文件进行操作。

编译安装

make && make install

make: 这是一个用于构建和编译项目的命令。通常,在一个项目的根目录中存在一个名为 “Makefile” 的文件,其中包含了一系列规则和命令,用于指导构建过程。运行 make 命令将根据这些规则执行相应的命令,以生成最终的可执行文件或库等。 make install: 一旦通过 make 构建了软件,make install 命令通常用于将生成的可执行文件、库文件等安装到系统中。这可能涉及将文件复制到标准的系统目录,以便其他用户或系统进程可以访问它们。 综合起来,make && make install 是一个常见的软件构建和安装过程的缩写。首先,通过 make 构建项目,然后通过 make install 将生成的二进制文件和相关资源安装到系统中。这两个步骤通常在软件从源代码编译到可执行文件并安装到系统之间完成。

路径优化

ln -s /usr/local/php/bin/* /usr/local/bin/

  • ln: 创建链接的命令。

  • -s: 创建符号链接的选项。

  • /usr/local/php/bin/*: 指定了源文件或源目录,表示 /usr/local/php/bin/ 目录下的所有文件。

  • /usr/local/bin/: 指定了目标目录,即链接将被创建的位置。

    这个命令的作用是将 /usr/local/php/bin/ 目录下的所有文件都创建为 /usr/local/bin/ 目录下的符号链接。

    ln -s /usr/local/php/sbin/* /usr/local/sbin/

  • ln: 创建链接的命令。

  • -s: 创建符号链接的选项。

  • /usr/local/php/sbin/*: 指定了源文件或源目录,表示 /usr/local/php/sbin/ 目录下的所有文件。

  • /usr/local/sbin/: 指定了目标目录,即链接将被创建的位置。

    这个命令的作用是将 /usr/local/php/sbin/ 目录下的所有文件都创建为 /usr/local/sbin/ 目录下的符号链接。

    这两个命令的目的通常是将 PHP 的可执行文件和相关命令放置到系统的可执行路径,以便在任何位置都能方便地执行这些命令,而不必提供完整的路径

调整PHP配置文件

php有三个配置文件:

- php.ini主配置文件- php-fpm.conf进程服务配置文件- www.conf扩展配置文件

调整主配置文件

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

这个命令的目的是将 PHP 开发环境下的示例配置文件复制到 PHP 安装目录下,并命名为 php.ini,以作为 PHP 的主配置文件。

vim /usr/local/php/lib/php.ini

修改

  • 1170行–修改 mysqli.default_socket = /usr/local/mysql/mysql.sock

    • mysqli.default_socket: 这是 PHP 中 MySQLi 扩展的配置项,用于指定 MySQL 数据库连接时默认使用的 socket 文件的路径。

    • =/usr/local/mysql/mysql.sock: 这部分是具体的设置,指定了 MySQL 的 socket 文件的路径。在这个例子中,MySQL 的 socket 文件路径被设置为 /usr/local/mysql/mysql.sock

    Socket 文件是用于在客户端和数据库服务器之间进行通信的一种方式。通过指定正确的 socket 文件路径,PHP 将能够与 MySQL 数据库建立连接。确保该路径与实际的 MySQL 安装路径相匹配,否则连接可能会失败。

    如果你的 MySQL 安装路径不同,你可能需要调整这个设置,确保它指向正确的 MySQL socket 文件。

  • 939行–取消注释,修改 date.timezone = Asia/Shanghai

  • date.timezone: 这是 PHP 中用于设置默认时区的配置项。时区设置对于许多与日期和时间相关的函数非常重要,以确保正确地处理和显示日期和时间信息。中国时区设置为Asia/Shanghai

尾行模式使用set nu 可以显示行号,命令行模式使用ngg可以快速定位到第n行

验证安装的模块

php -m

调整进程服务配置文件

cd /usr/local/php/etc/

cp php-fpm.conf.default php-fpm.conf

这个命令的目的是将名为 php-fpm.conf.default 的默认配置文件复制为 php-fpm.conf,以便进一步编辑或使用。

vim php-fpm.conf

修改

17行–去掉”;”注释 pid = run/php-fpm.pid

调整扩展配置文件

cd /usr/local/php/etc/php-fpm.d/

cp www.conf.default www.conf

通过这个命令,你可以复制默认的 PHP-FPM 池配置文件,并命名为 www.conf,然后你可以根据需要对新文件进行修改或配置,以满足你的 PHP-FPM 池的特定需求。

启动php-fpm

/usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini

  • /usr/local/php/sbin/php-fpm 是 PHP-FPM 可执行文件的路径。

  • -c /usr/local/php/lib/php.ini 指定了使用的 PHP 配置文件的路径,即 /usr/local/php/lib/php.ini

  • 这个命令的作用是启动 PHP-FPM,使用指定的 PHP 配置文件。

    netstat -anpt | grep 9000

  • 第二条命令是检查系统中是否有进程在监听端口 9000,通常用于确认 PHP-FPM 是否已经成功启动并正在监听指定的端口。

    PHP-FPM(FastCGI Process Manager:FastCGI 进程管理器)是一个 PHPFastCGI 管理器, 由于Nginx服务器不能处理动态页面,需要由 Nginx 把动态请求交给 php-fpm 进程进行解析。

配置和管理 PHP-FPM 服务

cd /opt/php-7.1.10/sapi/fpm

cp php-fpm.service /usr/lib/systemd/system/php-fpm.service

这个命令的目的是将 php-fpm.service 复制到 systemd 的服务目录,以便后续通过 systemd 管理 PHP-FPM 服务。

systemctl restart php-fpm.service

重新启动名为 php-fpm.service 的服务。这个命令的目的是使对 PHP-FPM 服务的配置更改生效,或者重新启动 PHP-FPM 服务以应用新的配置。

这三个命令的目的是在配置 PHP-FPM 服务方面做一些操作,包括切换到相关目录、复制服务文件到 systemd 目录,并重新启动 PHP-FPM 服务。

配置 Nginx 支持 PHP 解析

vim /usr/local/nginx/conf/nginx.conf

重启服务

修改

65行–取消注释,修改

location ~ \.php$ {root html;fastcgi_pass 127.0.0.1:9000;fastcgi_indexindex.php;fastcgi_paramSCRIPT_FILENAME/usr/local/nginx/html$fastcgi_script_name; #将 /scripts 修改为nginx的工作目录fastcgi_paramSCRIPT_FILENAME $document_root$fastcgi_script_name;#$document_root 代表当前请求在root指令中指定的值includefastcgi_params;}

这是一个 Nginx 服务器配置文件中关于处理 PHP 脚本的一部分。这段配置是在处理以 .php 结尾的请求时使用 FastCGI 进行处理的部分。

  • location ~ \.php$ {:这是一个正则表达式匹配的 location 块,用于匹配以 .php 结尾的请求。在这个块内的配置将应用于这类请求。

  • root html;:指定了静态文件的根目录为 html,这是一个相对于 Nginx 配置文件的路径。这是文件在服务器上的基本目录。

  • fastcgi_pass 127.0.0.1:9000;:定义了 FastCGI 服务器的地址和端口。这里指定了 PHP-FPM 的地址和端口。

  • fastcgi_index index.php;:指定了索引文件的名称,即当请求的 URI 是以 / 结尾时,默认使用 index.php

  • fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;:指定 FastCGI 参数,告诉 PHP-FPM 脚本的文件名。这里使用了 $fastcgi_script_name 变量,它包含了当前请求的脚本路径。

  • fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;:另一种设置 SCRIPT_FILENAME 参数的方式,使用了 $document_root 变量,该变量表示当前请求在 root 指令中指定的值。

  • include fastcgi_params;:包含了一个文件,其中包含了一些预定义的 FastCGI 参数,以便简化配置。

    综合来看,这段配置表明 Nginx 将以 .php 结尾的请求交给本地运行的 PHP-FPM 处理,并设置了一些与 FastCGI 相关的参数。

重启服务

systemctl restart nginx.service

验证PHP 测试页

vim /usr/local/nginx/html/index.php

浏览器访问 http://192.168.41.10/index.php

验证数据库工作是否正常

mysql -u root -p

CREATE DATABASE bbs;

GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY 'admin123';

GRANT all ON bbs.* TO 'bbsuser'@'localhost' IDENTIFIED BY 'admin123';

flush privileges;

这组命令的目标是创建一个名为 "bbs" 的数据库,并授予用户 'bbsuser' 在任何主机和本地主机上对该数据库的完全权限,同时使用密码 'admin123' 进行身份验证。最后,通过刷新权限确保新的权限设置立即生效。

替换原来的测试页内容

vim /usr/local/nginx/html/index.php#替换原来的测试页内容Success!!";else echo "Fail!!";?>

这是一段PHP脚本,使用mysqli_connect()函数连接到MySQL数据库服务器。

  1. Success!!

    ";:

    • 这是一个条件语句,检查连接是否成功。如果连接成功,将输出一个标题为 "Success!!" 的HTML标签(

      )。

  2. else echo "Fail!!";:

    • 如果连接未成功,将输出 "Fail!!"。

    因此,这段代码的目的是尝试连接到MySQL数据库,并根据连接是否成功输出相应的消息。请注意,这里没有处理连接失败的情况的详细信息,实际生产环境中可能需要更详细的错误处理。

    浏览器访问 http://192.168.41.10/index.php

部署 Discuz!社区论坛 Web 应用

部署

cd /opt

unzip Discuz_X3.4_SC_UTF8.zip -d /opt/dis

cd /opt/dis/dir_SC_UTF8/

cp -r upload/ /usr/local/nginx/html/bbs/

调整论坛目录的权限:

cd /usr/local/nginx/html/bbs/

chown -R nginx ./config/chown -R nginx ./data/chown -R nginx ./uc_client/chown -R nginx ./uc_server/或chmod -R 777 ./config/chmod -R 777 ./data/chmod -R 777 ./uc_client/chmod -R 777 ./uc_server/

论坛页面访问

http://192.168.41.10/bbs/install/index.php

数据库服务器:localhost ###本地架设就用localhost,如何不是在在本机上就要填写IP地址和端口号 数据库名字:bbs 数据库用户名:bbsuser 数据库密码:admin123 管理员账号:admin 管理员密码:admin123

访问论坛页面:

http://192.168.41.10/bbs/index.php http://192.168.41.10bbs/admin.php