Linux CentOS 7 LNMP環境のインストール
16764 ワード
出典:私のブログサイトOceanicKang|《Linux CentOS 7インストールLNMP環境》
MySQLインストール
公式ドキュメント:https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/
MySQL公式Yum Repositoryのダウンロードとインストール
MySQLのインストール
MySQLの起動
MySQLの実行ステータスの表示
起動の設定
初期パスワードの表示
データベースへのアクセス
データベースを操作するには、初期パスワードを変更する必要があります.
【要件】パスワードは、少なくとも1つの大文字、1つの小文字、1つの数字、および1つの特殊文字を含み、総パスワード長は少なくとも8文字である
MySQL更新と更新しない
可視化MySQL管理ソフトウェアログイン許可
Nginxインストール
【注】Nginxを最適化するには、Yumではなくコンパイル方式でインストールします.ここではYumのインストールについてのみ説明します
Nginx公式Yum Repositoryのダウンロードとインストール
インストールNginx
Nginxの起動
80ポートをオンにし、ドメイン名またはIPからサイトにアクセス
起動の設定
Nginx構成情報
説明
パス
Webサイトのファイル保存
サイトのデフォルト設定
カスタムNginxサイトプロファイル保存ディレクトリ
Nginxグローバル構成
Nginx起動
PHP取付
Yum Repositoryのダウンロードとインストール
PHP 7を取り付ける.2
パッケージのインストール
拡張機能
mod_php72w
php72w, mod_php, php72w-zts
php72w-bcmath
php72w-cli
php-cgi, php-pcntl, php-readline
php72w-common
php-api, php-bz2, php-calendar, php-ctype, php-curl, php-date, php-exif, php-fileinfo, php-filter, php-ftp, php-gettext, php-gmp, php-hash, php-iconv, php-json, php-libxml, php-openssl, php-pcre, php-pecl-Fileinfo, php-pecl-phar, php-pecl-zip, php-reflection, php-session, php-shmop, php-simplexml, php-sockets, php-spl, php-tokenizer, php-zend-abi, php-zip, php-zlib
php72w-dba
php72w-devel
php72w-embedded
php-embedded-devel
php72w-enchant
php72w-fpm
php72w-gd
php72w-imap
php72w-interbase
php_database, php-firebird
php72w-intl
php72w-ldap
php72w-mbstring
php72w-mysql
php-mysqli, php_database
php72w-mysqlnd
php-mysqli, php_database
php72w-odbc
php-pdo_odbc, php_database
php72w-opcache
php72w-pecl-zendopcache
php72w-pdo
php72w-pdo_sqlite, php72w-sqlite3
php72w-pdo_dblib
php72w-mssql
php72w-pear
php72w-pecl-apcu
php72w-pecl-imagick
php72w-pecl-mongodb
php72w-pgsql
php-pdo_pgsql, php_database
php72w-phpdbg
php72w-process
php-posix, php-sysvmsg, php-sysvsem, php-sysvshm
php72w-pspell
php72w-recode
php72w-snmp
php72w-soap
php72w-sodium
php72w-tidy
php72w-xml
php-dom, php-domxml, php-wddx, php-xsl
php72w-xmlrpc
PHPバージョンと拡張機能を確認します
PHP+Nginx構成
PHP-FPMの設定
PHP-FPMの起動
PHP-FPMサービスの確認
Nginx構成の変更
Nginxリロード構成
テストのPHPプログラムを作成する
ブラウザ入力アドレスの表示
Sessionディレクトリへのアクセス権の設定
PHP-FPM起動、停止、再起動
PHP-FPMプロファイルパス:/etc/php-fpm.conf and/etc/php-fpm.d/*.conf
Nginx最適化
TCMallocによるNginxのパフォーマンスの最適化
【注】ここのNginxはYumではなくコンパイルでインストールされています
libunwindダウンロードアドレス:http://download.savannah.nongnu.org/releases/libunwind/
gperftoolsダウンロードアドレス:https://gperftools.googlecode.com/files/
Nginxカーネル最適化
一般的な最適化パラメータは次のとおりです.
上記のカーネルパラメータ値を
プロファイルの最適化
コンフィギュレーション
パラメータ
説明
worker_processes
8
Nginxプロセス数は、CPU数で指定することを推奨し、一般的にその倍数(例えば2つのクアッドコアCPU計8)である.
worker_cpu_affinity
00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000
各プロセスに対してCPUを割り当て、上の例では8つのプロセスを8つのCPUに割り当てるか、複数を書くか、1つのプロセスを複数のCPUに割り当てることができます.
worker_rlimit_nofile
65535
1つのNginxプロセスが開く最大ファイル記述子数の場合、理論値は最大オープンファイル数(ulimit-n)とNginxプロセス数を除くべきであるが、Nginx割当要求はそれほど均一ではないため、ulimit-nの値と一致することが望ましい
use epoll
epollを使用したI/Oモデル
worker_connections
65535
プロセスごとに許可される最大接続数、理論的にはNginxサーバ1台あたりの最大接続数はworker_processes * worker_connections
keepalive_timeout
60
keepaliveタイムアウト時間
client_header_buffer_size
4k
クライアントリクエストヘッダのバッファサイズは、システムのページングサイズに応じて設定できます.一般的に、1つのリクエストヘッダのサイズは4 kを超えません.
open_file_cache
max=65535inactive=60s
ファイル指定キャッシュが開き、デフォルトでは有効になりません.maxキャッシュ数を指定し、推奨ファイル数とオープンファイル数が一致し、inactiveはリクエストされていない時間が経過した後にキャッシュを削除することを指す.
open_file_cache_valid
80s
キャッシュの有効な情報をどのくらいチェックするかを指します.
open_file_cache_min_uses
1
open_file_Cacheコマンドのinactiveパラメータの時間内のファイルの最小使用回数が、この数値を超えると、ファイル記述子はキャッシュで開かれます.
MySQLインストール
公式ドキュメント:https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/
MySQL公式Yum Repositoryのダウンロードとインストール
> rpm -Uvh http://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
MySQLのインストール
> yum -y install mysql-community-server
MySQLの起動
> service mysqld start
# Redirecting to /bin/systemctl start mysqld.service,
> systemctl start mysqld.service
MySQLの実行ステータスの表示
> service mysqld status
# or
> systemctl status mysqld.service
起動の設定
> systemctl enable mysqld.service
初期パスワードの表示
> grep 'temporary password' /var/log/mysqld.log
# , 5Eatk=Q7iCPe
データベースへのアクセス
> mysql -uroot -p
# Enter password
データベースを操作するには、初期パスワードを変更する必要があります.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY ' ';
【要件】パスワードは、少なくとも1つの大文字、1つの小文字、1つの数字、および1つの特殊文字を含み、総パスワード長は少なくとも8文字である
MySQL更新と更新しない
> yum -y update mysql-server
# or
> yum -y update
# Yum , MySQL, Repository
> rpm -e --nodeps mysql80-community-release-el7-1.noarch
可視化MySQL管理ソフトウェアログイン許可
> grant all on *.* to root@'%' identified by ' ';
Nginxインストール
【注】Nginxを最適化するには、Yumではなくコンパイル方式でインストールします.ここではYumのインストールについてのみ説明します
Nginx公式Yum Repositoryのダウンロードとインストール
> rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
インストールNginx
> yum -y install nginx
Nginxの起動
> systemctl start nginx.service
80ポートをオンにし、ドメイン名またはIPからサイトにアクセス
> firewall-cmd --zone=public --add-port=80/tcp --permanent # 80
> firewall-cmd --reload #
起動の設定
> systemctl enable nginx.service
Nginx構成情報
説明
パス
Webサイトのファイル保存
/usr/share/nginx/html
サイトのデフォルト設定
/etc/nginx/conf.d/default.conf
カスタムNginxサイトプロファイル保存ディレクトリ
/etc/nginx/conf.d/
Nginxグローバル構成
/etc/nginx/nginx.conf
Nginx起動
nginx -c /etc/nginx/nginx.conf
PHP取付
Yum Repositoryのダウンロードとインストール
> yum -y install epel-release
> rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
PHP 7を取り付ける.2
> yum -y install mod_php72w php72w-opcache php72w-cli php72w-fpm php72w-common php72w-devel php72w-mysql [...]
パッケージのインストール
拡張機能
mod_php72w
php72w, mod_php, php72w-zts
php72w-bcmath
php72w-cli
php-cgi, php-pcntl, php-readline
php72w-common
php-api, php-bz2, php-calendar, php-ctype, php-curl, php-date, php-exif, php-fileinfo, php-filter, php-ftp, php-gettext, php-gmp, php-hash, php-iconv, php-json, php-libxml, php-openssl, php-pcre, php-pecl-Fileinfo, php-pecl-phar, php-pecl-zip, php-reflection, php-session, php-shmop, php-simplexml, php-sockets, php-spl, php-tokenizer, php-zend-abi, php-zip, php-zlib
php72w-dba
php72w-devel
php72w-embedded
php-embedded-devel
php72w-enchant
php72w-fpm
php72w-gd
php72w-imap
php72w-interbase
php_database, php-firebird
php72w-intl
php72w-ldap
php72w-mbstring
php72w-mysql
php-mysqli, php_database
php72w-mysqlnd
php-mysqli, php_database
php72w-odbc
php-pdo_odbc, php_database
php72w-opcache
php72w-pecl-zendopcache
php72w-pdo
php72w-pdo_sqlite, php72w-sqlite3
php72w-pdo_dblib
php72w-mssql
php72w-pear
php72w-pecl-apcu
php72w-pecl-imagick
php72w-pecl-mongodb
php72w-pgsql
php-pdo_pgsql, php_database
php72w-phpdbg
php72w-process
php-posix, php-sysvmsg, php-sysvsem, php-sysvshm
php72w-pspell
php72w-recode
php72w-snmp
php72w-soap
php72w-sodium
php72w-tidy
php72w-xml
php-dom, php-domxml, php-wddx, php-xsl
php72w-xmlrpc
PHPバージョンと拡張機能を確認します
> php -v
> php -m
PHP+Nginx構成
PHP-FPMの設定
> vim /etc/php-fpm.d/www.conf
# ---------------------------
user = nginx
group = nginx
PHP-FPMの起動
> /usr/sbin/php-fpm
PHP-FPMサービスの確認
> ps -ef | grep php-fpm
> netstat -tlnp | grep 9000
Nginx構成の変更
> cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.backup #
> vim /etc/nginx/conf.d/default.conf
# ----------------------------------
# , root fastcgi_param
location ~ \.php$ {
root /usr/share/nginx/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
Nginxリロード構成
> nginx -s reload
テストのPHPプログラムを作成する
> vim /usr/share/nginx/html/index.php
# -----------------------------------
<?php
phpinfo();
?>
ブラウザ入力アドレスの表示
Sessionディレクトリへのアクセス権の設定
> cd /var/lib/php
> chown -R nginx:nginx *
PHP-FPM起動、停止、再起動
> systemctl start php-fpm #
> systemctl stop php-fpm #
> systemctl restart php-fpm #
PHP-FPMプロファイルパス:/etc/php-fpm.conf and/etc/php-fpm.d/*.conf
Nginx最適化
TCMallocによるNginxのパフォーマンスの最適化
【注】ここのNginxはYumではなくコンパイルでインストールされています
libunwindダウンロードアドレス:http://download.savannah.nongnu.org/releases/libunwind/
gperftoolsダウンロードアドレス:https://gperftools.googlecode.com/files/
# libunwind
> cd /opt
> wget http://download.savannah.nongnu.org/releases/libunwind/libunwind-1.2.1.tar.gz
> tar -zxvf libunwind-1.2.1.tar.gz
> cd libunwind-1.2.1
> ./configure && make && make install
# google-perftools
> cd /opt
> wget https://gperftools.googlecode.com/files/gperftools-2.6.tar.gz
> tar -zxvf gperftools-2.0.tar.gz
> cd gperftools-2.0
> ./configure --enable-frame-pointers && make && make install
# gperftools
> echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local_lib.conf
> /sbin/ldconfig
# Nginx
> ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-ipv6 --with-google_perftools_module
> make && make install
#
> mkdir /tmp/tcmalloc
> chmod 777 /tmp/tcmalloc
# Nginx
> vim /usr/local/nginx/conf/nginx.conf
# ------------------------------------
# pid logs/nginx.pid;
google_perftools_profiles /tmp/tcmalloc;
# Nginx
> service restart nginx
#
> lsof -n | grep tcmalloc
> lsof -n | grep nginx
Nginxカーネル最適化
一般的な最適化パラメータは次のとおりです.
net.ipv4.tcp_max_tw_buckets = 6000 # timewait , 180000
net.ipv4.ip_local_port_range = 1024 65000 #
net.ipv4.tcp_tw_recycle = 1 # timewait
net.ipv4.tcp_tw_reuse = 1 # , timewait sockets TCP
net.ipv4.tcp_syncookies = 1 # SYN Cookies, SYN , cookies
net.core.somaxconn = 262144 # TCP , 128。
net.core.netdev_max_backlog = 262144 # ,
net.ipv4.tcp_max_orphans = 262144 # TCP 。 , 。 DOS 。 , ,
net.ipv4.tcp_max_syn_backlog = 262144 # 。 128MB , 1024, 128
net.ipv4.tcp_synack_retries = 1 # SYN+ACK
net.ipv4.tcp_syn_retries = 1 # SYN
net.ipv4.tcp_fin_timeout = 1 # FIN-WAIT-2 。 60 。 , WEB ,
net.ipv4.tcp_keepalive_time = 30 # keepalive ,TCP keepalive 。 2( )
上記のカーネルパラメータ値を
/etc/sysctl.conf
ファイルに追加し、次のコマンドを実行して有効にします.> /sbin/sysctl -p
プロファイルの最適化
コンフィギュレーション
パラメータ
説明
worker_processes
8
Nginxプロセス数は、CPU数で指定することを推奨し、一般的にその倍数(例えば2つのクアッドコアCPU計8)である.
worker_cpu_affinity
00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000
各プロセスに対してCPUを割り当て、上の例では8つのプロセスを8つのCPUに割り当てるか、複数を書くか、1つのプロセスを複数のCPUに割り当てることができます.
worker_rlimit_nofile
65535
1つのNginxプロセスが開く最大ファイル記述子数の場合、理論値は最大オープンファイル数(ulimit-n)とNginxプロセス数を除くべきであるが、Nginx割当要求はそれほど均一ではないため、ulimit-nの値と一致することが望ましい
use epoll
epollを使用したI/Oモデル
worker_connections
65535
プロセスごとに許可される最大接続数、理論的にはNginxサーバ1台あたりの最大接続数はworker_processes * worker_connections
keepalive_timeout
60
keepaliveタイムアウト時間
client_header_buffer_size
4k
クライアントリクエストヘッダのバッファサイズは、システムのページングサイズに応じて設定できます.一般的に、1つのリクエストヘッダのサイズは4 kを超えません.
open_file_cache
max=65535inactive=60s
ファイル指定キャッシュが開き、デフォルトでは有効になりません.maxキャッシュ数を指定し、推奨ファイル数とオープンファイル数が一致し、inactiveはリクエストされていない時間が経過した後にキャッシュを削除することを指す.
open_file_cache_valid
80s
キャッシュの有効な情報をどのくらいチェックするかを指します.
open_file_cache_min_uses
1
open_file_Cacheコマンドのinactiveパラメータの時間内のファイルの最小使用回数が、この数値を超えると、ファイル記述子はキャッシュで開かれます.