Raspberry Pi 4B LAMP/LNMP配置(转载自此链接)
Hereby just want to discuss about the advantage and disadvantage of application which being established based on Apache and based on Nginx .
first of all, let’s using the 归类法 to understand the Apache and Nginx more deeper(很明显啊,我答不出来,呵呵,since like I have no idea about them, neither from their definition nor from their application):
- 相同点:
- 从我目前理解来看,就是他们共同构建一个L _ MP的”应用环境“,
- where:
- letter “L” means Linux,
- “_” either Apache or Nginx,
- letter “M” means MySQL or MariaDB and also suitable for other data base,
- letter “P” means
Program, so far as I know like a “WordPress”这里实际上是指的PHP, which means 超文本预处理器 hypertext preprocessor,其实更早之前这个PHP被发明者Rasmus Lerdorf叫做个人网页Personal Home Page,但在PHP3的时候被以色列的程序员重新定义为 Chao-Wenben-Yu-Chuliqi,哈哈哈哈!
- 不同点:
- Apache:
- Nginx:
目录
LAMP
1.安装Mariadb
在Raspberry Pi中,MySQL无法安装,会自动建议安装Mariadb,它和MySQL同源,具体介绍大家可自行搜索。
$ sudo apt-get install mariadb-server mariadb-client
2. 安装PHP和apache
phpmyadmin会自动把其他相关依赖(包括apapche2)都装好,安装过程要选择和apache协同,还可设置phpmyadmin用户密码,注意要先装前面的数据库,这样设置过程才不会出现数据库连接错误。(此处我遇到了问题,错误中只能是吧php升级到8.0)
$ sudo apt-get install phpmyadmin $ sudo apt-get install apache2 #实际不需要执行命令,phpmyadmin会附带把apache2装好 $ sudo apt-get install libapache2-mod-php #这个没安装apache可能解析不了php代码,导致页面上直接显示php代码 $ sudo ln -s /usr/share/phpmyadmin/ /var/www/html/ #在apache默认web目录下添加phpmyadmin的软链接,否则后者无法打开
3. 测试php和apache的协同
- 测试apache
- 测试php页面
在默认的网站根目录/var/www/html/下新增php程序phpinfo.php,并添加内容:
<?php phpinfo(); ?>

4. 修改MariaDB数据库配置
$ sudo mysql_secure_installation #设置root密码,是否删除匿名用户,是否只允许localhost连接,是否删除test库,最后更新权限。


之后在终端用root登录数据库
# mysql -u root -p
发现会报错“ERROR 1698 (28000): Access denied for user ‘root’@’localhost’”,树莓派4B安装PHP7.3 + Nginx + MySQL 教程给出了解决办法
$ sudo mysql -u root MariaDB [(none)]> use mysql; MariaDB [mysql]> update user set plugin='mysql_native_password'; MariaDB [mysql]> flush privileges;
之后重新使用root密码登录,成功。
5.测试数据库连接
- 编写php连接数据库的脚本testdblink.php(我习惯用PDO连接,测试账号root)
<?php $servername = "localhost"; $dbName = "mysql"; $username = "root"; $password = "此处输入root密码"; try { $conn = new PDO("mysql:host=$servername;dbname=$dbName", $username, $password); echo "连接成功"; } catch(PDOException $e) { echo $e->getMessage(); } ?>
保存为testdblink.php放在apache的/var/www/html默认目录下测试。
由于安装了phpmyadmin,就可以直接通过web管理数据库了。
登录地址:http://服务器ip地址/phpmyadmin/index.php
6. 修改apache2监听端口
apache2默认监听80端口,如果不希望这个端口被使用,可以尝试修改。
$ cd /etc/apache2/ $ sudo nano ports.conf

$ cd /etc/apache2/sites-enabled/ $ sudo nano 000-default.conf

$ sudo service apache2 restart


LNMP
1. 安装Mariadb
同lamp
2. 安装和配置nginx
$ sudo apt-get install nginx
先前apache已将监听端口修改至8080,将80端口腾出
修改nginx配置文件
$ sudo nano /etc/nginx/sites-available/default
保持80端口监听
手工追加index.php。注意到“root /var/www/html;”,说明nginx的默认根目录是/var/www/html,Web页面文件要放在这个目录下
将
修改为如下:
重启
$ sudo systemctl restart nginx
3. 安装php-fpm
在安装phpmyadmin时,有一步骤是选择配合的web服务器,由于要用nginx,所以此时都不选放空。php很多组件在安装phpmyadmin时组件都装了,nginx需要另外装php-fpm。
$ sudo apt-get install php-fpm
4. 测试
测试php,可以发现Server API和apache的php页面不同
数据库已经安装,直接测试也ok。
有个bug:nginx监听端口是80,apache2的监听端口已经改成了8080,但是直接在浏览器那里输入ip,仍旧是apache的页面,而输入“ip地址/phpinfo.php”时,却能定位到fpm,而不是apache。用命令/etc/init.d/apache2 stop 停止apache2服务,80端口正常8080端口无法打开,说明nginx正常,但是默认页面还是apapche2的。
解决:我同时保留了apache和nginx,经查看/var/www/html/目录发现:目录中有index.html和另一个index.nginx-debian.html,前者是安装apache时默认添加的。直接在浏览器那里输入ip实际默认访问的是ip/index.html。因此要测试nginx的基本页面,应该访问ip/index.nginx-debian.html。分类: Linux标签: 树莓派