如何在Debian 10上搭建LAMP环境

目前,很多网站都以Linux系统作为服务器,例如企业级Linux系统红帽企业版RHEL,CentOS,OpenSUSE等等。但也有很多人选择Debian系统作为服务器的发行版之一。Debian系统也是目前主流VPS提供商在提供的VPS系统中经常支持的系统之一。

本教程主要讲解如何在Debian 10上搭建LAMP环境,让你轻松部署PHP开发的web程序。

前提条件

拥有自己的域名和服务器。

1、域名

国内,考虑到备案,建议选择阿里云,腾讯云等知名域名和云服务提供商。国外域名可以考虑namesile。

2、服务器

如果你购买VPS服务器,建议购买国内知名的VPS提供商,例如:阿里云,腾讯云。如果要购买国外VPS,可以考虑vultr和搬瓦工都非常不错。

步骤一、安装PHP环境

PHP的安装也很简单,只需要一条命令就可以搞定。由于要使用apache作为web服务运行PHP程序,使用mysql作为数据库,所以我们也需要安装php的apache和mysql模块。

sudo apt update
sudo apt install php libapache2-mod-php php-mysql

注意:默认的情况下,php安装的是Debian10的软件仓库中最新版本。如果你需要安装指定版本的PHP,你可以通过以下方式:

sudo apt update
sudo apt install php7.3

当然其对应的模块也需要指定版本,例如php7.3-mysql,一般常用以下模块:

php7.3-cli 
php7.3-common 
php7.3-curl 
php7.3-gd 
php7.3-json 
php7.3-mbstring 
php7.3-mysql 
php7.3-xml

步骤二、安装Apache提供web服务

在 Debian10 发行版中,Apache软件包和服务称为apache2。安装Apache非常简单,命令如下:

sudo apt update
sudo apt install apache2

安装完成后,apache2服务默认自动运行,可以通过以下命令查看:

sudo systemctl status apache2

命令执行后,你会看到类似如下的输出。

● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: 
   Active: active (running) since Sat 2021-04-22 13:55:49 PDT; 21s ago
   ...

如果你的Debian 10上默认ufw开启了防火墙,你需要将HTTP (80) 和 HTTPS (443)端口放开,以便外部能访问apache的web服务。

可以通过以下命令配置防火墙允许Apache服务:

sudo ufw allow 'Apache Full'

以上这些完成后,你可以通过浏览器来验证Apache提供的web服务是否可以正常访问。你需要在浏览器中输入你的服务器地址,如果一切正常,你将会看到如下的显示:



截止现在,我们将PHP和Apache都已经安装到了Debian 10服务器,这是我们可以尝试下PHP文件是否可以正常执行显示。

首先,进入/var/www/html目录,创建info.php文件,使用vim编辑info.php内容如下:

cd /var/www/html
sudo touch info.php
sudo vim info.php

在info.php文件中输入以下内容:

<?php
phpinfo();

在浏览器中输入http://debian10_server_ip/info.php这里的debian10_server_ip是你Debian10服务器的IP地址。

正常情况下,你将会看到如下结果:

步骤三、安装MySQL的替代实现 MariaDB

在 Debian 10 的默认软件源中并不包含 MySQL 软件包,它已被 MariaDB 替代。

MariaDB的安装

这里以MariaDB为例进行讲解,如果你需要安装MySQL可以参考如何在 Debian 10 上安装 MySQL

sudo apt update
sudo apt install mariadb-server

安装完成后,MariaDB服务将会自动启动,你可以通过systemctl的如下命令查看。

sudo systemctl status mariadb

如果运行正常,你将会看到类似如下内容:

● mariadb.service - MariaDB 10.3.15 database server
   Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2021-04-22 14:36:28 PDT; 19min ago
     Docs: man:mysqld(8)
           https://mariadb.com/kb/en/library/systemd/
 Main PID: 4509 (mysqld)
   Status: "Taking your SQL requests now..."
    Tasks: 30 (limit: 2359)
   Memory: 78.6M
   CGroup: /system.slice/mariadb.service
           └─4509 /usr/sbin/mysqld  

如果服务没有启动,你可以尝试用使用如下命令进行启动:

sudo systemctl start mariadb

MariaDB数据安装完成后,为提升数据库的安全性,建议使用如下命令进行安装加固:

sudo mysql_secure_installation

命令执行后,你将会在终端中得到提示,基本上你一路输入Y即可。

...
Enter current password for root (enter for none):
...
Set root password? [Y/n] Y
New password: 
Re-enter new password: 
...
Remove anonymous users? [Y/n] Y
...
Disallow root login remotely? [Y/n] Y
...
Remove test database and access to it? [Y/n] Y
...
Reload privilege tables now? [Y/n] Y
...
Thanks for using MariaDB!

默认情况下,MariaDB根用户使用unix_socket身份验证插件,该插件在调用mysql客户端工具时会检查有效的用户ID。

这意味着仅当您以系统root身份调用mysql命令或通过在命令前添加sudo时,才可以以root用户身份连接到MariaDB服务器。

为了提高安全性,建议保留默认的身份验证插件,并允许root用户仅通过Unix套接字进行身份验证。

如果要将根身份验证更改为经典身份验证,可以在服务器上进行如下操作:

sudo mysql

然后执行如下SQL。

ALTER USER 'root'@'localhost' IDENTIFIED VIA mysql_native_password;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_root_passwd';

这里的your_root_passwd就是你设置的root账号密码。以上设置完成后,你可以通过如下命令在终端中登录mysql。

mysql -u root -p

数据库账号创建

如果网站使用,不建议应用直接使用root账号,建议为不同的应用创建对应的数据库以及账号。

创建数据库和对应长号的SQL如下,这里以创建linux265数据库为例:

create database linux265;
create user 'newuser'@'localhost' IDENTIFIED BY 'user_password';

注意:这其中的newuser是你要创建的数据库账号,user_password是该数据库账号的密码,使用时替换为你自己实际需要的即可。

可以通过以下sql查看已经创建的数据库:

show databases;

你会看到类似如下的输出:

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| linux265           |
| mysql              |
| performance_schema |
+--------------------+
4 rows in set (0.001 sec)

当然如果你的应用程序不和数据库在同一个主机双,你可以在数据库主机上执行SQL时这样创建,如下:

CREATE USER 'newuser'@'192.168.0.5' IDENTIFIED BY 'user_password';

这里的192.168.0.5就是数据库允许使用newuser账号来访问的主机IP。

如果要允许任何客户端IP访问数据库,可以通过以下SQL创建:

CREATE USER 'newuser'@'%' IDENTIFIED BY 'user_password';

数据库账号权限分配

数据库创建完成后,我们需要给账号赋权限。数据库常用的权限有以下几种:

  • ALL PRIVILEGES –向用户帐户授予所有特权。
  • CREATE -允许用户帐户创建数据库和表。
  • DROP -允许用户帐户删除数据库和表。
  • DELETE -允许用户帐户从特定表中删除行。
  • INSERT -允许用户帐户将行插入到特定表中。
  • SELECT –允许用户帐户读取数据库。
  • UPDATE -允许用户帐户更新表行。

数据库赋权的SQL语法如下:

GRANT permission1, permission2 ON database_name.table_name TO 'database_user'@'localhost';

通过以下SQL语句可以给账号分配linux265数据库的所有权限。

GRANT ALL PRIVILEGES ON linux265.* TO 'linux265'@'localhost';

更多关于MySQL/MariaDB数据库创建用户赋权操作可以参考如何从命令行管理MySQL数据库和用户

写在最后

本文通过讲解如何安装Apache,PHP,MariaDB指导普通用户搭建自己的LAMP网站运行的服务器环境。如果你需要在Debian10系统上搭建自己的LAMP环境,不妨参考本文内容。

后续我讲讲解如何在搭建好LAMP环境的Debian10服务器上安装WordPress博客程序,敬请期待!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容