web-dev-qa-db-ja.com

Apache 2をインストールおよび設定する方法

Apache2、php、mysqlをインストールして仮想ホストでセットアップし、できればSSL証明書を暗号化してからWordpressをインストールする方法を教えてください。

3
vidarlo

Ubuntuが実行されていると仮定します。これは16.04を念頭に置いて書かれていますが、他のバージョンの一部の適応でも機能するはずです。

この回答では、#はルートシェルを示し、$は通常のユーザーシェルを示します。

example.orgはこの回答の例(D'oh)として使用されており、インストールに合わせて変更する必要があります。

Apache2、PHP、MariaDBなどのインストール

$ Sudo apt install Apache2 libapache2-mod-php mariadb-server php-mysql

これにより、mysqlにアクセスするためのPHPバインディングに加えて、Apache2、PHP、MariaDB、およびいくつかの依存関係がインストールされます。

この段階で、 http://example.org にアクセスでき、デフォルトページが表示されるはずです: Default page

仮想ホストのセットアップ

仮想ホストは仮想ホストであり、ドメイン名ごとに異なるコンテンツを提供するために使用されます。

お気に入りのエディターで/etc/Apache2/sites-available/01-example.org.confという新しいファイルの編集を開始します。

$ Sudo editor /etc/Apache2/sites-available/01-example.org.conf 

次の構成を入力します。

<VirtualHost *:80>
        ServerName example.org
        ServerAlias www.example.org
        ServerAdmin [email protected]
        DocumentRoot /var/www/html/example.org/
        ErrorLog ${Apache_LOG_DIR}/example.org.error.log
        CustomLog ${Apache_LOG_DIR}/example.org.access.log combined
</VirtualHost>

最初に、プライマリServerNameを定義します。これは、サイトへのアクセスに使用されるドメインです。 vhostごとに定義できるのは1つだけです。さらに、誰かがブラウザにwww.example.orgを入力した場合に備えて、ServerAliasを定義します。これにより、Apacheが両方の名前に確実に応答します。どちらの名前も、DNSまたはローカルテスト用の/etc/hostsのいずれかのサーバーを指している必要があります。

サーバーエイリアスはいくつでも指定でき、ServerNameの一部を含める必要はありません。したがって、ServerAlias example.comは有効です。

新しいDocumentRootを作成します

新しいドキュメントルートを/var/www/html/example.orgに配置しました。これは、UbuntuでApacheがサービスを提供できる場所です。たとえば、/srv/に配置した場合、そのディレクトリスタンザを含める必要があります。とりあえず、webrootを作成し、コンテンツを入力して、新しい構成をアクティブにします。

$ Sudo mkdir /var/www/html/example.org
$ echo "This is a test" | Sudo tee /var/www/html/example.org/index.html
$ Sudo a2ensite 01-example.org.conf
$ Sudo service Apache2 reload

http://example.org にアクセスすると、出力が表示されるはずです*これはテストです。 "おめでとうございます!最初の仮想ホストが実行中です!

Letsencryptをインストールして証明書を取得する

Let's Encryptから証明書を受け取るには、クライアントが必要です。 16.04に含まれているletsencryptパッケージは古く、このためにppaが必要です。

$ echo "deb http://ppa.launchpad.net/certbot/certbot/ubuntu xenial main" | Sudo tee /etc/apt/sources.list.d/01-certbot.list
$ Sudo add-apt-key -k keyserver.ubuntu.com 8C47BE8E75BCA694
$ Sudo apt update && Sudo apt install certbot python3-certbot-Apache 

ルートとしてcertbotを実行します。

$ Sudo certbot

証明書を取得するドメインを選択し、certbotの画面上の指示に従います。リダイレクトするかどうか尋ねられたら、httpsのみが必要な場合はリダイレクトを選択し、httpとhttpsの両方が必要な場合はリダイレクトを選択しません。今日、リダイレクトしない理由はほとんどありません。

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 

http://example.com に再度アクセスしてください。安全であることを示すために変更する必要があります。

おめでとうございます。Apache2にトラフィックの暗号化を保証する有効なTLS証明書が設定されていません。

WordPressをインストールする

次のステップは、アプリケーションをインストールすることです。インストールする例としてWordPressを選択しました。

最初にSudo -iと入力してルートになります。次に、ディレクトリをwebrootに変更し、ダウンロードして解凍し、Apacheのユーザーに所有権を変更します。

$ Sudo -i
# cd /var/www/html/example.org/
# wget https://wordpress.org/latest.tar.gz
# tar -zxf latest.tar.gz && rm latest.tar.gz
# chown -R www-data.www-data wordpress/

これで、 https://example.com/wordpress/ にWordPressインスタンスができます-行きましょう。

ウィザードは、MySQLテーブル、ユーザー、およびパスワードが必要であることを通知します。それらを作ろう!

デフォルトでは、UbuntuはMariaDBにUNIXソケット認証を使用します。したがって、MariaDBにrootとしてログインするには、使用する必要があります

Sudo mysql -u root

または、ルートシェルでコマンドを実行します(たとえば、Sudo -i)。これにより、パスワードを入力せずにログインできます

# mysql -u root
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 32
Server version: 10.0.33-MariaDB-0ubuntu0.16.04.1 Ubuntu 16.04
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> CREATE DATABASE wordpress_db;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON `wordpress_db`.* TO 'wordpress_user'@'localhost' IDENTIFIED BY 'passw0rd';
Query OK, 0 rows affected (0.01 sec)
MariaDB [(none)]> exit

ユーザー名wordpress_user、データベース名wordpress_db、パスワードpassw0rdをWordPressの設定に入力します。基本的にそれだけです。残りは、WordPressに従うことです インストールガイドライン

さらに仮想ホストを追加するには、「仮想ホストのセットアップ」から開始します。

参考文献

3
vidarlo