目前,很多网站都以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博客程序,敬请期待!