很多朋友刷Armbian是为了搭建私人博客(请看这里)或者搭建私人云盘(请看这里),这都离不开LNMP环境。所谓LNMP,其实是4个软件或系统的缩写,L指的是Linux(Armbian就是linux),N指的是nginx,M指的是Mysql或MariaDB,P指的是php。有了LNMP环境,就可以搭建php网站了。
本文讲的是手动搭建LNMP环境,适合想学习LNMP手动配置的朋友。文章很详细,同样也适合动手能力不太好的朋友。如果你只想建个站,你也可以通过宝塔面板来搭建(宝塔安装教程看这里),但是多装一个软件就会多一分风险。即便你通过宝塔搭建好了LNMP环境,如果你不够了解LNMP,那么后续也是会出现各种奇奇怪怪的问题。
教程适用于Armbian(无论是玩客云、R3300-L还是N1)、Debian(9/10)、Ubuntu(20.04 LTS)。教程中未作特殊说明的命令是通用命令,适用于各个平台和系统。
Table of Contents
准备工作:换国内源
在搭建LNMP之前,首先要确认你的软件源是清华源,不会换的可以参考Armbian换国内源这篇文章:
换好后一定不要忘了执行下面的命令来更新一下软件索引:
apt-get update
安装LNMP
安装nginx
命令如下:
apt install nginx -y
安装php
安装php7.0(不推荐)
命令如下:
apt install php php-fpm php7.0-mysql php7.0-gd php7.0-curl php7.0-mbstring php7.0-zip -y
如果你对php版本没有特殊要求,则推荐安装高版本的php,比如php7.4(以后会写php8.0的编译安装)。
安装php7.4(推荐)
笔者之前在装php7.4的时候是无法直接用下面的命令直接安装的,因为清华源里面还没有php7.4。但由于Armbian系统版本的不同,对应的软件源也略有不同,同时软件源也会不断加入新的软件,当你看到这篇教程时,可能已经过了很久,所以可以尝试先执行下面的命令试一试:
apt install php7.4-fpm php7.4-mysql php7.4-curl php7.4-gd php7.4-mbstring php7.4-xml php7.4-xmlrpc php7.4-zip php7.4-opcache php7.4-bcmath -y
如果提示无法定位软件包,则按照以下步骤进行:
1、安装软件源拓展工具
apt -y install software-properties-common apt-transport-https lsb-release ca-certificates
2、添加GPG
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
3、添加sury软件源
sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
4、更新软件源缓存
apt-get update
5、安装php7.4
apt install php7.4-fpm php7.4-mysql php7.4-curl php7.4-gd php7.4-mbstring php7.4-xml php7.4-xmlrpc php7.4-zip php7.4-opcache -y
6、甚至你也可以试试php8.0(不推荐)
apt install php8.0-fpm php8.0-mysql php8.0-curl php8.0-gd php8.0-mbstring php8.0-xml php8.0-zip php8.0-opcache -y
安装MySQL或MariaDB
如果你的设备是玩客云,系统是Armbian5.67/5.88,即Debian 9(在登录进去的欢迎界面上会显示是Debian几),命令如下:
apt install mysql-server -y
如果你的设备是N1,R3300-L等设备,Armbian一般是基于Debian 10的,Debian 10的默认软件源中不再包含MySQL软件包,而是被MariaDB取代(两者关系可自行百度),但MariaDB与MySQL基本没什么差别。所以我们选择安装MariaDB:
apt install mariadb-server -y
如果你是Ubuntu(20.04 LTS),命令如下:
apt install mysql -y
简单配置LNMP
这一部分只是简单配置一下NMP,能基本满足搭建一个站点的需要。
配置nginx
配置主页
输入如下命令后回车:
vi /etc/nginx/sites-enabled/default
在打开的页面输入如下命令然后回车,以显示文件的行数:
:set nu
如图,在第44行(不一定是44行,但位置差不多)的下图位置(都是index的那一行)添加index.php
开启php调用
在56-63行(自行变通)进行如下配置:
删掉前面的#,使之保持和上图一样的设置。要注意的是:
①“unix:”后的路径一般不需要改变,但因为php版本的原因可能会有所不同,请确保该路径是正确的有效的(cd到该目录查看一下是否存在就行了);
②绿色部分是代表的你装的php的版本,你装了php7.0就写7.0,php7.4就写7.4。如果你装了多版本的php也可以在这里切换该站点默认使用的php版本。
配置MySQL和MariaDB
运行配置向导
无论你装的是MySQL还是MariaDB,都是下面这条命令(其他操作若无特殊声明都是一样的):
mysql_secure_installation
如果报错,可能是数据库服务没启动,可以运行下面的代码解决
玩客云等Debian 9系统:
service mysqld start
N1,R3300-L等Debian 10系统:
service mariadb start
Ubuntu(20.04 LTS):
service mysql start
如果一切正常则会显示如下:
提示 | 翻译 | 操作 |
Enter current password for root (enter for none): | 输入MySQL的root密码(若没有则回车) | 第一次运行回车即可 |
Switch to unix_socket authentication [Y/n] | 是否切换到unix_socket认证 | 回车 |
Set root password? [Y/n] | 是否设置MySQL的root用户密码 | 回车 |
New password: | 新密码 | 设置密码 |
Re-enter new password: | 重新输入新密码 | 再次输入密码 |
Remove anonymous users? [Y/n] | 是否删除匿名用户 | 回车 |
Disallow root login remotely? [Y/n] | 是否禁止root用户远程登录 | 输入n,然后回车 |
Remove test database and access to it? [Y/n] | 是否删除test数据库 | 回车 |
Reload privilege tables now? [Y/n] | 是否重新加载权限表并使之生效 | 回车 |
数据库配置完成。进阶的教程以及可能遇到的错误后续会有单独的文章。
配置php
暂时还不用配置php的具体参数,保持默认即可。后续会专门写一篇配置php的文章。
重启服务
service nginx restart
service mariadb restart(若你的是玩客云则将mariadb替换成mysqld,若你的设备是Ubuntu 20.04 LTS则替换成mysql)
service php7.4-fpm restart(若php不是7.4,则替换成你的版本)
测试LNMP
测试nginx
直接访问Armbian设备的IP地址如果显示下面的界面则表示nginx配置成功:
测试php
输入如下命令:
nano /var/www/html/test.php
粘贴下面代码并保存
<?php phpinfo(); ?>
然后访问
http://Armbian设备的IP/test.php
如果显示下面的界面则表示php正常运行:
测试数据库
一般没什么问题。可以在搭建网站的时候测试。
结束
至此,LNMP已基本完成配置。这时候已经可以搭建可道云、博客、论坛等网站了。具体怎么搭建,可以参考Armbian部署可道云:打造多功能私人云盘这篇文章:
文章评论
博主你好,我按照你的方法安装了nginx与PHP7.0之后发现nignx可以正常工作,但是用玩客云ip/test.php测试时却出现502 bad gateway的报错,这该怎么解决?难道是玩客云宕机了?
@guest nginx里面配置好php了嘛,502是响应超时
@麦克斯和雪莉 ok,现在好了,原来是php没装好,我又重新apt了一下就行了,抱歉打扰,谢谢你。
还有就是磁盘挂载的问题,我装了一个SD卡,然后挂载在/mnt/usb上,把资料下载到/mnt/usb下面以后发现登录后 logo下提示的系统信息
Usage of /: 77% of 6.7G,好像还是下载到玩客云自带的内存里,是不是没挂载上啊?
@guest 你可以用df -h看看是否已经挂载好了,挂载好了会有显示的
那个MySQL数据库现在安装是安装他的分支,那个命令已经用不了了哈,希望修改一下
@MIX 你是什么设备和什么版本的系统呢
您好,请问重启nginx报failed to start A high performance web server and a reverse proxy server.是什么原因呢?我的是n1
@zippo nginx启动失败,重启机器试一试
重启几次问题依旧,我准备找时间重刷armbian试试
@zippo 问题解决了吗
你好,我安装完成后,在进行配置nginx时,目录/etc/nginx/sites-enabled/下没有default文件。请问如何解决,谢谢。。
@guest 可以直接去网上找一个模板
出现这串代码
root@armbian:~# service nginx restart
Job for nginx.service failed because the control process exited with error code.
See "systemctl status nginx.service" and "journalctl -xeu nginx.service" for details.
nginx.service failed 的问题解决了,我找到了这个命令很有效。sudo apt-get remove --purge nginx nginx-full nginx-common和sudo apt-get install nginx,来源https://cloud.tencent.com/developer/ask/sof/55050
我在测试PHP是否正常运行的时候,打开网址直接就下载了test.php文件,这是怎么回事呢?
@dudu 需要添加index.php,并且要指定php版本
数据库初始化时候没有Switch to unix_socket authentication [Y/n]项目,初始化完成后不能登录,怎么取消unix_socket认证改密码登录和开启数据库远程登录呢?
大家换源用 https://linuxmirrors.cn/ 里的 bash <(curl -sSL https://linuxmirrors.cn/main.sh) 一键精准版本换源。
本人玩客云32位的安装成功,用的固件:Armbian-unofficial_23.11.0-trunk_Onecloud_bookworm_current_6.1.63.burn.img 基于debian12.
mysql 选择是 MariaDB
注意:文中 nginx添加php支持修改 /etc/nginx/sites-enabled/default 文件时,要把后面的 } 去掉注释,否则nginx语法错误不启动。
另外另一篇 https://blog.haibara.cn/archives/83 phpMyAdmin管理也成功。