Ubuntu 16.04(LTS)系统安装LAMP服务器教程,包括Apache、PHP 7和MySQL

LAMP是Linux、Apache、MySQL、PHP的缩写。本教程展示了如何在支持PHP 7(mod_PHP)和MySQL/MariaDB的Ubuntu 16.04 LTS(Xenial Xerus)服务器上安装Apache web服务器,以及如何使用Let’s encrypt设置SSL证书。此外,我将安装PHPMyAdmin,使MySQL管理更容易。LAMP设置是Joomla、Wordpress或Drupal等流行CMS系统的完美基础。

初步说明
在本教程中,我将使用主机名server1.example.com和IP地址192.168.1.100。这些设置可能因您而异,因此您必须在适当的情况下进行替换。

我建议使用最小的Ubuntu服务器设置作为教程的基础,可以是虚拟或根服务器映像,从网络托管公司安装Ubuntu 16.04最小安装,也可以使用我们的最小服务器教程从头开始安装服务器。

我以root权限运行本教程中的所有步骤,因此请确保您以root身份登录:

sudo su

1.安装MySQL或MariaDB数据库
目前有两种广泛使用的MySQL数据库系统可供选择,一种是经典的“MySQL”服务器,由Oracle开发,现在有5.7版本,另一种是MySQL分支MariaDB,由原始MySQL开发人员Monty Widenius开发。

我将在下面向您展示如何安装这两个替代方案。只需遵循第1.1章或第1.2章,而不是两者都遵循。我将使用MySQL 5.7作为虚拟机映像,可以从Howtoforge下载。

1.1安装MySQL 5.7
要安装MySQL 5.7,请执行以下命令:

apt-get -y install mysql-server mysql-client

mysql-server和mysql-client软件包被称为“元软件包”,它们始终安装Ubuntu提供的最新mysql版本。

在安装过程中,我们已经为MySQL设置了根密码,但出于安全原因,我想删除匿名用户并测试数据库。运行下面的mysql_secure_installation命令来实现这一点。

mysql_secure_installation

您将被问到以下问题:

Securing the MySQL server deployment.
Enter password for user root: <-- Enter the MySQL root 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:
Using existing password for root.
Change the password for root ? ((Press y|Y for Yes, any other key for No) : <-- Choose 'y' here if you like to enable the password validation, I don't need that function, so I choose 'n' here.
... skipping.
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.
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设置现已安全。

1.2安装MariaDB 10
运行以下命令安装MariaDB服务器和客户端:

apt-get -y install mariadb-server mariadb-client

现在我们为MariaDB设置一个根密码。

mysql_secure_installation

您将被问到以下问题:

Enter current password for root (enter for none): <-- press enter
Set root password? [Y/n] <-- y
New password: <-- Enter the new MariaDB root password here
Re-enter new password: <-- Repeat the password
Remove anonymous users? [Y/n] <-- y
Disallow root login remotely? [Y/n] <-- y
Reload privilege tables now? [Y/n] <-- y

使用“mysql命令”测试MariaDB的登录

mysql -u root -p

然后输入您在上面设置的MariaDB根密码。结果应与下图相似:

图片[1]_Ubuntu 16.04(LTS)系统安装LAMP服务器教程,包括Apache、PHP 7和MySQL_马特资源网

要离开MariaDB shell,请输入命令“quit”并按enter键。

2.安装Apache Web服务器
Apache 2作为Ubuntu软件包提供,因此我们可以这样安装它:

apt-get -y install apache2

现在将浏览器定向到http://192.168.1.100,您应该看到Apache2默认页面(它有效!):

图片[2]_Ubuntu 16.04(LTS)系统安装LAMP服务器教程,包括Apache、PHP 7和MySQL_马特资源网

Ubuntu上apache默认vhost的文档根是/var/www/html,主配置文件是/etc/apache2/apache2.conf。配置系统完整记录在/usr/share/doc/apache2/README中。Debian.gz。

3.安装PHP 7
我们可以按如下方式安装PHP 7和Apache PHP模块:

apt-get -y install php7.0 libapache2-mod-php7.0

然后重新启动Apache:

systemctl restart apache2

4.测试PHP并获取有关PHP安装的详细信息
默认网站的文档根是/var/www/html。我们现在将在该目录中创建一个小的PHP文件(info.PHP),并在浏览器中调用它。该文件将显示有关我们的PHP安装的许多有用的详细信息,例如安装的PHP版本。

nano /var/www/html/info.php
<?php
phpinfo();
?>

然后将info.php文件的所有者更改为www数据用户和组。

chown www-data:www-data /var/www/html/info.php

现在我们在浏览器中调用该文件(例如。http://192.168.1.100/info.php):

图片[3]_Ubuntu 16.04(LTS)系统安装LAMP服务器教程,包括Apache、PHP 7和MySQL_马特资源网

正如您所看到的,PHP7.0正在工作,它正在通过Apache2.0Handler工作,如Serverneneneba API行所示。如果您进一步向下滚动,您将看到PHP5中已启用的所有模块。MySQL没有列出,这意味着我们还没有在PHP中支持MySQL/MariaDB。

5.在PHP中获得MySQL/MariaDB支持
要在PHP中获得MySQL支持,我们可以安装php7.0-MySQL包。安装一些其他PHP模块是个好主意,因为你的应用程序可能需要它们。你可以像这样搜索可用的PHP模块:

apt-cache search php7.0

选择你需要的,然后这样安装:

apt-get -y install php7.0-mysql php7.0-curl php7.0-gd php7.0-intl php-pear php-imagick php7.0-imap php7.0-mcrypt php-memcache  php7.0-pspell php7.0-recode php7.0-sqlite3 php7.0-tidy php7.0-xmlrpc php7.0-xsl php7.0-mbstring php-gettext

现在重新启动Apache2:

systemctl restart apache2
图片[4]_Ubuntu 16.04(LTS)系统安装LAMP服务器教程,包括Apache、PHP 7和MySQL_马特资源网

PHP 7现在支持MySQL/MariaDB,如上面的phpinfo()所示。

6.安装Opcache+APCu PHP缓存以加速PHP
PHP 7附带了一个内置的操作码缓存器,用于缓存和优化PHP中间代码,它的名字是“opcache”,可以在php7.0-opcache包中找到。强烈建议安装Opcache以加快PHP页面的速度。除了opcache,我还将安装APCu,它是opcache的兼容性包装器,提供APC缓存的功能,APC缓存是PHP 5.x版本中常用的缓存系统,许多CMS系统仍在使用它。

Opcache和APCu的安装方式如下:

apt-get -y install php7.0-opcache php-apcu

如果它显示Opcache已安装,请不要担心。

现在重新启动Apache:

systemctl restart apache2

现在重新加载http://192.168.1.100/info.php在浏览器中,再次向下滚动到模块部分。现在,您应该可以在那里找到许多新模块:

图片[5]_Ubuntu 16.04(LTS)系统安装LAMP服务器教程,包括Apache、PHP 7和MySQL_马特资源网

当您不再需要info.php文件时,请不要忘记删除它,因为它提供了服务器的敏感细节。运行以下命令删除文件。

rm -f /var/www/html/info.php

7.在apache中启用SSL网站
SSL/TLS是一个安全层,用于加密web浏览器和服务器之间的连接。今天,当服务器和网络浏览器之间的连接没有使用SSL加密时,大多数网络浏览器开始显示网站不安全。在本章中,我将向您展示如何使用SSL保护您的网站。

在服务器上执行以下命令以启用SSL(https://)支持。运行:

a2enmod ssl
a2ensite default-ssl

这将启用SSL模块,并将/etc/apache2/sites-enabled文件夹中的符号链接添加到/etc/apache2/site available/default-SSL.conf文件中,以将其包含在活动apache配置中。然后重新启动apache以启用新配置:

systemctl restart apache2

现在通过打开来测试SSL连接https://192.168.1.100在网络浏览器中。

图片[6]_Ubuntu 16.04(LTS)系统安装LAMP服务器教程,包括Apache、PHP 7和MySQL_马特资源网

您将收到SSL警告,因为服务器的SSL证书是“自签名”SSL证书,这意味着默认情况下浏览器不信任此证书,您必须首先接受安全警告。接受警告后,您将看到apache默认页面。

图片[7]_Ubuntu 16.04(LTS)系统安装LAMP服务器教程,包括Apache、PHP 7和MySQL_马特资源网

浏览器中URL前关闭的“绿锁”表示连接已加密。

有两种方法可以消除SSL警告,要么用从SSL权威机构购买的正式签名的SSL证书替换自签名的SSL凭证/etc/SSL/certs/SSL-cert-snakoil.pem,要么从Let’s encrypt获得免费的SSL证书,我将在第8章中对此进行描述。

8.从Let’s Encrypt获得免费SSL证书
使用Let’s Encrypt SSL证书保护网站的第一步是安装python letsencrypt apache包。运行以下命令:

apt-get -y install python-letsencrypt-apache

在下一步中,我们将向Let’s Encrypt请求SSL证书。在此过程中,Let’s Encrypt服务器会尝试通过您提供给letsencrypt命令的域名连接到您的服务器。重要的是,此域名已经指向DNS中的服务器,这样网站就可以通过端口80(http)上的域名访问。如果无法从互联网访问该网站,则创建Let’s Encrypt SSL证书将失败。

在开始创建SSL证书之前,请在vhost配置文件中设置域名。使用编辑器打开默认的vhost文件:

nano /etc/apache2/sites-available/000-default.conf

并添加以下行:

ServerName example.com

就在“DocumentRoot”行的正下方。将example.com替换为您自己网站的域名。

然后使用以下命令创建SSL证书:

letsencrypt --apache -d example.com

在此处再次将example.com替换为您的域名。该命令将启动一个向导,询问您几个问题。

输入负责此网站的管理员可以联系到的电子邮件地址。

图片[8]_Ubuntu 16.04(LTS)系统安装LAMP服务器教程,包括Apache、PHP 7和MySQL_马特资源网

接受Let’s Encrypt SSL授权的条款和条件。

图片[9]_Ubuntu 16.04(LTS)系统安装LAMP服务器教程,包括Apache、PHP 7和MySQL_马特资源网

选择是否要自动将非SSL请求重定向到https://。当网站以http://和https://版本提供时,我将在此处选择“是”以避免重复内容问题。

图片[10]_Ubuntu 16.04(LTS)系统安装LAMP服务器教程,包括Apache、PHP 7和MySQL_马特资源网

SSL证书已成功颁发。

图片[11]_Ubuntu 16.04(LTS)系统安装LAMP服务器教程,包括Apache、PHP 7和MySQL_马特资源网

当您现在使用浏览器访问网站时,您将自动重定向到SSL,浏览器URL栏前的绿色锁显示我们现在正在使用受信任的SSL证书。

图片[12]_Ubuntu 16.04(LTS)系统安装LAMP服务器教程,包括Apache、PHP 7和MySQL_马特资源网

8.1让我们加密自动续订
Let’s Encrypt SSL证书的有效期仅为80天。因此,我们现在将设置一个cronjob,以便在必要时自动续订SSL证书。命令是“letsencrypt renew”。

为LE自动续订设置cronjob。运行:

crontab -e

在编辑器中打开根crontab。在文件末尾插入以下行:

0 1 * * * /usr/bin/letsencrypt renew &> /dev/null

保存文件,这将激活cronjob。此cronjob将在每晚凌晨1点调用Let’s Encrypt续订命令。该命令仅在必要时(到期前30天)续订SSL证书,每晚运行它没有问题。

9.安装phpMyAdmin
phpMyAdmin是一个web界面,您可以通过它管理MySQL数据库。安装它是个好主意:

apt-get -y install phpmyadmin

重要提示:apt安装程序现在会问你几个问题,其中之一是选择web服务器类型。一个常见的错误是,web服务器类型只是突出显示,而没有被选中。要在apt菜单中选择一个项目,您必须在用tab键或光标键导航到该项目后按键盘上的空格键。仅仅强调它是不够的!

您将看到以下问题:

Web server to configure automatically: <-- Select the option: apache2
Configure database for phpmyadmin with dbconfig-common? <-- Yes
MySQL application password for phpmyadmin: <-- Press enter, apt will create a random password automatically.

9.1使用MariaDB对PHPMyAdmin进行Root访问
以下步骤仅适用于MariaDB安装,如果您使用MySQL 5.7,则跳过此步骤。

MariaDB默认为root用户启用一个名为“unix_socket”的插件,此插件可防止root用户登录PHPMyAdmin,并防止与MySQL的TCP连接对root用户有效。为了让一个用户有权在PHPMyAdmin中创建其他用户和数据库,我将创建一个名为“admin”的MySQL新用户,其权限与root用户相同。

在shell上以root用户身份登录MySQL数据库:

mysql -u root

创建一个名为“admin”、密码为“howtoforge”的新用户。在下面的命令中将密码“howtoforge”替换为安全密码!

CREATE USER 'admin'@'localhost' IDENTIFIED BY 'howtoforge';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit

之后,您可以在下面访问phpMyAdminhttp://192.168.1.100/phpmyadmin/:

图片[13]_Ubuntu 16.04(LTS)系统安装LAMP服务器教程,包括Apache、PHP 7和MySQL_马特资源网
图片[14]_Ubuntu 16.04(LTS)系统安装LAMP服务器教程,包括Apache、PHP 7和MySQL_马特资源网

10本教程的虚拟机镜像下载
本教程提供与VMWare和Virtualbox兼容的ovf/ova格式的即用型虚拟机映像。虚拟机映像使用以下登录详细信息:

SSH/Shell登录

用户名:administrator
密码:howtoforge

此用户具有sudo权限。

MySQL登录

用户名:root
密码:howtoforge

VM的IP是192.168.1.100,可以在/etc/network/interface文件中更改。请更改上述所有密码以保护虚拟机。

11链接

Apache: http://httpd.apache.org/
PHP: http://www.php.net/
MySQL: http://www.mysql.com/
MariaDB: https://mariadb.com/
Ubuntu: http://www.ubuntu.com/
phpMyAdmin: http://www.phpmyadmin.net/
© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容