在Debian 9上安装LAMP上的Wordpress

本教程将向您介绍如何在Debian 9 - Stretch中的LAMP之上安装和配置最新版本的WordPress。 Wordpress无疑是最流行的开放源代码内容管理系统或CMS,用于互联网出版,这些日益增长的网络出版全球超过6000万个网站,无论是小博客网站还是名牌巨大的Branded。 基于PHP和MySQL引擎,Wordpress通常与LAMP集合相关联,或者安装在专用服务器或虚拟专用服务器上或共享的网络托管提供商。 LAMP首字母缩略词描述了软件集合,又名软件包,通常由Linux开源内核组成,不管选择的分发, Apache HTTP服务器,由于其稳定性,互联网中最受欢迎的开源Web服务器之一,灵活性和性能, PHP服务器端解释的编程语言和MariaDB关系数据库管理系统(RDBMS)是最受欢迎的数据库软件之一,由原始MySQL开源社区共同开发。

要求:

  • 在虚拟专用服务器或虚拟机上直接安装Debian 9操作系统,或直接在自己专用的裸机上安装。
  • 在VPS或远程服务器或直接控制台访问的情况下,SSH远程访问
  • 至少在服务器上配置的网络接口的静态IP地址
  • 如果网页在互联网上公开可用,您将需要一个注册的公共域名,并配置适当的DNS记录。 在本教程中,我们将使用linuxbox.ml作为示例域,并在主路由器后面的NAT中使用私有空间的静态IP地址。 通过将Apache 80和443端口从路由器端口转发到内部自主虚拟机LAN,可以从互联网访问该域。

第一部分 - 安装LAMP软件包

  1. 在开始安装所有LAMP组件之前,您首先需要执行的操作是登录到Debian 9服务器,并通过发出以下内容为所有系统组件(如内核升级,软件包更新或安全修补程序)执行最新的过程具有root权限的命令。
apt-get update
apt-get upgrade
apt-get dist-upgrade
  1. 在下一步中,您应该通过运行以下命令将主机名变量替换为您自己的描述性名称来设置机器的名称。 请注意,您可能需要重新引导系统才能相应地应用新的主机名。
hostnamectl set-hostname hostname.yourdomain.com
  1. 您还应该安装以下实用程序,以后会出现各种故障排除问题。
apt install net-tools sudo wget curl bash-completion
  1. 在应用机器主机名之后,再次使用root权限登录并安装Apache HTTP服务器,默认情况下,它将预编译为二进制包,并由Debian 9存储库提供。
apt install apache2
  1. 接下来,安装最新版本的PHP语言解释器和Apache Web服务器所需的所有必需模块,以便通过发出以下命令来部署Wordpress CMS。
apt install libapache-mod-php7.0 php7.0 php7.0-gd php7.0-xml php7.0-curl php7.0-mbstring php7.0-mcrypt php7.0-xmlrpc
  1. 为了使LAMP完成,最后一个缺少的组件是MariaDB数据库服务器。 执行以下命令以安装MariaDB服务器以及从Apache HTTP服务器访问数据库所需的PHP模块。
apt install php7.0-mysql mariadb-server mariadb-client

安装MariaDB数据库后,启动守护进程并将数据库保存在正在运行的mysql_secure_installation脚本中,如下面的摘录所示。 主要回答对所有问题的脚本提示你。 另外,请确保为root帐户选择了强密码。 要注意,MySQL root帐号不一样,Linux root帐号。 第一个仅用于管理MariaDB数据库,第二个是每个Linux系统中的超级用户帐户。 这些帐户在系统中从不重叠。

systemctl start mariadb
mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
 
In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
 
Enter current password for root (enter for none):
OK, successfully used password, moving on...
 
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB 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? [Y/n] 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? [Y/n] y
 ... Success!
By default, MariaDB 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? [Y/n] 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? [Y/n] y
 ... Success!
Cleaning up...
All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!

 

  1. 我们还没有完成保护MariaDB数据库。 默认情况下,您可以使用数据库root帐户从localhost登录到MariaDB,而不需要输入密码。 为防止可能出现的安全问题,请使用root用户登录数据库并发出以下命令。
mysql –u root
MariaDB> use mysql;
MariaDB> update user set plugin='' where User='root';
MariaDB> flush privilges;
MariaDB> quit

现在,通过尝试使用root帐户登录没有密码来测试数据库。 您应该被拒绝访问MariaDB数据库。

  1. 在下一步,我们将为Apache Web服务器启用和配置TLS和重写模块,默认情况下禁用这些模块。 运行以下命令启用这两个模块。
a2enmod rewrite ssl
a2ensite default-ssl.conf
  1. 然后,为启用的站点打开Apache配置文件,并在DocumentRoot指令下面添加以下块,如以下屏幕截图所示。
nano /etc/apache2/sites-enabled/000-default.conf
nano /etc/apache2/sites-enabled/default-ssl.conf

在一次编辑的两个配置文件中,添加以下代码块:

    <Directory /var/www/html>
       Options Indexes FollowSymLinks MultiViews
       AllowOverride All
       Require all granted
    </Directory>

  1. 在apache default-ssl.conf TLS配置文件中,您还可以添加以下内容(如果不存在),以便伪造Apache SSL协议的安全性。 这些代码行应该修复常见的SSL漏洞。
SSLProtocol all -SSLv2 -SSLv3
# Add SSL Cipher in one long line
SSLCipherSuite          ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
SSLHonorCipherOrder     on
SSLOptions +StrictRequire
 
Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains"
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff

如果上述摘录中所示的线已经存在于Apache SSL配置文件中,请确保按照上述方式修改它们。 为了应用这些设置,启用Apache 模块并通过执行以下命令重新启动服务:

a2enmod headers
systemctl restart apache2.service

对于生产网站,必须启用Apache TLS模块,因为WordPress CMS主要通过PHP网关生成动态内容,并且还可以处理其内部用户的身份验证过程。 使用TLS技术可确保传输的信息在两端都被加密,并且连接被保护。 第三方或中间人可以拦截流量,但无法解密内容,因为信息不以纯文本形式传送。

  1. 完成上述所有更改后,测试Apache配置以检测潜在的语法错误,如果一切正常,则重新启动LAMP守护程序,以反映迄今为止所做的所有更改,并通过发出以下命令使系统范围内的服务功能成为可能。
apachectl –t
systemctl restart apache2.service mariadb.service
systemctl enable apache2.service mariadb.service

  1. 最后,检查Apache和MariaDB服务是否通过发出netstat命令打开端口,并使用egrep过滤输出现在,Apache Web服务器应该具有通常暴露的端口80和443(对应于http和https协议),而且MariaDB应该是只绑定在本地主机:3306套接字。 对netstat命令使用-n标志来阻止显示服务名称。
netstat -tlp| egrep 'http|mysql'

  1. 要确保您的网络服务器可以通过HTTP和HTTPS协议从互联网访问,请打开浏览器并导航到您的域名。 通过HTTPS协议浏览,浏览器中将显示证书错误。 这是因为Apache默认TLS配置文件配置为使用自签名证书。 您应该接受TLS错误,并继续导航到默认网页,如下所示。

http://www.yourdomain.com

https://www.yourdomain.com

如果您无法从Internet访问您的域默认网页,则应首先验证系统中的某些防火墙规则是否阻止请求,或确保路由器上的正确端口转发到内部LAN,以防服务器位于NAT后面网络。 您可能还想检查域名注册商面板中的DNS记录,并确保它们指向您的WAN IP,并且记录在Internet上完成传播。

  1. 为了测试PHP在服务器端是否正常工作,请在/ var / www / html / system路径中创建PHP php ,该路径是Apache Web服务器的默认Web文件根路径,发出以下命令并导航到以下URI从浏览器获取结果: http//www.yourdomain.com/info.php
echo '<?php phpinfo(); ?>' > /var/www/html/info.php

第二部分 - 安装Wordpress

  1. 现在LAMP已完全配置,Wordpress CMS的安装比较简单。 首先,通过发出以下命令,登录到MariaDB数据库并为Wordpress和具有适当密码安装和管理Wordpress CMS的用户创建一个安装数据库。 随意更换数据库名称和数据库凭据以符合您自己的要求。
mysql –u root -p
CREATE DATABASE wordpress;
GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress-user'@'localhost' IDENTIFIED BY 'wordpress-pass';
FLUSH PRIVILEGES;

  1. 接下来,使用wget实用程序从官方网站下载最新的Wordpress压缩包,并使用tar实用程序提取压缩的归档文件。 通过发出以下命令将安装文件复制到Apache Web服务器文档根路径。 另外,请确保删除默认的index.html网页。
wget http://wordpress.org/latest.tar.gz
tar xfz latest.tar.gz
cp -rf wordpress/* /var/www/html/
rm /var/www/html/index.html

  1. 修改Apache webroot路径的权限,如下所述,以便将Web服务器www-data组的完整写入权限授予安装目录。 此配置将允许Apache Web服务器在此特定系统路径下创建或修改文件和目录。 最重要的是上传目录和.htaccess文件,可用于控制和扩展Apache功能。
chmod –R 775 /var/www/html/
chgrp –R www-data /var/www/html/
ls –al /var/www/html

  1. 现在,一切都到位,让我们开始安装Wordpress。安装过程将从浏览器执行。 打开浏览器并通过HTTPS协议访问您的域。 在安装的第一个屏幕上点击我们去按钮开始安装。

  1. 在下一个安装屏幕中,添加数据库的名称,数据库访问凭据和您之前创建的用于Wordpress安装的数据库主机,并按提交按钮继续。 数据库的配置将保存在/var/www/html/wp-config.php中您可以在稍后的日期手动修改该文件,以进行特殊的Wordpress目的。

  1. 在下一个屏幕上,单击运行安装按钮并填写您的网站标题,网站管理员凭据和电子邮件地址。 应由安装脚本自动生成强密码。 您可以选择保存此密码或提供您自己的强大密码。 完成后,点击安装Wordpress按钮完成安装过程。

  1. 最后,安装成功完成后,使用在安装过程中创建的凭据登录到Wordpress仪表板,并开始管理您自己的网站。

恭喜! 您已经在Debian 9(代号为Stretch)中的LAMP软件包之上成功安装了最新版本的Wordpress CMS。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏