分类目录归档:未分类

基于Ubuntu/Debian系统,安装LNMP

前缀、文档修改记录

2024-01-06 初始化编辑此文章
2024-02-20 更新一次
2025-03-23 完稿,基于Debian 12.9最新版本发布此博客

章节1、需求描述

LNMP是比较受欢迎的博客架构模式,本次教程,系统环境选择Ubuntu/Debian系列,该系列有比较成熟的软件库,安装Nginx、数据库、PHP都很便捷。Nginx、MySQL/MariaDB、PHP这个一般就用系统自带的版本。

有条件的使用站库分离的架构,数据库放到大厂的云服务器上,会比较靠谱。

章节2、安装步骤

本次更新博客后,基于最新版本的Debian 12.9 来安装此次的LNMP(Linux\Nginx\MariaDB\PHP),属于比较新的版本。

2.1、安装Nginx

root@SERVER:~# apt update
root@SERVER:~# apt install nginx

安装玩Nginx后,它就自动启动了,即可以通过访问http://yourserverip/来验证Nginx是否正常工作,如下:

其中IP地址,根据你们实际的填在地址栏,如果大型的公有云,注意放行主机安全组,如果是国内环境,可能需要备案才能访问

2.2、安装MariaDB

这里推荐安装的是开源版本的MariaDB,MariaDB 是 MySQL 的一个开源分支,性能优良,兼容性好,MySQL被SUN收购后,就不推荐用MySQL的新版本了。

root@SERVER:~# apt install mariadb-server

初始化数据库的安全设置,最重要的就是设置数据库用户root的超级密码,务必保存好密码,其他参数(移除匿名用户/禁止 root 远程登录/删除测试数据库/重新加载权限表)默认用Y,回车即可。

root@SERVER:~# mysql_secure_installation

通过服务器上,测试本地连接能否成功,判断数据库是否安装成功

root@SERVER:~# mysql -u root -p

2.3、安装PHP

root@SERVER:~# apt install php php-fpm php-mysql php-cli php-curl php-xml php-mbstring php-zip

确认一下PHP的版本,我这里是8.2的这个大版本号

2.4、创建Nginx配置文件

编辑Nginx的默认站点文件 /etc/nginx/sites-available/default

其中,如下配置中,参数fastcgi_pass参数对应的PHP版本,可能因 PHP实际安装版本不同而变化,可通过 ls /run/php/ 查看可用的 .sock 文件

server {
    listen 80;
    server_name localhost;

    root /var/www/html;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }
}

2.5、创建PHP测试文件

在web的默认目录下,创建php的文件,用以测试PHP

echo "<?php phpinfo(); ?>" | tee /var/www/html/info.php

2.6、重启一下Nginx

root@SERVER:~# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
root@SERVER:~# systemctl restart nginx
root@SERVER:~# 

通过访问 http://yourserverip/info.php文件,看看PHP是否正常工作

2.7 配置开机启动

systemctl enable nginx
systemctl enable php8.2-fpm
systemctl enable mariadb

附录1、版本情况

时间 2025-3-23
系统 Debian 12.9 
数据库 Ver 15.1 Distrib 10.11.11-MariaDB
PHP Zend OPcache v8.2.28 / Zend Engine v4.2.28
NGINX nginx/1.22.1 built with OpenSSL 3.0.15

附录2、视频操作演示

000158. 基于Ubuntu/Debian系统,官方源apt方式安装LNMP 2025-03-23

本期博客地址 https://dasmz.com/?p=3629
本期视频地址 https://youtu.be/-dLv-hsdhEM

附录3、@Dasmz

博客内,所有教程为手打原创教程,如果技术教程对您有所帮助,欢迎打赏作者。技术层面,闻道有先后,如有疏漏、错误,欢迎指正。技术博客的内容,一般具有一定的环境依赖,具有一定的年代依赖,酌情参考其中的内容,请勿完全照搬照抄。

对于博客内已提及的专业知识,如果需要技术指导,欢迎联系我,仅需支付工时费

Twitter: Dasmz

Youtube: @DasmzStudio

Telegram: @Dasmz

Donate
云乞讨

宽带里获取到的IPv6地址 2022-10-23

上海电信宽带里,获取到的IPv6地址

先看看IPv4地址的信息

协议: DHCPv6 客户端
分发前缀: 240e:128:7139:ba00::/56
地址: 240e:12f:5181:13a9:c38b:4682:1ba1:66a6/64
网关: fe80::ce1a:faff:feed:5540
DNS 1: 240e:58:c000:1000:116:228:111:118

1、协议是 DHCPv6 Client 客户端

2、DHCPv6-PD 分发前缀 240e:128:7139:ba00::/56 ,这里需要知道,都是十六进制的符号,每个:分隔的,比如240e,长度都是 16 bit位

IPv6支持缩写的表达,比如240e:128:7139:ba00::/56,中的128,其实完整写法是 240e:0128:7139:ba00::/56

也支持连续0的缩写,如240e:0128:7139:ba00:0000:0000:0000:0001可缩写为 240e:128:7139:ba00::1

故而,240e:128:7139:ba00::/56 表示的网络为 240e:128:7139:ba

/56 可供分 16个/60的子网,/56 可供分 256个/64的子网,不同子网可以用来承载不同的业务

通常的分配规则为

/48 分配给企业宽带客户
/56 分配给家庭宽带客户,小型办公宽带客户
/64 分配给家庭路由器终端

/126 特殊,一般用于点对点链路,类似于IPv4中为点对点链路分配的/30,专线类业务

3、IPv6地址 240e:12f:5181:13a9:c38b:4682:1ba1:66a6/64

根据刚刚的缩写,它完整的表达应该为

240e:012f:5181:13a9:c38b:4682:1ba1:66a6/64

其中,240e,表示电信宽带

# 常见运营商的IPv6前缀
中国电信IPv6前缀 240e::/20
中国联通IPv6前缀 2408:8000::/20
中国广电IPv6前缀 240a:4000::/21
中国移动IPv6前缀 2409:8000::/20

路由器下方的电脑/手机设备,如果配置正确,可以获取到IPv6的公网地址

inet6 240e:128:7139:ba00::859/128 scope global dynamic noprefixroute 
inet6 240e:128:7139:ba00:4234:c25d:bf20:8337/64 scope global temporary dynamic 
inet6 240e:128:7139:ba00:ac60:cd0d:6df6:b994/64 scope global dynamic mngtmpaddr noprefixroute
IPv6地址作用域和地址分类
IPv6地址指定给接口,一个接口可以指定多个地址。
IPv6地址有作用域:
link local 地址 本链路有效
site local 地址 本区域(站点)内有效,一个site通常是个校园网
global 地址 全球有效,即可汇聚全球单播地址

IPv6地址分类:
unicast 单播(单点传送)地址
multicast 组播(多点传送)地址
anycast 任播(任意点传送)地址

IPv6没有定义广播地址,其功能由组播地址替代
::/128 即0:0:0:0:0:0:0:0,只能作为尚未获得正式地址的主机的源地址,不能作为目的地址,不能分配给真实的网络接口。
::1/128 即0:0:0:0:0:0:0:1,回环地址,相当于IPv4中的localhost(127.0.0.1),ping locahost可得到此地址。
2001::/16 全球可聚合地址,由 IANA 按地域和ISP进行分配,是最常用的IPv6地址,属于单播地址。
2002::/16 6 to 4 地址,用于6to4自动构造隧道技术的地址,属于单播地址。
3ffe::/16 早期开始的IPv6 6bone试验网 地址,属于单播地址。
fe80::/10 本地链路地址,用于单一链路,适用于自动配置、邻机发现等,路由器不转发以fe80开头的地址。
ff00::/8 组播地址。
::A.B.C.D 兼容IPv4的IPv6地址,其中<A.B.C.D>代表IPv4地址。自动将IPv6包以隧道方式在IPv4网络中传送的IPv4/IPv6节点将使用这些地址。
::FFFF:A.B.C.D 是IPv4映射过来的IPv6地址,其中<A.B.C.D>代表IPv4地址,例如 ::ffff:202.120.2.30 ,它是在不支持IPv6的网上用于表示IPv4节点。
ip address add   # 此命令用于新增ip地址

option:

dev IFNAME:要将地址添加到的设备的名称

local ADDRESS (default):ip地址,地址的格式取决于协议

peer ADDRESS:点对点接口的远程端点的地址。 同样,ADDRESS后面可以跟一个斜杠和一个十进制数,对网络前缀长度进行编码。 如果指定了对等地址,则本地地址不能具有前缀长度。 网络前缀与对等方而不是与本地地址相关联。

broadcast ADDRESS:接口上的广播地址。 可以使用特殊符号“ +”和“-”代替广播地址。 在这种情况下,广播地址是通过设置/重置接口前缀的主机位得出的。

label LABEL:每个地址都可以用标签字符串进行标记。为了保持与Linux-2.0网络别名的兼容性,此字符串必须与设备名称一致,或者必须以设备名称的前缀后跟冒号

scope SCOPE_VALUE:此地址有效的区域的范围。可用的作用域列在/etc/iproute2/rt_scopes文件中。预定义的范围值包括:

global:地址全局有效

site:地址是站点本地地址,即在该站点内有效

link:该地址是本地链接,即仅在此设备上有效

host:地址仅在此主机内有效

valid_lft LFT:此地址的有效生存期;请参阅RFC 4862第5.5.4节。当它过期时,该地址将被内核删除。默认为“永远”

preferred_lft LFT:该地址的首选生存时间; 请参阅RFC 4862的5.5.4节。到期后,该地址将不再用于新的传出连接。 默认为永远

home:(仅IPv6)将此地址指定为RFC 6275中定义的“本地地址”

mngtmpaddr:(仅IPv6)代表“隐私扩展”(RFC3041)使内核将以此地址创建的临时地址作为模板进行管理。 为了使它生效,必须将use_tempaddr sysctl设置设置为大于零的值。 给定地址的前缀长度必须为64。此标志允许在手动配置的网络中使用隐私扩展,就像无状态自动配置处于活动状态一样。内核会从原本的IPv6地址计算生成一个临时地址。在连接远程服务器时,系统会优先选择这个地址以隐藏原来的地址

nodad: (仅限IPv6)添加此地址时不执行重复地址检测(RFC 4862)

noprefixroute:不要为添加的地址的网络前缀自动创建路由,并且不要在删除地址时搜索要删除的路由