如何在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文件中输入以下内容:

在浏览器中输入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博客程序,敬请期待!

你可能感兴趣的:(如何在Debian 10上搭建LAMP环境)