Linux 手动安装快速部署 LNMP 环境实战

本文涉及的产品
轻量应用服务器 2vCPU 4GiB,适用于搭建Web应用/小程序
轻量应用服务器 2vCPU 4GiB,适用于搭建容器环境
轻量应用服务器 2vCPU 4GiB,适用于网站搭建
简介: 本文详细记录了在阿里云ECS上手动搭建LNMP环境的过程,系统选用Ubuntu 24.04。主要内容包括:1) 使用`apt`安装Nginx和MySQL,并更新软件源;2) 编译安装PHP 8.4.5,配置PHP-FPM及环境路径;3) 配置MySQL root用户密码;4) 调整Nginx支持PHP解析并测试整体环境。通过此过程,重现手动配置服务器的细节,帮助熟悉各组件的安装与协同工作。

本文主要记录一下手动安装 LNMP 的过程,主要是我前几天发现自己好像已经习惯了用 docker 直接部署一些应用或者是习惯用了面板,然后要自己手动配置一下 Nginx 的时候发现自己居然忘了怎么弄了。本文主要选用阿里云 99 计划的 ECS,系统选用 Ubuntu 24.04 版本。

安装 Nginx 和 MySQL

首先我们在 ECS 装完系统之后我们先来更新一下软件源,我们可以通过以下命令更新:

apt update

然后直接通过 apt 来安装 Nginx 和 MySQL,我们可以通过执行以下命令安装:

apt install -y nginx mysql

等执行完毕没有报错基本上就安装完成了

编译安装并配置 PHP

PHP 因为一般我们都有多个 PHP 版本存在于同一个环境内,所以我们选用编译安装,我们可以在 https://www.php.net/downloads.php 找到各个 PHP 版本的下载链接,我们一般选用 .tar.gz 压缩包来安装,我们可以执行以下命令来编译安装:

在安装之前我们通常要安装一些软件包,但是阿里云 ECS 的 Ubuntu 镜像一般都会预先帮我们安装了,但不妨再检查一次,我们可以通过执行以下指令安装:

apt install -y software-properties-common
apt install gcc make openssl curl libssl-dev libxml2-dev libzip-dev libcurl4-openssl-dev libpng-dev libjpeg-dev libwebp-dev libonig-dev libsqlite3-dev libsodium-dev libargon2-dev

然后我们来下载我们的 PHP 安装包,我们通过 wget 来下载,我们这里选择 PHP 8.4.5 版本,下载后之后我们解压并且进入到目录当中:

wget https://www.php.net/distributions/php-8.4.5.tar.gz
tar -zxvf php-8.4.5.tar.gz

接下来我们来进行编译操作,我们可以通过以下指令生成 Makefile

./configure --prefix=[要安装 PHP 的路径] --with-config-file-path=[要安装 PHP 的路径] --with-config-file-scan-dir=/usr/local/php8.1/etc/php.d --enable-fpm --enable-fileinfo --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-mbstring --enable-ftp --with-gd --enable-gd-native-ttf --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --with-pear --with-gettext --enable-calendar --with-openssl --with-mcrypt --with-mysqli=mysqlnd  --with-pdo-mysql=mysqlnd

期间可能会发生错误,我们只需分析错误信息把一些可能没更新到的软件包更新一下即可,如果实在阿里云网页控制台 Workbench 的话还能直接问助手,当然也可以通过安装阿里云助手来帮忙。在成功生成 Makefile 之后我们可以执行以下指令进行安装:

make && make install

等待成功之后我们可以执行以下指令来查询我们是否安装成功:

[你的 PHP 安装路径]/bin/php --version
[你的 PHP 安装路径]/bin/php -m

我们接下来弄一下我们 PHP 的配置文件,我们要复制开发或者生产环境的 php.ini 到 PHP 目录中,并且正确配置 php-fpm

cp php.ini-development [你的 PHP 安装路径]/lib/php.ini
cp [你的 PHP 安装路径]/etc/php-fpm.d/www.conf.default [你的 PHP 安装路径]/etc/php-fpm.d/www.conf
cp [你的 PHP 安装路径]/etc/php-fpm.conf.default [你的 PHP 安装路径]/etc/php-fpm.conf

如果我们的 ECS 上有多个版本的 PHP,那么我们需要需改 PHP-FPM 的端口号避免冲突,我们可以修改 [你的 PHP 安装路径]/etc/php-fpm.d/www.conf 中的端口号。最后我们来创建以下软连接方便我们执行命令并且启动我们的 PHP-FPM:

ln -s [你的 PHP 安装路径]/bin/php /usr/bin/php8.4
ln -s [你的 PHP 安装路径]/sbin/php-fpm /usr/sbin/php8.4-fpm

之后我们可以用以下指令启动 PHP-FPM:

php8.4-fpm

我们可能会遇到如下错误:

ERROR: [pool www] cannot get gid for group 'nobody'
ERROR: FPM initialization failed

这个时候我们添加一个用户组并且重新执行指令即可:

groupadd nobody
php8.4-fpm

配置 MySQL

接下来我们要配置我们的 MySQL,我们需要登录我们的 MySQL 并且设置一个 root 密码,我们可以通过以下指令来设置 root 密码:

sudo mysql -uroot -p -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '新密码';" -e "FLUSH PRIVILEGES;"

其中把新密码替换成自己的,在执行指令之后会要我们输入密码,这个时候因为默认是通过 auth socket 登陆的所以我们直接回车即可。在之后我们可以执行:

mysql -uroot -p

并且输入密码来登录我们的 MySQL 命令行,要退出的话只需要输入 exit 并回车即可。

配置 Nginx 并整体测试

接下来我们需要配置我们的 Nginx,我们可以通过 vim 编辑我们的 /etc/nginx/sites-available/default 文件,并在其中的默认配置中加入:

        location ~ \.php$ {
                root /var/www/html;
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
        }

并且将

index index.html index.htm index.nginx-debian.html;

改为

index index.php index.html index.htm index.nginx-debian.html;

在修改完成之后我们保存退出,并且通过执行 systemctl restart nginx 来重启 Nginx,如果没有报错就说明我们的配置没有出错,之后我们可以通过 vim 新建编辑 /var/www/html/index.php 文件,我们写入如下内容:

<?php

$servername = "127.0.0.1";
$username = "root";
$password = "[你的 MySQL 密码]";
$conn = new mysqli($servername, $username, $password);
if ($conn->connect_error) {
   
die("fail: " . $conn->connect_error);
}
echo "success\n";

?>

之后我们在我们的 ECS 安全组中放行 80 端口给 0.0.0.0/0,并且访问我们的 ECS 公网IP,如无错误应该就会显示 success。至此我们的 LNMP 环境安装完成。

相关文章
|
20天前
|
存储 Linux
Linux环境下删除大文件后磁盘空间未释放问题诊断流程。
以上诊断流程涉及Linux底层机制与高级管理技能结合之处,并需要管理员根据实际环境灵活调整诊断策略与解决方案。
76 8
|
1月前
|
Ubuntu 安全 Linux
Ubuntu 24.10 发行版登场:Linux 6.11 内核、GNOME 47 桌面环境
Ubuntu 24.10 还带来了 GNOME 47,增强了性能和稳定性,并引入了新功能。此版本的 Ubuntu 还默认在采用 Nvidia 显卡的硬件上切换到 Wayland,并在支持的硬件上默认使用开源的 Nvidia 560 内核模块。 另外需要注意的是,Ubuntu 24.10 是稳定版本,但作为非 LTS 版本,仅支持 9 个月。
|
1月前
|
安全 Linux 网络安全
Linux系统初步设置本地Git环境和生成SSH密钥的步骤。
现在您的Linux系统已经配置好了Git环境,并创建并添加了SSH密钥,可以安全地与远端仓库进行交互,无论是克隆、推送还是拉取操作。此过程确保了数据传输的安全并使版本控制流程更为顺畅。使用Git时应考虑定期更新并管理您的凭据,以确保安全性。
279 0
|
1月前
|
XML 缓存 Linux
在Linux环境下解决Visual Studio Code字体显示异常和字体替换方法。
解决Linux下VS Code字体显示异常,需要对Linux字体渲染机制有所理解,并对VS Code的配置选项进行合理设置。替换字体时则要通过系统字体配置或VS Code设置来完成。通过上述方法,可以有效地解决字体显示问题,从而提升代码编辑的视觉体验。
156 0
|
关系型数据库 MySQL 应用服务中间件
手动部署LNMP环境(Alibaba Cloud Linux 2)
本场景带您体验如何在Alibaba Cloud Linux 2.1903 LTS 64位操作系统的云服务器上搭建LNMP环境。
|
7月前
|
关系型数据库 应用服务中间件 Linux
Linux云服务器如何搭建LNMP环境
LNMP环境是Linux系统中常用的Web服务架构,由Linux、Nginx、MySQL/MariaDB和PHP组成,适用于高效托管动态网站。本文以CentOS 7为例,详细介绍了LNMP环境的搭建步骤,包括Nginx、MariaDB和PHP的安装与配置,以及最终通过创建`index.php`文件验证环境是否成功部署。具体操作涵盖配置YUM仓库、安装服务、编辑配置文件、启动服务等关键步骤,确保用户能够顺利搭建并运行LNMP环境。
155 1
Linux云服务器如何搭建LNMP环境
|
关系型数据库 应用服务中间件 nginx
基于Docker的LNMP环境微服务搭建
基于Docker的LNMP环境微服务搭建
基于Docker的LNMP环境微服务搭建
|
关系型数据库 MySQL 应用服务中间件
快速搭建LNMP环境
Nginx是一款小巧而高效的Web服务器软件,可帮您在Linux系统下快速方便地搭建出LNMP Web服务环境。本教程介绍如何搭建LNMP环境,其中LNMP分别代表Linux、Nginx、MySQL和PHP。
|
关系型数据库 MySQL 应用服务中间件
Nginx__高级进阶篇之LNMP动态网站环境部署
Nginx__高级进阶篇之LNMP动态网站环境部署
348 0
|
应用服务中间件 PHP nginx
基于Anolis OS 3快速搭建LNMP环境制作KodBox
本教程介绍如何搭建LNMP环境,其中本实验的LNMP分别代表Anolis OS 3、Nginx、Mariadb和PHP。

热门文章

最新文章