GNU/Linux >> Linux の 問題 >  >> Debian

Debian7でNginx+php-FPM + apc + MariaDBをセットアップ–完璧なLEMPサーバー

DebianWebサーバー

DebianはLinuxウェブサーバーをセットアップするのに最適です。現在の統計によると、これは最も人気のあるサーバーOSであり、centosがそれに続きます。

私はapt/dpkg / gdebiコマンドの大ファンです。このコマンドを使用すると、システムにパッケージを簡単にインストールして更新できます。

完全に機能するphpWebサーバーをセットアップするには、Webサーバーとデータベースを含むいくつかの追加のものをインストールする必要があります。この投稿では、nginx、php、php-fpm、apc、MariaDBを設定します。

Nginxは最新のWebサーバーであり、RAMとCPUの観点から、最小限のリソースを使用して大量のトラフィックを処理するように設計されています。

nginxの前は、インターネット全体で使用されていた従来のWebサーバーはapacheでした。ただし、インターネットの人口が増えるにつれ、より高速で効率的なWebサーバーの必要性が高まりました。

NginxとApache

Apacheは設計上非常にかさばり、多くの機能を備えていますが、そのほとんどは一般的なWebサイトには必要ありません。おそらくすべての人のニーズを満たすように設計されていましたが、これにより、ほとんど使用されていない機能を備えた大きくて重いWebサーバーになりました。

一方、Nginxは、速度、スケーラビリティ、効率に完全に焦点を当てた、非常に洗練された高速なWebサーバーです。

それがどのように行われるかについての技術は大きく、この投稿の範囲を超えています。後で見てみることができるかもしれません。参考までに、このWebサイトはnginxで実行されます。

これ以上の議論なしで、仕事に取り掛かりましょう。

1。 DebianにNginxをインストールする

nginxパッケージはdebianリポジトリにあるので、他の場所を探す必要はありません。 apt-getを起動してインストールします。

# apt-get install nginx

次に、nginxサーバーを起動します。

# service nginx start
Starting nginx: nginx.

次に、URLを開いてブラウザからnginxサーバーにアクセスします

http://localhost/

ウェルカムメッセージが表示されます

Welcome to nginx!

重要な注意事項

nginxサーバーをより適切に管理するために覚えておくべきことがいくつかあります。 nginx構成ファイルは次の場所にあります

/etc/nginx/
[email protected]:/etc/nginx# ls
conf.d		koi-win		  naxsi.rules	scgi_params	 uwsgi_params
fastcgi_params	mime.types	  nginx.conf	sites-available  win-utf
koi-utf		naxsi_core.rules  proxy_params	sites-enabled

nginx.confファイルを直接変更しないでください。代わりに、vhost / siteごとに個別の構成ファイルを作成し、次のディレクトリに保存します。

/etc/nginx/sites-available
/etc/nginx/sites-enabled

これはapacheに似ています。 sites-enabledディレクトリには、有効にするvhostの構成が含まれています。これには、sites-availableディレクトリ内の対応する構成ファイルへのシンボリックリンクが含まれています。

仮想ホストを設定する

nginxをインストールしたので、仮想ホストをセットアップします。これは、実際のWebサーバーでサイトをセットアップするために行うことです。

/ etc / nginx / sites-available内に、defaultという名前のファイルが表示されます。独自の設定ファイルを作成するためのテンプレートファイルです。コピーしてサイトに名前を付けるだけです。

# cp default binarytides.com
[email protected]:/etc/nginx/sites-available# ls
binarytides.com  default

覚えやすく、保守しやすいように、構成ファイルにサイト名を付けることにしました。
次に、binarytides.comを開き、必要に応じて編集します。
サーバーが表示されます。これに似たブロック

server {
	#listen   80; ## listen for ipv4; this line is default and implied
	#listen   [::]:80 default_server ipv6only=on; ## listen for ipv6

	root /usr/share/nginx/www;
	index index.html index.htm;

	# Make site accessible from http://localhost/
	server_name localhost;

ここで最初に構成するのはserver_nameです。あなたのサイトに名前を付けてください。例

server_name binarytides.com
or
server_name binarytides.com www.binarytides.com

誰かが自分のブラウザでbinarytides.comを開くと、httpヘッダーにはこのホスト名が含まれ、nginxはこのホスト名を取得して一致するサーバーブロックを検索します。一致するサーバーブロックが見つかると、その特定のサーバーブロックの構成が使用されます。

構成するもう1つのことは、このサイト/仮想ホストのWebルートディレクトリです。これはデフォルトで/usr / share / nginx / wwwであることに注意してください これを別のものに変更することをお勧めします。

一般的な規則では、仮想ホストごとに個別のディレクトリを用意します。例

/usr/share/nginx/www/binarytides.com/
/usr/share/nginx/www/google.com/

したがって、適切なディレクトリを作成し、構成ファイルのルート設定がそのディレクトリを指すようにします。

...
root /usr/share/nginx/www/binarytides.com;
...

これらの変更を行った後、構成ファイルを保存し、/ etc / nginx/sites-enabledディレクトリにシンボリックリンクを作成します。

[email protected]:/etc/nginx/sites-available# ls
binarytides.com  default
[email protected]:/etc/nginx/sites-available# cd ..
[email protected]:/etc/nginx# cd sites-enabled/
[email protected]:/etc/nginx/sites-enabled# ln -s ../sites-available/binarytides.com
[email protected]:/etc/nginx/sites-enabled# ls
binarytides.com  default
[email protected]:/etc/nginx/sites-enabled#

次に、新しい構成をテストします

# nginx -t
nginx: [warn] conflicting server name "localhost" on 0.0.0.0:80, ignored
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

出力の最後の行は成功したと言う必要があります。そうでない場合、エラーが表示されます。後で修正できる警告が表示される場合があります。

最後にnginxを再起動して、新しい構成を有効にします

# service nginx restart
Restarting nginx: nginx: [warn] conflicting server name "localhost" on 0.0.0.0:80, ignored
nginx.
[email protected]:/etc/nginx/sites-enabled#

そのため、新しい構成が有効になりました。次に、この仮想ホストの新しいWebルートに新しいindex.htmlファイルを作成し、ブラウザから開くと、機能するはずです。

2。 phpとphp-fpmをインストールします

次にインストールするのは、phpインタープリターとphp-fpmです。 Php-FPMは、互換性のある任意のWebサーバーとインターフェイスまたは接続し、phpプロセスを管理してphp要求を処理できるphp専用のfastcgiプロセスマネージャーです。

Nginx <== communicates ==> Php-FPM <== manages ==> php child process

最初に必要なパッケージをインストールします。

# apt-get install php5 php5-fpm

必要な依存関係が自動的にインストールされます。 phpスクリプトを実行するためにphpコマンドが必要な場合にも、php5-cliパッケージをインストールできます。

Php-fpm runs as a separate server and nginx communicates with it over a socket. Hence the php execution is totally outside the server. Also since fpm keeps php process persistent, it fully supports APC.

次に、phpfpm構成ファイルを見つけます。にあるファイル

/etc/php5/fpm/

プールは、同じユーザー/グループで実行される一連のphpプロセスです。したがって、各サイトのphpファイルを個別のユーザー権限で実行する場合は、fpmの個別のプールを作成する必要があります。わかりやすくするために、ここでは1つのプールのみを示しています。

プール構成ファイルは、pool.dディレクトリー内にあります。ナビゲート

[email protected]:/etc/php5/fpm/pool.d# ls
www.conf

使用するテンプレートであるwww.confファイルを開き、プールごとに個別の構成ファイルを作成します。
次のようになります

; Start a new pool named 'www'.
; the variable $pool can we used in any directive and will be replaced by the
; pool name ('www' here)
[www]

; Per pool prefix
; It only applies on the following directives:
; - 'slowlog'
; - 'listen' (unixsocket)
; - 'chroot'
; - 'chdir'
; - 'php_values'
; - 'php_admin_values'
; When not set, the global prefix (or /usr) applies instead.
; Note: This directive can also be relative to the global prefix.
; Default Value: none
;prefix = /path/to/pools/$pool

; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
user = www-data
group = www-data

; The address on which to accept FastCGI requests.
; Valid syntaxes are:
;   'ip.add.re.ss:port'    - to listen on a TCP socket to a specific address on
;                            a specific port;
;   'port'                 - to listen on a TCP socket to all addresses on a
;                            specific port;
;   '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
listen = /var/run/php5-fpm.sock

; Set listen(2) backlog.
; Default Value: 128 (-1 on FreeBSD and OpenBSD)
;listen.backlog = 128

上記のものは主にコメントで構成されており、最も重要な4行は

1. [www] 
this is the pool name

2. user = www-data 
this is the user with whose permissions the php script would be run

3. group = www-data
this is the group

4. listen = /var/run/php5-fpm.sock
this is the socket for communicating with this pool. This socket must be given to nginx for nginx to be able to talk to fpm

fpmをnginxに接続します

ここではあまり変更しません。ソケットパスを書き留めてください。これをnginx構成ファイルに入れる必要があります。 nginx構成に戻り、再度開きます。

これには、次のようなphpfpm構成のセクションが含まれています

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
#	fastcgi_split_path_info ^(.+\.php)(/.+)$;
#	# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
#
#	# With php5-cgi alone:
#	fastcgi_pass 127.0.0.1:9000;
#	# With php5-fpm:
#	fastcgi_pass unix:/var/run/php5-fpm.sock;
#	fastcgi_index index.php;
#	include fastcgi_params;
#}
を含める

コメントを外して、次のようにします

location ~ \.php$ {
	fastcgi_split_path_info ^(.+\.php)(/.+)$;
#	# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

#	# With php5-cgi alone:
#	fastcgi_pass 127.0.0.1:9000;
	# With php5-fpm:
	fastcgi_pass unix:/var/run/php5-fpm.sock;
	fastcgi_index index.php;
	include fastcgi_params;
}
を含める

PHPのテスト

次に、phpinfo呼び出しを使用してWebルートにファイルを配置します。

&lt;?php

phpinfo();

次に、ブラウザでファイルを開くと、phpがセットアップされ、正しく機能していることを示すphp情報ブロックが表示されます。

あなたができるもう一つのことは、インデックスファイルリストにindex.phpを追加することです。そのため、ディレクトリにアクセスするときに、ファイルが指定されていない場合は、index.phpが呼び出されます。

root /usr/share/nginx/www/binarytides.com;
index index.html index.htm index.php;

apcのセットアップ-代替phpキャッシュ

APCは、phpスクリプトの実行を高速化するための優れた方法です。 Apcはphpコードをコンパイルし、オペコードをメモリに保持し、ファイルから同じphpコードを再度コンパイルせずに次回使用します。これにより、実行が大幅に高速化されます。オペコードキャッシュとは別に、apcはphpアプリケーションの生データをメモリに保存するためのユーザーキャッシュも提供します。

バージョン5.5のPhpには、apcオペコードキャッシュと同じことを行うOPcacheと呼ばれる新機能があり、apcを廃止します。

apcの設定は非常に簡単で迅速です。 PHP用のapcパッケージをインストールするだけです

# apt-get install php-apc

次に、phpfpmを再起動します

# service php5-fpm restart

ここで、phpinfoページをもう一度確認すると、apcの詳細も含まれているはずです。 apc構成ファイルは

にあります
/etc/php5/fpm/conf.d/20-apc.ini

構成を少し調整して、ニーズに最適なパフォーマンスを実現できます。これが私が使用する構成の種類です

extension=apc.so
 
apc.enabled=1
apc.shm_size=128M
apc.ttl=3600
apc.user_ttl=7200
apc.gc_ttl=3600
apc.max_file_size=1M

詳細については、apc構成パラメーターのリストを確認してください。

3。 DebianにMariaDBをインストールする

これで、LEMPスタックの最後の最後のコンポーネントが登場します。これはMariaDBデータベースであり、mysqlではありません。さて、今では、mysqlがoracleの手にあり、もはやコミュニティに属していないことを知っているはずです。そのため、主要な企業はmariadbへの切り替えを開始しました。良い点は、mariadbがmysqlとバイナリ互換であり、多くの追加機能を備えていることです。したがって、すでにphpアプリケーションにmysqlを使用している場合は、mariadbに移行するのはまったく手間がかかりません。

MariaDB Debianには存在しません リポジトリ。リポジトリを入手するには、次のページにアクセスしてください

https://downloads.mariadb.org/mariadb/repositories/

ディストリビューションとしてDebianを選択し、mariadbのリリースおよびバージョン10.0としてWheezyを選択します。次に、右側のミラーを選択します。次に、ページの一番下までスクロールして、リポジトリの詳細を見つけます。

これが私が得たコマンドです

sudo apt-get install python-software-properties
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
sudo add-apt-repository 'deb http://mirrors.fe.up.pt/pub/mariadb/repo/10.0/debian wheezy main'

次に、aptキャッシュを更新し、mariadbパッケージをインストールします

sudo apt-get update
sudo apt-get install mariadb-server mariadb-client

インストール中に、mariadbはユーザーrootのパスワードを要求します。パスワードを入力し、忘れないようにしてください。

インストールが完了したら、mariadbのバージョンを確認してください

# mysql -V
mysql  Ver 15.1 Distrib 10.0.3-MariaDB, for debian-linux-gnu (x86_64) using readline 5.1

コマンド名はmysqlと同じであることに注意してください。ただし、バージョン情報にはmariadbという名前が含まれています。

ウェブサーバーの準備ができました

これで、LEMPWebサーバーを使用する準備が整いました。データベースをより適切に管理するために、phpmyadminなどの追加の機能をいくつかインストールすることをお勧めします。 Phpmyadminはdebianリポジトリにあるので、そこから直接インストールしてください。

何か質問がある ?以下にコメントしてください。


Debian
  1. ISPConfigPerfectServerをDebian10からDebian11に更新します

  2. Debian 8 VPSにLEMP(Linux、Nginx、MySQL、PHP-FPM)をインストールする方法

  3. ElggソーシャルネットワークをDebian9にインストールする方法

  1. Debian10BusterでLEMPサーバーをセットアップする方法

  2. 完璧なセットアップ-DebianSarge(3.1)

  3. 完璧なセットアップ-DebianWoody(3.0)

  1. NginxとPHP(PHP-FPMとして)およびMariaDB(LEMP)をDebian8にインストールする

  2. 完璧なサーバー-Debian8.6(nginx、BIND、Dovecot、ISPConfig 3.1)

  3. 完璧なサーバー-Debian9(Nginx、BIND、Dovecot、ISPConfig 3.1)