前言 LNMP是一种常见的网站开发和运行环境,它由四个主要的软件组成:
Linux:操作系统,提供基础的运行平台
Nginx:高性能的Web服务器,负责处理HTTP请求和响应
MariaDB:开源的关系型数据库管理系统,负责存储和管理数据
PHP:脚本语言,负责处理业务逻辑和动态内容
在本教程中,我们将使用debian11作为操作系统,编译安装最新版本的nginx、mariadb和php,并且开启一些常用的和必要的模块。我们假设你已经有了一台安装了debian11的服务器,并且可以通过SSH远程登录。
步骤一:安装必要的依赖包 在开始编译安装之前,我们需要先安装一些必要的依赖包,这些包可以帮助我们编译、安装和运行LNMP的各个组件。我们可以使用apt命令来安装这些包,如下所示:
1 2 sudo apt update && apt upgrade -y sudo apt install build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev openssl libssl-dev libxml2-dev libcurl4-openssl-dev libjpeg-dev libpng-dev libfreetype6-dev libmcrypt-dev libzip-dev libpam0g-dev libjudy-dev libsnappy-dev liblzma-dev bison libpmem-dev libbz2-dev -y
这里我们安装了以下几类包:
build-essential:包含了编译器、链接器等基本的开发工具
libpcre3、libpcre3-dev:提供了Perl兼容正则表达式的库,用于nginx的rewrite模块
zlib1g、zlib1g-dev:提供了压缩和解压缩的库,用于nginx的gzip模块
openssl、libssl-dev:提供了加密和解密的库,用于nginx的ssl模块
libxml2-dev、libcurl4-openssl-dev:提供了XML解析和HTTP客户端的库,用于php的curl、dom、simplexml等扩展
libjpeg-dev、libpng-dev、libfreetype6-dev:提供了图像处理的库,用于php的gd扩展
libmcrypt-dev:提供了加密算法的库,用于php的mcrypt扩展
libzip-dev:提供了ZIP文件处理的库,用于php的zip扩展
安装完成后,我们可以检查一下这些包是否正确安装:
1 dpkg -l | grep -E 'build-essential|libpcre3|zlib1g|openssl|libxml2|libcurl4|libjpeg|libpng|libfreetype6|libmcrypt|libzip'
如果没有报错,就说明这些包都已经成功安装。
要养成把源码包放到/usr/local/src目录下的好习惯
步骤二:下载并编译安装nginx 接下来,我们要下载并编译安装nginx。我们可以从官网下载最新版本的源码包:
1 2 3 wget https://nginx.org/download/nginx-1.24.0.tar.gz cp nginx-1.24.0.tar.gz /usr/local/src
然后解压缩源码包:
1 tar zxvf nginx-1.24.0.tar.gz
进入源码目录:
执行configure命令来配置编译选项:
1 ./configure --prefix=/usr/local/nginx --user=www-data --group=www-data --with-http_ssl_module --with-http_gzip_static_module --with-http_stub_status_module --with-pcre
这里我们指定了以下几个选项:
–prefix=/usr/local/nginx:指定了安装目录为/usr/local/nginx
–user=www-data –group=www-data:指定了运行nginx的用户和组为www-data(如果不存在,则会自动创建)
–with-http_ssl_module:开启了ssl模块,支持HTTPS协议
–with-http_gzip_static_module:开启了gzip_static模块,支持压缩静态文件
–with-http_stub_status_module:开启了stub_status模块,支持查看nginx状态信息
–with-pcre:使用pcre库支持rewrite模块
如果没有报错,就说明配置成功。然后执行make命令来编译源码:
如果你服务器线程够多,可以在make 命令后面加个-j参数,编译会更快,安装也同理,如给四个线程 make -j4 ,或者直接最大线程 make -j$(nproc)
如果make 或者make install 出现报错,则:
检查你的环境是否安装了需要的依赖包,比如编译工具、库文件等等。可以尝试使用 apt install package 安装相关依赖。
检查编译选项中是否有与当前系统不兼容的配置。可搜索相应错误信息来确认具体原因,然后酌情修改编译选项。
如果没有报错,就说明编译成功。最后执行make install命令来安装nginx:
1 sudo make install -j$(nproc )
如果没有报错,就说明安装成功。我们可以检查一下nginx是否正确安装:
1 sudo /usr/local/nginx/sbin/nginx -v
如果输出了nginx的版本信息,就说明nginx已经正确安装。我们可以查看一下nginx的配置文件:
1 sudo vim /usr/local/nginx/conf/nginx.conf
这里我们可以看到nginx的默认配置,包括监听端口、日志文件、虚拟主机等。我们可以根据自己的需要修改这些配置,或者添加新的配置。例如,我们可以开启gzip压缩功能,提高网站的性能:
1 2 3 4 5 6 7 8 9 http { ... gzip on; gzip_min_length 1k; gzip_comp_level 9; gzip_types text/plain text/css text/javascript application/json application/javascript application/xml application/x-font-ttf image/svg+xml; gzip_vary on; ... }
保存并退出后,我们可以使用以下命令来测试配置文件是否正确:
1 sudo /usr/local/nginx/sbin/nginx -t
如果没有报错,就说明配置文件正确。然后我们可以使用以下命令来启动nginx:
1 sudo /usr/local/nginx/sbin/nginx
如果没有报错,就说明nginx已经启动。我们可以使用以下命令来查看nginx的进程:
如果看到有一个master进程和几个worker进程,就说明nginx正常运行。我们也可以使用以下命令来查看nginx的状态信息:
1 curl http://localhost/nginx_status
如果看到类似以下的输出,就说明nginx状态信息正常:
1 2 3 4 Active connections: 1 server accepts handled requests 1 1 1 Reading: 0 Writing: 1 Waiting: 0
至此,我们已经完成了下载并编译安装nginx的步骤。
步骤三:下载并编译安装mariadb 安装前依赖解决
https://cmake.org/download/
boost Boost库是一个可移植、提供源代码的C库,作为标准库的后备,是C标准化进程的开发引擎之 一
https://www.boost.org
1 2 3 4 5 6 7 wget https://boostorg.jfrog.io/artifactory/main/release/1.82.0/source/boost_1_82_0.tar.gz cp boost_1_82_0.tar.gz /usr/local/srctar -zxvf boost_1_82_0.tar.gz mv boost_1_82_0 /usr/local/boost
接下来,我们要下载并编译安装mariadb。我们可以从官网下载最新版本的源码包:
1 2 wget https://mirrors.ustc.edu.cn/mariadb/mariadb-10.10.4/source/mariadb-10.10.4.tar.gz cp mariadb-10.10.4.tar.gz /usr/local/src
然后解压缩源码包:
1 tar zxvf mariadb-10.10.4.tar.gz
进入源码目录:
创建build目录,用来放编译后的缓存文件,然后进入build目录:
如果cmake 出错或者又需要添加别的库的支持,直接执行 rm -rf *
命令,删除build当前目录下的所有编译文件
执行cmake命令来配置编译选项:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/mariadb \ -DMYSQL_DATADIR=/usr/local/mariadb/data \ -DMYSQL_UNIX_ADDR=/usr/local/mariadb/mysql.sock \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_ARCHIVE_STPRAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_EMBEDDED_SERVER=1 \ -DENABLED_LOCAL_INFILE=1 \ -DWIYH_READLINE=1 \ -DWITH_LIBWRAP=0 \ -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci \ -DWITH_SSL=system \ -DWITH_ZLIB=system \ -DMYSQL_TCP_PORT=3306 \ -DWITH_BOOST=/usr/local/boost -DBOOST_ROOT=/usr/local/boost \ -DMYSQL_USER=mysql \ -DWITHOUT_GSSAPI=ON
这里我们指定了以下几个选项:
-DCMAKE_INSTALL_PREFIX=/usr/local/mariadb:指定了安装目录为/usr/local/mariadb
-DMYSQL_DATADIR=/usr/local/mariadb/data:指定了数据文件的目录为/usr/local/mariadb/data
-DMYSQL_UNIX_ADDR=/usr/local/mariadb/mysql.sock:指定sock文件路径
-DWITH_INNOBASE_STORAGE_ENGINE=1:开启了InnoDB存储引擎支持,支持事务和外键等特性
-DWITH_ARCHIVE_STORAGE_ENGINE=1:开启了Archive存储引擎支持,支持高压缩比的存储
-DWITH_BLACKHOLE_STORAGE_ENGINE=1:开启了Blackhole存储引擎,支持不存储任何数据的存储
-DWITH_EMBEDDED_SERVER=1:开启嵌入式服务器支持,可以作为一个嵌入式服务器集成到其他程序中。生成一个libmysqld.a(.so)的库,这个库同时集成了mysql服务与客户端API
-DENABLED_LOCAL_INFILE=1:开启本地数据导入支持。
-DWITH_READLINE=1:使用readline库支持命令行编辑和历史记录功能
-DWITH_LIBWRAP=0:关闭libwrap库的支持,避免编译错误
-DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci :安装所有字符集、默认字符集utf-8 、校验字符
-DWITH_SSL=system:使用系统自带的openssl库支持加密连接功能
-DWITH_ZLIB=system:使用系统自带的zlib库支持压缩功能
-DMYSQL_TCP_PORT=3306:指定了TCP端口号为3306
-DWITH_BOOST=/usr/local/boost -DBOOST_ROOT=/usr/local/boost :允许下载boost库文件
-DMYSQL_USER=mysql : 指定了运行mariadb的用户为mysql
以上参数需要和下文my.cnf
同步(如果你需要修改我的编译参数,记得下文配置文件一并修改)
如果没有报错,就说明配置成功。然后执行make命令来编译源码:
如果没有报错,就说明编译成功。最后执行make install命令来安装mariadb:
1 sudo make install -j$(nproc )
如果没有报错,就说明安装成功。我们可以检查一下mariadb是否正确安装:
1 sudo /usr/local/mariadb/bin/mysql --version
如果输出了mariadb的版本信息,就说明mariadb已经正确安装。
编译并安装完成后,我们需要进行一些配置工作,以确保MariaDB能够正常运行。首先,我们需要创建一个mysql用户和组,并修改MariaDB目录的属主和属组:
1 2 3 sudo groupadd mysql sudo useradd -r -g mysql mysql sudo chown -R mysql:mysql /usr/local/mariadb
然后,我们需要复制初始化脚本到相应的位置,并设置相应的权限:
1 2 sudo cp /usr/local/mariadb/support-files/mysql.server /etc/init.d/mysqld sudo chmod +x /etc/init.d/mysqld
查看MySQL/MariaDB将要从哪些配置文件中读取默认选项:
1 mysqld --help --verbose | grep "Default options are read"
默认情况下会在以下位置读取:
1 /etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf $MARIADB_INSTALL_DIR/my.cnf
修改MariaDB配置文件,优化MariaDB
配置文件位于/etc/my.cnf ,没有则创建一个(直接用vim也会自动创建)
1 sudo vim /usr/local/mariadb/my.cnf
参考配置示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 # Begin /etc/mysql/my.cnf # The following options will be passed to all MySQL clients [client] port = 3306 socket = /tmp/mysql.sock [mysqld] user = mysql port = 3306 socket = /tmp/mysql.sock # MariaDB安装地址 basedir = /usr/local/mariadb/ datadir = /usr/local/mariadb/data/ pid-file = /usr/local/mariadb/mysqld.pid log-error = /usr/local/mariadb/data/logs/mysqld.log # 开启慢查询日志功能 slow_query_log = 1 slow_query_log_file = /usr/local/mariadb/data/logs/slow.log long_query_time = 1 log_queries_not_using_indexes = 1 #skip-external-locking key_buffer_size = 16M max_allowed_packet = 1M sort_buffer_size = 512K net_buffer_length = 16K myisam_sort_buffer_size = 8M skip-name-resolve = 0 # character set settings character-set-server = utf8 collation-server = utf8_general_ci # default storage engine default-storage-engine = InnoDB # innodb settings innodb_buffer_pool_size = 32M innodb_log_file_size = 48M innodb_log_buffer_size = 16M innodb_flush_log_at_trx_commit = 1 innodb_flush_method = O_DIRECT innodb_thread_concurrency = 8 innodb_lock_wait_timeout = 50 innodb_write_io_threads = 4 innodb_read_io_threads = 4 innodb_force_recovery =1 [mysqldump] quick max_allowed_packet = 16M [mysql] no-auto-rehash # Remove the next comment character if you are not familiar with SQL #safe-updates [isamchk] key_buffer = 20M sort_buffer_size = 20M read_buffer = 2M write_buffer = 2M [myisamchk] key_buffer_size = 20M sort_buffer_size = 20M read_buffer = 2M write_buffer = 2M [mysqlhotcopy] interactive-timeout # End /etc/my.cnf
保存并退出后,我们可以使用以下命令来初始化数据库:
1 sudo /usr/local/mariadb/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mariadb --datadir=/usr/local/mariadb/data
如果没有报错,就说明数据库初始化成功。然后我们可以使用以下命令来启动mariadb:
1 sudo /usr/local/mariadb/bin/mysqld_safe --user=mysql
如果没有报错,就说明mariadb已经启动。我们可以使用以下命令来查看mariadb的进程:
如果看到有一个mysqld_safe进程和一个mysqld进程,就说明mariadb正常运行。我们也可以使用以下命令来登录mariadb:
1 /usr/local/mariadb/bin/mysql -u root -p
如果看到类似以下的输出,就说明mariadb登录成功:
1 2 3 4 5 6 7 8 9 Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 2 Server version: 10.6.5-MariaDB Source distribution Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help . Type '\c' to clear the current input statement. MariaDB [(none)]>
至此,我们已经完成了下载并编译安装mariadb的步骤。
步骤四:下载并编译安装php 接下来,我们要下载并编译安装php。我们可以从官网下载最新版本的源码包:
1 2 3 wget https://www.php.net/distributions/php-8.1.0.tar.gz cp php-8.1.0.tar.gz /usr/local/src
然后解压缩源码包:
1 tar zxvf php-8.1.0.tar.gz
进入源码目录:
执行configure命令来配置编译选项:
1 ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --with-fpm-user=www-data --with-fpm-group=www-data --with-mysqli=/usr/local/mariadb/bin/mysql_config --with-pdo-mysql=/usr/local/mariadb/bin/mysql_config --with-openssl --with-zlib --with-curl --with-gd --with-jpeg --with-png --with-freetype --enable-gd-jis-conv --with-zip --enable-mbstring
这里我们指定了以下几个选项:
–prefix=/usr/local/php:指定了安装目录为/usr/local/php
–with-config-file-path=/usr/local/php/etc:指定了配置文件的目录为/usr/local/php/etc
–enable-fpm:开启了fpm模式,支持与nginx配合使用
–with-fpm-user=www-data –with-fpm-group=www-data:指定了运行php-fpm的用户和组为www-data
–with-mysqli=/usr/local/mariadb/bin/mysql_config –with-pdo-mysql=/usr/local/mariadb/bin/mysql_config:开启了mysqli和pdo_mysql扩展,支持与mariadb交互
–with-openssl:开启了openssl扩展,支持加密功能
–with-zlib:开启了zlib扩展,支持压缩功能
–with-curl:开启了curl扩展,支持HTTP客户端功能
–with-gd:开启了gd扩展,支持图像处理功能
–with-jpeg –with-png –with-freetype:指定了gd扩展使用的图像库
–enable-gd-jis-conv:开启了gd扩展的日文转换功能
–with-zip:开启了zip扩展,支持ZIP文件处理功能
–enable-mbstring:开启了mbstring扩展,支持多字节字符串处理功能
如果没有报错,就说明配置成功。然后执行make命令来编译源码:
如果没有报错,就说明编译成功。最后执行make install命令来安装php:
1 sudo make install -j$(nproc )
如果没有报错,就说明安装成功。我们可以检查一下php是否正确安装:
1 sudo /usr/local/php/bin/php -v
如果输出了php的版本信息,就说明php已经正确安装。我们可以查看一下php的配置文件:
1 sudo vim /usr/local/php/etc/php.ini
这里我们可以看到php的默认配置,包括错误报告、内存限制、文件上传、时区等。我们可以根据自己的需要修改这些配置,或者添加新的配置。例如,我们可以开启错误显示功能,方便调试:
1 2 3 4 [PHP] ... display_errors = On ...
保存并退出后,我们可以使用以下命令来复制php-fpm的配置文件:
1 2 sudo cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf sudo cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
然后我们可以使用以下命令来启动php-fpm
1 sudo /usr/local/php/sbin/php-fpm
如果没有报错,就说明php-fpm已经启动。我们可以使用以下命令来查看php-fpm的进程:
如果看到有一个master进程和几个worker进程,就说明php-fpm正常运行。我们也可以使用以下命令来测试php是否能够处理请求:
1 curl http://localhost/index.php
如果看到类似以下的输出,就说明php能够处理请求:
至此,我们已经完成了下载并编译安装php的步骤。
步骤五:配置nginx和php-fpm的通信 最后,我们要配置nginx和php-fpm的通信,让nginx能够将PHP请求转发给php-fpm处理,并将结果返回给客户端。我们可以使用以下命令来编辑nginx的虚拟主机配置文件:
1 sudo vim /usr/local/nginx/conf/vhost/default.conf
这里我们可以添加以下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 server { listen 80; server_name localhost; root /usr/local/nginx/html; index index.html index.php; location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name ; include fastcgi_params; } }
这里我们指定了以下几个参数:
listen 80:指定了监听端口为80
server_name localhost:指定了服务器名称为localhost
root /usr/local/nginx/html:指定了网站根目录为/usr/local/nginx/html
index index.html index.php:指定了默认首页为index.html或index.php
location ~ .php$:匹配所有以.php结尾的请求
fastcgi_pass 127.0.0.1:9000:指定了将请求转发给本地9000端口的php-fpm进程
fastcgi_index index.php:指定了默认PHP文件为index.php
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name:指定了PHP脚本文件的完整路径
include fastcgi_params:包含了一些通用的fastcgi参数
保存并退出后,我们可以使用以下命令来测试配置文件是否正确:
1 sudo /usr/local/nginx/sbin/nginx -t
如果没有报错,就说明配置文件正确。然后我们可以使用以下命令来重载nginx:
1 sudo /usr/local/nginx/sbin/nginx -s reload
如果没有报错,就说明nginx已经重载。我们可以使用以下命令来测试nginx是否能够处理PHP请求:
1 curl http://localhost/index.php
如果看到类似以下的输出,就说明nginx能够处理PHP请求:
至此,我们已经完成了配置nginx和php-fpm的通信的步骤。
步骤六:把所有的服务能通过systemctl来管理启动 为了方便管理和控制我们的LNMP服务,我们可以把它们都注册为systemd的服务单元,这样我们就可以使用systemctl命令来启动、停止、重启、查看状态等操作。我们可以使用以下命令来创建服务单元文件:
创建nginx.service文件
1 sudo vim /lib/systemd/system/nginx.service
然后添加以下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [Unit] Description=nginx - high performance web server Documentation=https://nginx.org/en/docs/ After=network-online.target remote-fs.target nss-lookup.target Wants=network-online.target [Service] Type=forking PIDFile=/usr/local/nginx/logs/nginx.pid ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf ExecStart=/usr/local/nginx/sbin/nginx ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target
创建mariadb.service文件
1 sudo vim /lib/systemd/system/mariadb.service
然后添加以下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [Unit] Description=MariaDB database server Documentation=https://mariadb.com/kb/en/ After=network.target [Service] Type=forking PIDFile=/usr/local/mariadb/mariadb.pid ExecStart=/usr/local/mariadb/bin/mysqld_safe --user=mysql --basedir=/usr/local/mariadb --datadir=/usr/local/mariadb/data ExecStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target
创建php-fpm.service文件
1 sudo vim /lib/systemd/system/php-fpm.service
然后添加以下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [Unit] Description=PHP FastCGI Process Manager Documentation=https://www.php.net/manual/en/install.fpm.php After=network.target [Service] Type=forking PIDFile=/usr/local/php/var/run/php-fpm.pid ExecStart=/usr/local/php/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php/etc/php-fpm.conf ExecReload=/bin/kill -USR2 $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target
这里我们指定了以下几个参数:
Description:服务的描述信息
Documentation:服务的文档链接
After:服务的启动顺序,表示在哪些服务之后启动
Wants:服务的启动依赖,表示需要哪些服务同时启动
Type:服务的类型,表示如何启动和停止服务,这里我们使用forking类型,表示服务会创建子进程并返回主进程的PID
PIDFile:服务的PID文件位置,用于记录主进程的PID,方便管理和控制服务
ExecStart:服务的启动命令,用于执行服务的主程序或脚本,可以指定一些参数或选项
ExecStartPre:服务的启动前置命令,用于执行一些准备工作,例如检查配置文件等
ExecReload:服务的重载命令,用于重新加载配置文件或刷新缓存等,不会中断服务的运行
ExecStop:服务的停止命令,用于终止服务的运行,通常是发送一个信号给主进程
PrivateTmp:服务的私有临时目录选项,表示是否为每个服务创建一个独立的/tmp目录,避免文件冲突或泄露等问题
WantedBy:服务的安装目标,表示在哪些运行级别下启用该服务,这里我们使用multi-user.target,表示在多用户模式下启用该服务
保存并退出后,我们可以使用以下命令来重新加载systemd:
1 sudo systemctl daemon-reload
然后给添加的服务给予执行权限:
1 2 3 chmod a+x /lib/systemd/system/nginx.servicechmod a+x /lib/systemd/system/mariadb.servicechmod a+x /lib/systemd/system/php-fpm.service
如果没有报错,就说明systemd已经重新加载。然后我们可以使用以下命令来启动、停止、重启、查看状态等操作:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 sudo systemctl start nginx sudo systemctl stop nginx sudo systemctl restart nginx sudo systemctl reload nginx sudo systemctl status nginx sudo systemctl start mariadb sudo systemctl stop mariadb sudo systemctl restart mariadb sudo systemctl status mariadb sudo systemctl start php-fpm sudo systemctl stop php-fpm sudo systemctl restart php-fpm sudo systemctl reload php-fpm sudo systemctl status php-fpm
如果没有报错,就说明systemctl能够正常管理和控制我们的LNMP服务。我们也可以使用以下命令来设置LNMP服务为开机自启动:
1 2 3 sudo systemctl enable nginx sudo systemctl enable mariadb sudo systemctl enable php-fpm
如果没有报错,就说明LNMP服务已经设置为开机自启动。我们可以使用以下命令来查看LNMP服务的开机自启动状态:
1 2 3 sudo systemctl is-enabled nginx sudo systemctl is-enabled mariadb sudo systemctl is-enabled php-fpm
如果输出了enabled,就说明LNMP服务已经开机自启动。
至此,我们已经完成了把所有的服务能通过systemctl来管理启动的步骤。
结语 恭喜你,你已经成功地用debian11来部署了LNMP(nginx+mariadb+php)环境,并且把它们都注册为systemd的服务单元,方便管理和控制。你现在可以使用这个环境来开发和运行你的网站项目了。希望这个教程文档对你有帮助,如果你有任何问题或者建议,可以随时跟我说哦。谢谢你的阅读和支持。😘