如何在 Ubuntu 18.04 上安裝 LAMP

在本教程中,我將解釋如何在我們最新的 Ubuntu 18.04 服務器上使用 WordPress 安裝 LAMP 堆棧。 LAMP 代表 Linux-Apache-MySQL-PHP。 它是一組免費軟件,可以安裝在一起以構建服務器來託管動態的、數據庫驅動的網站和 Web 應用程序。 它使用Linux作為操作系統, Apache MySQL作為Web服務器,關係數據庫管理系統存儲站點數據,PHP處理動態內容。

使用 Ubuntu/Debian 開發的“tasksel”工具安裝 LAMP 服務器有另一種簡單的方法。 但在本教程中,我將手動安裝每個包。

安裝 Apache

所有最新版本 Apache, Mysql 和 PHP 存在於服務器存儲庫本身中。 因此,我們可以使用我們的包管理器 apt 安裝所有包,而無需任何第三方存儲庫。 您可以安裝 Apache 通過在下面運行此命令:

#apt-get update
#apt install apache2

我們需要確保使用 systemctl 命令啟用並啟動此服務:

#systemctl enable apache2
#systemctl start apache2

我們已經安裝了最新的 Apache 我們服務器中的 2.4.29 版本。 接下來,我們可以驗證 Apache 安裝版本並通過在瀏覽器中訪問服務器IP來測試它的工作,就像這樣 >> https://Server-IP/

優化網絡服務器性能

請按照以下步驟優化您的 Web 服務器性能。

1.優化 Apache 指令

以最少的可用資源確保服務器性能始終很重要。 KeepAlive 是一個 apache 指令,它允許 Apache 利用服務器端內存,減少託管站點上用戶的延遲。 它提供長期存在的 HTTP 會話,允許通過同一個 TCP 連接發送多個請求。 如果主機有足夠的內存來支持它,KeepAlive 將使網站更快。 MaxKeepAliveRequests 和 KeepAliveTimeout 與此指令相得益彰。

MaxKeepAliveRequests 設置控制持久連接期間的最大請求數。 50 是一個保守的數額; 我們可以根據我們的網絡流量將這個數字設置得更高。 KeepAliveTimeout 控制服務器等待來自已連接客戶端的新請求的時間,將此選項設置為 5 將避免浪費 RAM。 它的值越高,在重載服務器中導致性能問題的可能性就越大。 超時時間越長,等待與空閒客戶端連接的服務器進程就越多。

考慮到這些指令,我優化了我的默認設置 Apache 位於 /etc/apache2/apache.conf 的配置文件使用這些值來增強我的 Web 服務器性能(您需要根據您的要求進行調整)。

KeepAlive On
MaxKeepAliveRequests 50
KeepAliveTimeout 5

2. 選擇 MPM 模塊

Apache 2 介紹了多處理模塊或 MPM。 Prefork、Worker 和 Event 是三個推薦的可用 MPM。 默認情況下, Apache 選擇 prefork MPM。 由於 LAMP 堆棧需要 PHP,因此最好堅持使用默認值。 您可以通過在命令行上運行以下命令來確定當前的 MPM 狀態。

注意:您需要根據服務器性能和 Web 服務器請求調整這些值

# apache2 -V |grep -i 'version|mpm'
Server version: Apache/2.4.29 (Ubuntu)
Server MPM: prefork

打開位於 /etc/apache2/mods-available 的 mpm_prefork.conf 文件並編輯配置。

# cat /etc/apache2/mods-available/mpm_prefork.conf
# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# MaxRequestWorkers: maximum number of server processes allowed to start
# MaxConnectionsPerChild: maximum number of requests a server process serves

<IfModule mpm_prefork_module>
StartServers 4
MinSpareServers 3
MaxSpareServers 40
MaxRequestWorkers 200
MaxConnectionsPerChild 10000
</IfModule>

PS:您甚至可以根據您的託管要求使用這些命令在 MPM 之間切換。

#a2dismod mpm_event
#a2enmod mpm_prefork

3.重啟 Apache 服務

總是建議重新啟動 Apache 服務在對其配置進行任何更改以使更改生效之後。 因此,在進行上述更改後,請確保重新啟動 Apache 服務。

#systemctl restart apache2

安裝 MySQL

其次,我們需要安裝我們的數據庫服務器。 我已經在我的服務器上安裝了 MySQL 5.7.22。 您可以通過運行以下命令來安裝可用的最新版本:

#apt install mysql-server
# mysql -V
mysql Ver 14.14 Distrib 5.7.22, for Linux (x86_64) using EditLine wrapper

啟動/啟用 MySQL 服務並檢查其狀態。

# systemctl enable mysql
Synchronizing state of mysql.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable mysql
# systemctl start mysql
# systemctl status mysql

接下來,您需要運行安裝附帶的安全腳本來保護您的數據庫服務器。 您可以運行以下命令來保護 MySQL 數據庫並設置 root 密碼:

# mysql_secure_installation

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

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: 2
Please set the password for root here.

New password:
Re-enter new password:

Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y
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

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!

如您所見,在此安全安裝階段,它會提示您設置 PASSWORD PLUGIN. 出於安全原因,我絕對會建議您選擇強密碼級別繼續。 完成後,您可以設置管理密碼。 其餘問題,您可以輸入 y 為了 yes 這將刪除匿名用戶和測試數據庫,禁用遠程 root 登錄,並立即使用這些新規則重新加載權限表。

安裝 PHP

PHP 是我們的腳本語言,它處理代碼以顯示動態內容。 基本上,它運行域腳本,連接到它們各自的數據庫並將內容提供給您的 Web 服務器以顯示。 要安裝最新的 PHP 及其一些重要模塊,請從終端使用以下命令:

#apt install php libapache2-mod-php php-mysql
# php -v
PHP 7.2.3-1ubuntu1 (cli) (built: Mar 14 2018 22:03:58) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.3-1ubuntu1, Copyright (c) 1999-2018, by Zend Technologies
# systemctl restart apache2

我已經在我的服務器上安裝了 PHP 7.2.3。 您可以使用上述命令從命令行確認它的版本。 還有許多其他 PHP 模塊可用於增強 PHP 的功能。 要查看可用的模塊 PHP 模塊列表和庫,請通過管道傳輸結果 apt search into less,一個尋呼機,可讓您滾動查看命令的輸出:

#apt search php- | less

您可以使用箭頭鍵上下滾動,然後按 q 退出。 要顯示有關每個模塊的更多信息,可以使用命令 apt show package_name. 為了 example, 了解更多關於使用 PHP-bz2 模塊,你可以輸入如下:

# apt show php7.2-bz2
Package: php7.2-bz2
Version: 7.2.3-1ubuntu1
Priority: optional
Section: universe/php
Source: php7.2
Origin: Ubuntu
Maintainer: Ubuntu Developers <[email protected]>
Original-Maintainer: Debian PHP Maintainers <[email protected]>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 52.2 kB
Provides: php-bz2
Depends: php-common (>= 1:35), ucf, php7.2-common (= 7.2.3-1ubuntu1), libbz2-1.0, libc6 (>= 2.14)
Homepage: https://www.php.net/
Download-Size: 10.2 kB
APT-Sources: https://mirrors.linode.com/ubuntu bionic/universe amd64 Packages
Description: bzip2 module for PHP
This package provides the bzip2 module(s) for PHP.
.
PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
open source general-purpose scripting language that is especially suited
for web development and can be embedded into HTML.

描述部分簡要解釋了這個模塊的用途。 根據您的要求,您可以選擇所需的模塊包並使用命令進行安裝apt install.

你需要重新啟動 Apache 使這些改變生效。 現在您可以在域文檔根目錄下創建一個 PHP 信息頁面來確認其版本和模塊列表。

# cd /var/www/html
#echo "<?php phpinfo(); ?>" >> info.php

你可以瀏覽網址 https://ServerIP/info.php 以確認它的工作。

我們已經在 Ubuntu 18 上成功完成了 LAMP 堆棧的安裝。現在,是時候設置我們的 WordPress 博客了。 讓我們按照以下步驟安裝 WordPress:

安裝 WordPress

您可以從他們的網站下載最新的 WordPress 下載 官方網站 並將其解壓到文檔根目錄 /var/www/html 安裝它。

# apt install wget
# wget https://wordpress.org/latest.tar.gz
# tar -xvf latest.tar.gz -C /var/www/html/

為 WordPress 創建 MySQL 數據庫

接下來,我們需要為我們的 WordPress 安裝創建一個數據庫和用戶,為此,運行以下命令:

# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 6
Server version: 5.7.22-0ubuntu18.04.1 (Ubuntu)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

mysql> create database wpdatabase;
Query OK, 1 row affected (0.00 sec)

mysql> CREATE USER 'wpuser'@'localhost' IDENTIFIED BY '9RYiZ1fca$#RBrvaFpxwL&TYY';
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT ALL ON wpdatabase.* TO 'wpuser'@'localhost';
Query OK, 0 rows affected (0.00 sec)

我們已經連接到 MySQL shell 並創建了一個名為的數據庫 "wpdatabase" 與用戶 "wpuser" 用於 WordPress 安裝。 接下來,您需要創建 wp-config.php 從模板 wp-config-sample.php 文件並使用我們創建的配置文件中的 MySQL 設置來開始我們的安裝。

#cd /var/www/html/wordpress/
#cp wp-config-sample.php wp-config.php

我已經使用我創建的數據庫詳細信息修改了文件設置。

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'wpdatabase');

/** MySQL database username */
define('DB_USER', 'wpuser');

/** MySQL database password */
define('DB_PASSWORD', '9RYiZ1fca$#RBrvaFpxwL&TYY');

/** MySQL hostname */
define('DB_HOST', 'localhost');

配置虛擬主機

我們可以為我們的 WordPress 網站設置虛擬主機,如下所示。 默認情況下, Apache 偵聽所有可用的 IP 地址。 對於以下所有步驟,替換 example.com 與您的域名。 我用我的域名 mywordpressblog.com 替換它。

1. 創建一個默認的副本 Apache 您站點的配置文件:

cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/mywordpressblog.com.conf

2.通過取消註釋ServerName並替換來編輯新的mywordpressblog.com.conf配置文件 example.com 與您站點的 IP 或完全限定域名 (FQDN)。 就我而言,我已替換為 www.mywordpressblog.com。 Enter 文檔根路徑和日誌目錄如下圖,並在前添加一個Directory塊如下:

# cat mywordpressblog.com.conf

<Directory /var/www/html/wordpress>
Require all granted
</Directory>
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
ServerName www.mywordpressblog.com

ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/wordpress

# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn

ErrorLog /var/www/html/mywordpressblog.com/error.log
CustomLog /var/www/html/mywordpressblog.com/access.log combined

# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>

3.創建配置文件中引用的目錄:

# mkdir -p /var/www/html/mywordpressblog.com/
# touch /var/www/html/mywordpressblog.com/access.log
# touch /var/www/html/mywordpressblog.com/error.log

4. 將您的虛擬主機文件從sites-available 目錄鏈接到sites-enabled 目錄並禁用默認虛擬主機以最大程度地降低安全風險:

# a2ensite mywordpressblog.com.conf
# a2dissite 000-default.conf

5.重新加載 Apache 進行這些更改後。

# systemctl reload apache2

現在您可以瀏覽以下網址 >> https://mywordpressblog.com/ 完成我們的安裝。

您可以設置管理員憑據和站點標題以完成安裝階段。 最後,您可以訪問您的 admin 區域瀏覽網址 https://mywordpressblog.com/wp-login.php 使用創建的憑據。

就這樣! 您已經在 Ubuntu 18.04 服務器上成功安裝了 WordPress。 現在您可以繼續根據您的要求自定義您的 WordPress 博客。

結論

在本教程中,我們傾向於使用 Ubuntu 18.04 構建您的 LAMP 堆棧並在其上安裝 WordPress(安裝 wp-cli)博客。 希望您喜歡閱讀,請在下面的評論部分留下您的建議。

另請閱讀:

  • 如何在 Windows 10 上安裝 Ubuntu 18.04 雙啟動