- A+
LAMP堆栈是一种流行的开源Web开发平台,可用于运行和部署动态网站和基于Web的应用程序。通常,LAMP堆栈由Apache Web服务器,MariaDB / MySQL数据库,PHP / Python / Perl编程语言组成。LAMP是L inux 的首字母缩写,MariaDB / MYSQL,PHP / Python / Perl。本教程介绍如何在Ubuntu 18.04 LTS服务器中安装Apache,MySQL,PHP(LAMP堆栈)。
在Ubuntu 18.04 LTS上安装Apache,MySQL,PHP(LAMP)
出于本教程的目的,我们将使用以下Ubuntu测试框。
- 操作系统:Ubuntu 18.04.1 LTS服务器版
- IP地址:192.168.225.22/24
1.安装Apache Web服务器
首先,使用命令更新Ubuntu服务器:
$ sudo apt update
$ sudo apt upgrade
接下来,安装Apache Web服务器:
$ sudo apt install apache2
检查Apache Web服务器是否正在运行:
$ sudo systemctl status apache2
示例输出将是:
● apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: en Drop-In: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf Active: active (running) since Tue 2019-02-05 10:48:03 UTC; 1min 5s ago Main PID: 2025 (apache2) Tasks: 55 (limit: 2320) CGroup: /system.slice/apache2.service ├─2025 /usr/sbin/apache2 -k start ├─2027 /usr/sbin/apache2 -k start └─2028 /usr/sbin/apache2 -k start Feb 05 10:48:02 ubuntuserver systemd[1]: Starting The Apache HTTP Server... Feb 05 10:48:03 ubuntuserver apachectl[2003]: AH00558: apache2: Could not reliably Feb 05 10:48:03 ubuntuserver systemd[1]: Started The Apache HTTP Server.
恭喜!Apache服务启动并运行!!
1.1调整防火墙以允许APACHE WEB服务器
默认情况下,如果在Ubuntu 18.04 LTS中启用了UFW防火墙,则无法从远程系统访问apache Web浏览器。您必须按照以下步骤允许http和https端口。
首先,使用命令列出Ubuntu系统上可用的应用程序配置文件:
$ sudo ufw app list
输出
Available applications: Apache Apache Full Apache Secure OpenSSH
如您所见,Apache和OpenSSH应用程序已安装UFW配置文件。您可以使用“ ufw app info”“配置文件名称”命令列出有关每个配置文件及其包含规则的信息。
让我们看看“Apache Full”配置文件。为此,请运行:
$ sudo ufw app info "Apache Full"
样本输出:
Profile: Apache Full Title: Web Server (HTTP,HTTPS) Description: Apache v2 is the next generation of the omnipresent Apache web server. Ports: 80,443/tcp
如您所见,“Apache Full”配置文件包含了启用端口80和443流量的规则:
现在,运行以下命令以允许此配置文件的传入HTTP和HTTPS流量:
$ sudo ufw allow in "Apache Full" Rules updated Rules updated (v6)
如果您不想允许https流量,但只允许http(80)流量,请运行:
$ sudo ufw app info "Apache"
1.2测试APACHE WEB服务器
现在,打开Web浏览器并通过导航到 http://localhost/ 或者http://IP-Address/.
如果您看到类似上面的屏幕,那么您很高兴。Apache服务器正在运行!
2.安装MySQL
要在Ubuntu上安装MySQL,请运行:
$ sudo apt install mysql-server
使用命令验证MySQL服务是否正在运行:
$ sudo systemctl status mysql
样本输出:
● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enab Active: active (running) since Tue 2019-02-05 11:07:50 UTC; 17s ago Main PID: 3423 (mysqld) Tasks: 27 (limit: 2320) CGroup: /system.slice/mysql.service └─3423 /usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid Feb 05 11:07:49 ubuntuserver systemd[1]: Starting MySQL Community Server... Feb 05 11:07:50 ubuntuserver systemd[1]: Started MySQL Community Server.
Mysql正在运行!
2.1设置数据库管理用户(ROOT)密码
默认情况下,MySQL root用户密码为空。您需要通过运行以下脚本来保护MySQL服务器:
$ sudo mysql_secure_installation
系统将询问您是否要设置VALIDATE PASSWORD插件。此插件允许用户为数据库凭据配置强密码。如果启用,它将自动检查密码的强度,并强制用户仅设置足够安全的密码。将此插件禁用是安全的。但是,您必须为数据库凭据使用强大且唯一的密码。如果不想启用此插件,只需按任意键即可跳过密码验证部分并继续执行其余步骤。
如果您的答案为是,则会要求您选择密码验证级别。
Securing the MySQL server deployment. Connecting to MySQL using a blank password. VALIDATE PASSWORD PLUGIN can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD plugin? Press y|Y for Yes, any other key for No y
可用的密码验证是低,中和强。只需输入相应的数字(0表示低,1表示中等,2表示强密码),然后按ENTER键。
There are three levels of password validation policy: LOW Length >= 8 MEDIUM Length >= 8, numeric, mixed case, and special characters STRONG Length >= 8, numeric, mixed case, special characters and dictionary file Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:
现在,输入MySQL root用户的密码。请注意,必须使用mysql root用户的密码,具体取决于您在上一步中选择的密码策略。如果您没有启用该插件,只需使用您选择的任何强大且唯一的密码。
Please set the password for root here. New password: Re-enter new password: Estimated strength of the password: 50 Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
一旦您输入密码两次,您将看到密码强度(在我们的例子中它是50)。如果可以,请按Y继续提供的密码。如果对密码长度不满意,请按任意其他键并设置强密码。我现在的密码没问题,所以我选择了y。
对于其他问题,只需键入y并按Enter键。这将删除匿名用户,禁止root用户远程登录并删除测试数据库。
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y Success. Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y Success. By default, MySQL comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y - Dropping test database... Success. - Removing privileges on test database... Success. Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y Success. All done!
而已。已设置MySQL root用户的密码。
2.2修改MYSQL ROOT用户的认证方式
默认情况下,MySQL root用户设置为使用MySQL 5.7中的auth_socket插件和Ubuntu上的较新版本进行身份验证。即使它增强了安全性,当您使用任何外部程序(例如phpMyAdmin)访问数据库服务器时,它也会使事情变得复杂。要解决此问题,您需要将身份验证方法从auth_socket更改为mysql_native_password。为此,请使用以下命令登录MySQL提示符:
$ sudo mysql
在mysql提示符下运行以下命令,查找所有mysql用户帐户的当前身份验证方法:
SELECT user,authentication_string,plugin,host FROM mysql.user;
样本输出:
+------------------+-------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+-------------------------------------------+-----------------------+-----------+ | root | | auth_socket | localhost | | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | debian-sys-maint | *F126737722832701DD3979741508F05FA71E5BA0 | mysql_native_password | localhost | +------------------+-------------------------------------------+-----------------------+-----------+ 4 rows in set (0.00 sec)
如您所见,mysql root用户使用auth_socket
插件进行身份验证。
要将此身份验证更改为mysql_native_password方法,请在mysql提示符处运行以下命令。不要忘记用您选择的强大且唯一的密码替换“密码”。如果您启用了VALIDATION插件,请确保根据当前的策略要求使用了强密码。
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
使用命令更新更改:
FLUSH PRIVILEGES;
现在再次检查是否使用命令更改了身份验证方法:
SELECT user,authentication_string,plugin,host FROM mysql.user;
Sample output:
好!现在,myql root用户可以使用密码进行身份验证来访问mysql shell。
退出mysql提示符:
exit
3.安装PHP
要安装PHP,请运行:
$ sudo apt install php libapache2-mod-php php-mysql
安装PHP后,在Apache根文档文件夹中创建info.php文件。通常,在大多数基于Debian的Linux发行版中,apache根文档文件夹将是 /var/www/html /或 /var/www/。在Ubuntu 18.04 LTS中,它是 /var/www/html/。
让我们在apache根文件夹中创建info.php文件:
$ sudo vi /var/www/html/info.php
添加以下行:
<?php phpinfo(); ?>
按ESC键并键入:wq以保存并退出文件。重启apache服务以使更改生效。
$ sudo systemctl restart apache2
3.1测试PHP
打开Web浏览器并导航到http://IP-address/info.php URL。
你现在将看到php测试页面。
通常,当用户从Web服务器请求目录时,Apache将首先查找名为index.html的文件。如果要更改Apache以提供php文件而不是其他文件,请将index.php移动到dir.conf文件中的第一个位置,如下所示
$ sudo vi /etc/apache2/mods-enabled/dir.conf
以下是上述文件的内容。
<IfModule mod_dir.c> DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm </IfModule> # vim: syntax=apache ts=4 sw=4 sts=4 sr noet
将“index.php”文件移到第一个位置。完成更改后,dir.conf文件将如下所示。
<IfModule mod_dir.c> DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm </IfModule> # vim: syntax=apache ts=4 sw=4 sts=4 sr noet
按ESC键并键入:wq以保存并关闭文件。重新启动Apache服务以使更改生效。
$ sudo systemctl restart apache2
3.2安装PHP模块
要改进PHP的功能,您可以安装一些额外的PHP模块。
要列出可用的PHP模块,请运行:
$ sudo apt-cache search php- | less
Sample output:
使用箭头键查看结果。要退出,请键入q并按Enter键。
要查找任何特定php模块的详细信息,例如php-gd,请运行:
$ sudo apt-cache show php-gd
要安装php模块,请运行:
$ sudo apt install php-gd
要安装所有模块(尽管不是必需的),请运行:
$ sudo apt-get install php*
安装任何php模块后别忘了重启Apache服务。要检查模块是否已加载,请在浏览器中打开info.php文件并检查它是否存在。
- 安卓客户端下载
- 微信扫一扫
- 微信公众号
- 微信公众号扫一扫