Armbian搭建LNMP环境

2020年7月24日 8347点热度 3人点赞 16条评论

很多朋友刷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)。教程中未作特殊说明的命令是通用命令,适用于各个平台和系统。

准备工作:换国内源

在搭建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

Armbian搭建LNMP环境

开启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配置成功:

Armbian搭建LNMP环境

测试php

输入如下命令:

nano /var/www/html/test.php

粘贴下面代码并保存

<?php phpinfo(); ?>

然后访问

http://Armbian设备的IP/test.php

如果显示下面的界面则表示php正常运行:

Armbian搭建LNMP环境

测试数据库

一般没什么问题。可以在搭建网站的时候测试。

结束

至此,LNMP已基本完成配置。这时候已经可以搭建可道云、博客、论坛等网站了。具体怎么搭建,可以参考Armbian部署可道云:打造多功能私人云盘这篇文章:

参考资料

https://www.mf8.biz/ubuntu-debian-install-php7-3/

麦克斯和雪莉

非常规文科生

文章评论

  • guest

    博主你好,我按照你的方法安装了nginx与PHP7.0之后发现nignx可以正常工作,但是用玩客云ip/test.php测试时却出现502 bad gateway的报错,这该怎么解决?难道是玩客云宕机了?

    2021年8月7日
    • 麦克斯和雪莉

      @guest nginx里面配置好php了嘛,502是响应超时

      2021年8月8日
      • guest

        @麦克斯和雪莉 ok,现在好了,原来是php没装好,我又重新apt了一下就行了,抱歉打扰,谢谢你。
        还有就是磁盘挂载的问题,我装了一个SD卡,然后挂载在/mnt/usb上,把资料下载到/mnt/usb下面以后发现登录后 logo下提示的系统信息
        Usage of /: 77% of 6.7G,好像还是下载到玩客云自带的内存里,是不是没挂载上啊?

        2021年8月9日
        • 麦克斯和雪莉

          @guest 你可以用df -h看看是否已经挂载好了,挂载好了会有显示的

          2021年8月14日
  • MIX

    那个MySQL数据库现在安装是安装他的分支,那个命令已经用不了了哈,希望修改一下

    2021年9月5日
  • zippo

    您好,请问重启nginx报failed to start A high performance web server and a reverse proxy server.是什么原因呢?我的是n1

    2022年12月6日
  • zippo

    重启几次问题依旧,我准备找时间重刷armbian试试

    2022年12月31日
  • guest

    你好,我安装完成后,在进行配置nginx时,目录/etc/nginx/sites-enabled/下没有default文件。请问如何解决,谢谢。。

    2023年6月10日
  • dudu

    出现这串代码
    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.

    2023年8月16日
  • dudu

    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

    2023年8月17日
  • dudu

    我在测试PHP是否正常运行的时候,打开网址直接就下载了test.php文件,这是怎么回事呢?

    2023年8月17日