A、LNMP概要
1. LNMP何ですか
LNMPは複合語である= Linuxの+ nginxの+のMySQL + PHP LAMP差はnginxのWebサーバーには、Apacheによって置き換えられていることです。
2、LNMP関係
LNMPは、より人気の理由であるすべてのオープンソースソフトウェアです。
nginxのは、F5ロードバランサ=>最も有名なF5ハードウェアロードバランサnginxのコミュニティ版=>無料のオープンソースに買収されました
nginxのプラスは有料版
3、準備LNMPサーバ
最初のステップ:サーバークローニングLNMP
ステップ2:変更LAN IPアドレスとUUID数
IPADDR = 10.1.1.10
最後の三つの数を変更するUUID
ステップ3:/ etc / hostsファイルにバインドするホスト名とIPアドレスとホスト名を設定します。
# hostnamectl set-hostname lnmp.itcast.cn # su
# vim /etc/hosts
10.1.1.10 lnmp lnmp.itcast.cn # systemctl restart network
第四ステップ:ファイアウォールとSELinuxを無効にします
# systemctl stop firewalld
# systemctl disable firewalld # setenforce 0
# sed -i '/SELINUX=enforcing/cSELINUX=disabled'
/etc/selinux/config
ステップ5:NetworkManagerのサービスをオフにします
# systemctl stop NetworkManager
# systemctl disable NetworkManager
ステップ6:YUMソースの設定
[aliyun] name=aliyun yum
baseurl=http://mirrors.aliyun.com/centos/7/os/x86_64/ enabled=1
gpgcheck=0
baseurl=file:///mnt enabled=1
gpgcheck=0
yum
epel-release-latest-7.noarch.rpm
yum.repos.d]# cat server.repo
# rpm -ivh [root@db01 [local]
name=local
ステップ7:ntpdateを、時刻同期をインストールします。
# mount /dev/sr0 /mnt
# yum install ntpdate -y # ntpdate cn.ntp.org.cn
二つは、MySQLのLNMPソフトウェアアーキテクチャ
1、MySQLのパッケージ
mysqlの-5.6.35-linuxの-glibc2.5-x86_64.tar.gz
説明:Linuxでのユニバーサルバイナリパッケージ、コンパイル良いが、ちょうど適切なインストールディレクトリ缶を置きます
エンタープライズデータベースの展開、一般的に使用されるMySQLデータベースがあり、2つのインストール方法です:GLIBCのインストールは、ソースコードをインストールする(いずれかを選択)
2、MySQLのインストールを使用してGLIBC
デフォルトのオプション:
お客様の責任ソケットファイル、
MySQLのインストールディレクトリ
MySQLのデータディレクトリ
デフォルトのインストールパス:は/ usr / local / mysqlの
デフォルトのデータディレクトリ:は/ usr / local / mysqlの/データポートデフォルト:3306
デフォルトのソケットファイルストレージ・パス:/tmp/mysql.sock
側とサーバー側のネットワーク接続
3、MySQLはインストール手順を詳細に説明しました
MySQLはLinuxサーバにアップロード:
mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
Mysql.shスクリプトを記述します。
# vim mysql.sh #!/bin/bash
tar -zxf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
mv mysql-5.6.35-linux-glibc2.5-x86_64 /usr/local/mysql useradd -r -s /sbin/nologin mysql
chown -R mysql.mysql /usr/local/mysql
cd /usr/local/mysql
yum remove mariadb-libs -y scripts/mysql_install_db --user=mysql
cp support-files/mysql.server /etc/init.d/mysql service mysql start
# 追加/usr/local/mysql/bin目录到环境变量
echo 'export PATH=$PATH:/usr/local/mysql/bin' >>
/etc/profile source /etc/profile
セットアップが完了したら、ソースのコマンドスクリプトmysql.shを使用
# source mysql.sh
4、MySQLの後続の構成
ステップ1:設定MySQLのパスワードとセキュリティポリシー
# mysql_secure_installation
注:実際の運用および保守作業では、MySQLのパスワードは、より良い、より複雑でなければなりません。ステップ2:MySQLのテスト検証
# mysql -uroot -p Enter password:123
Telnetの:
# mysql -h 服务器IP地址 -P 端口号 -uroot -p Enter password:123
注:実際の運用および保守作業では、リモート接続アカウントのルートを使用しないようにしてください。手動で共通のアカウントとオンデマンドの権利を作成する必要があります。
5、拡張:mysql.serviceスクリプト
CentOS6:サービスが開始MYSQL |再起動|停止CentOS7:systemctl開始|再起動|停止mysql.service
ステップ1:ファイルmysql.serviceを作成します。
# vim /usr/lib/systemd/system/mysql.service
ステップ2:書き込み内容
[Unit]
Description=MySQL Server After=network.target After=syslog.target
[Service] User=mysql Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults- file=/usr/local/mysql/my.cnf
LimitNOFILE = 5000
PrivateTmp=false
[Install]
WantedBy=multi-user.target
注:
Unit代表单元,启动程序需要有单元信息After代表在某些服务启动后在进行MySQL启动
Service代表服务,最核心配置
User + Group代表将来以哪个用户的身份运行此软件ExecStart代表启动脚本调用哪个程序(systemctl start mysql.service)
LimitNOFILE代表限制文件大小
PrivateTmp代表是否把MySQL的运行程序放入私有空间,比如pid,socket
文件
Install代表安装模式,代表把MySQL服务运行在何种模式下
第三段階:systemctlの使用を開始するために、元のMySQLは、MySQLをオフにします
# service mysql stop
# systemctl start mysql
扩展:关闭与重启
# systemctl stop mysql
# systemctl restart mysql
ステップ4:起動項目にmysql.serviceを追加
# systemctl enable mysql
扩展:关闭开机启动项
# systemctl disable mysql
三、nginxののLNMPソフトウェアアーキテクチャ
1、nginxの概要
nginxの(エンジンX)は、高性能HTTPサーバーとリバースプロキシウェブサーバであるが、IMAP / POP3 / SMTPサービスを提供します。イゴールSaisuoyefuロシアによってnginxのは、第2の訪問先http://Rambler.ruサイト(ロシア語:Рамблер)を2004年10月4日にリリース最初の公開バージョン0.1.0を開発日。
nginxのは、軽量なWebサーバ/リバースプロキシサーバーと電子メールで
BSDライクな合意の下で配布(IMAP / POP3)、プロキシサーバー、。Baiduは、Jingdongは、シーナ、網易、テンセント、淘宝網:それは、中国本土での使用のnginxのウェブサイトのユーザーは、あるWebサーバのパフォーマンスの同じタイプが優れているより少ないメモリ、高い同時実行、同時nginxの事実を行う能力を占めています。
質問:nginxのを使用してエンタープライズアーキテクチャプロジェクトかどうかを確認する方法
#カール-Iドメインアドレス
サーバー:nginxの
2、nginxのシナリオ
- ウェブサーバソフトウェアHTTPD(アパッチ)
Webサーバーソフトウェアの同じタイプ:Apacheのnginxの(ロシア)がIIS(マイクロソフト)lighttpdの(ドイツ)
- これは、IMAP / POP3 / SMTPサービスを提供しています
- 負荷分散のためのリバースプロキシサーバーとして機能します。LB =>ロードBlance
3、nginxの特徴
①高信頼性:スケジューリング要求配信ワーカー=>ワーカープロセス安定管理マスタプロセス応答要求複数のマスタワーカ
nginxの---------マスター进程----------------労働者、労働者、労働者
②ホットデプロイ:ケース(1)スムーズなアップグレード(2)でのソフトウェアのアップグレードは、リロード=>操作やリロードを停止することなく迅速に構成することができます
③高い同時実行:十イベントのepollモデルの何千ものと同時に、より多くの要求に応えることができます
④高速応答:特に静的ファイルでは、高速応答の送信Fiのル
⑤消費:CPUとメモリ要求1ワットメモリ2〜3メガバイト
⑥サポート分散:7リバースプロキシの負荷分散を、新しいバージョンも> = 4つのロードバランシングをサポートしています
ユーザーの要求シャント
4、nginxのソフトウェアのインストール
一般的なインストール:
①yumの設定をインストールし、あなたがnginxのEPEL公式のソースまたはソースを使用する必要があります(カスタマイズすることができない=>バージョンは推奨されませんすることは、低すぎます)
②コンパイルソースコード(推奨)
5、nginxのは、コンパイルとインストール
最初のステップ:nginxのnginxのパッケージをダウンロードするには、公式ウェブサイトにアクセスしてください(1.12.2)
ステップ2:使用するシェルスクリプトnginxのソフトウェアをインストールする(構成=>コンパイル=>インストール)依存ライブラリ:
#マウントは/ dev / sr0を/ mntに
#yumを-y PCRE-develのはzlib-develのopensslの-develのインストール
nginxのソフトウェアをインストールnginx.sh使用:
#vimのnginx.sh#!/ binに/ bashの
タール-zxf nginxの-1.12.2.tar.gzのCDのnginxの-1.12.2
useraddの-r -s / sbinに/ nologinにWWW
./configure --prefix =は/ usr / local / nginxの--user = WWW - グループ= WWW --with-http_ssl_module --with- http_stub_status_module --with-http_realip_module make installを&&作ります
注意:
--prefix:インストールパス
--user:へのユーザーIDの設定の初期化
--group:グループへのユーザーIDの設定の初期化
--with- *:モジュールがインストールされているの代表者(デフォルトのみ基本モジュールによってインストールされます)
6、nginxのカタログの説明
CONF:コンフィギュレーションファイルのディレクトリ、nginxのマスター構成ファイルnginx.conf。nginxのが開始されると、ファイルが自動的にロードされますnginx.conf
HTML:プロジェクトディレクトリ、店舗ログにこのディレクトリの下にプロジェクトのソースコード:ログ・ディレクトリ、error.logファイルのaccess.logエラーログやアクセスログsbinに:バイナリファイルのディレクトリ、nginxのメインプログラムsbinに/ nginxの
sbinに/ nginxの-h助けを使用して7、
#CDは/ usr / local / nginxの#sbinに/ nginxの-h
-V:表示オプションnginxのバージョン番号と構成(負荷モジュール)
-t:nginx.confを書くとき、非常に重要。主に構文チェックのために使用さ
-s:再度開き、(エレガント導入)を終了し、ストップ(停止)信号を送信する(設定ファイルを再度開く)、リロード(熱過負荷設定ファイル)
説明:違いの優雅な立ち上げを停止、停止して終了します
停止:停止し、すべての要求に代わってすぐに
終了:それは停止を作り、すべての要求に代わった直後に停止し、すべての要求を処理するために待機していません
再び開いて、再度開きリロード:代わっプロファイルを再度開きます
リロード:事業を停止せずに、ある熱過負荷、リロードの設定ファイルnginx.conf
-c:ロード・プロファイル
8、ソフトウェアを起動しnginxの
#CDは/ usr / local / nginxの
#sbinに/ nginxの-c /usr/local/nginx/conf/nginx.conf#SSの-naltp | grepを80
セットアップが完了したら、Windows側でブラウザを開き、IPは、サーバのメインページnginxの+ 80の訪問を使用しています
9、スクリプトnginx.service拡張
ステップ1:停止ネイティブnginxの
# cd /usr/local/nginx # sbin/nginx -s stop
ステップ2:スクリプトnginx.serviceを作成します。
# vim /usr/lib/systemd/system/nginx.service
第三段階:スクリプトの内容を書きます
[Unit]
Description=Nginx Web Server After=network.target
[Service] Type=forking
ExecStart=/usr/local/nginx/sbin/nginx -c
/usr/local/nginx/conf/nginx.conf ExecReload=/usr/local/nginx/sbin/nginx -s reload ExecStop=/usr/local/nginx/sbin/nginx -s quit PrivateTmp=true
[Install]
WantedBy=multi-user.target
注:
Type=forking,代表后台运行
ステップ4:プログラムが起動nginx.service使用:
# systemctl start nginx
停止:
# systemctl stop nginx
熱過負荷:
# systemctl reload nginx
ブートエントリ:
# systemctl enable nginx
ブートは起動しません。
# systemctl disable nginx
四、PHPのLNMPソフトウェアアーキテクチャ
1. PHPとは何ですか
PHP(英語名:PHP:ハイパーテキストプリプロセッサ、中国名:「ハイパーテキストプリプロセッサ」)は、主にウェブの分野で使用される汎用性の高いオープンソースのスクリプト言語です。
PHPはHTMLプログラム(標準汎用マークアップ言語中のアプリケーション)を実行するためにドキュメントに埋め込まれ、HTMLマークアップを生成し完全CGIより効率的に実行することははるかに高いです
PHPはまた、コンパイラは、暗号化と実行を達成するためにコードを最適化することができ、コンパイルされたコードの後に行っても、コードの実行を高速化することができます。(新機能)
2、PHP-FPM
違いは何nginxのとPHPとPHPとApacheの:
# httpd.conf => LoadModule => AddType => .php文件
ApacheとPHPの間の関係は以下のとおりです。状況は、PHP、Apacheのモジュールはカーネルにロードされます。動的PHPコード、その高い効率を解析するとき。LoadModuleの
nginxのとPHPの間の関係:nginxのとPHPは比較的独立しているが、動的スクリプトを解決しながら、アプリケーション・プロセスにおいて、ソースコードnginxのは、自動的にPHP-FPMプログラムに送られます。静的なページ、より効率的に対処する上でnginxの。
3、PHP-FPMのソフトウェアのインストール
ステップ1:依存ライブラリをインストールします。
# yum -y install libxml2-devel libjpeg-devel libpng-devel freetype-devel curl-devel openssl-devel
ステップ2:書込み構成ファイル
# tar -zxf php-7.2.12.tar.gz # cd php7.2.12
# ./configure --prefix=/usr/local/php --with-config-file- path=/usr/local/php/etc --enable-fpm --with-fpm-user=www -
-with-fpm-group=www --with-mysqli=mysqlnd --with-pdo- mysql=mysqlnd --with-iconv-dir --with-freetype-dir --with- jpeg-dir --with-png-dir --with-zlib --with-libxml-dir -- enable-xml --disable-rpath --enable-bcmath --enable-shmop
--enable-sysvsem --enable-inline-optimization --with-curl
--enable-mbregex --enable-mbstring --enable-ftp --with-gd
--with-openssl --with-mhash --enable-pcntl --enable- sockets --with-xmlrpc --with-libzip --enable-soap -- without-pear --with-gettext --disable-fileinfo --enable- maintainer-zts
# make && make install
注:
--prefix:安装目录
--with-config-file-path:配置文件目录
--enable-fpm:开启php-fpm功能
--with-fpm-user:代表以哪个用户运行php-fpm
--with-fpm-group:代表以哪个用户组运行php-fpm
--with-mysqli:php-mysqli扩展
--with-pdo-mysql:php-pdo-mysql扩展
--with-*:项目所需的额外的扩展库(需要运维工程师安装,但是由程序猿提供文档)
php7.2:从php5.6开始,php链接mysql必须使用mysqli或pdo扩展。
4、PHP-FPMプロファイル
PHP PHP-FPM管理サービスを使用して、2つのプロファイルがあります。
①php.iniの#デフォルトのPHPの設定ファイル(/root/php-7.2.12)PHP => redis.so =>のRedis
②のphp-fpm.conf#PHP-FPM関連の設定(デフォルトがすでに存在しています)
③www.conf#、PHP-FPMマスター設定ファイル(デフォルトでは存在しています)
# ll /usr/local/php
etc文件夹:专门用于存放php-fpm启动或运行过程中需要的配置文件
第一步:把php.ini移动到/usr/local/php/etc目录
# cp /root/php-7.2.12/php.ini-development
/usr/local/php/etc/php.ini
第二步:加载php-fpm.conf主配置文件
# cd /usr/local/php/etc目录
# cp /usr/local/php/etc/php-fpm.conf.default
/usr/local/php/etc/php-fpm.conf
第三步:加载php-fpm子配置文件www.conf文件
# cp /usr/local/php/etc/php-fpm.d/www.conf.default
/usr/local/php/etc/php-fpm.d/www.conf
PHP-FPM启动 => php.ini => php-fpm.conf => www.conf文件
5、添加php-fpm启动项
# 把php-fpm添加到/etc/init.d目录下
# cp /root/php-7.2.12/sapi/fpm/init.d.php-fpm
/etc/init.d/php-fpm
# chmod +x /etc/init.d/php-fpm # service php-fpm start
# 查看9000端口的占用情况(Nginx中的PHP是以独立进程的方式运行,占用计算机的9000端口)
# ss -naltp |grep 9000
6、把php的bin目录添加到环境变量
# echo 'export PATH=$PATH:/usr/local/php/bin' >>
/etc/profile
# source /etc/profile
五、让Nginx关联PHP-FPM
1、为什么需要关联
我们在安装Nginx与PHP时都是独立安装的。
Nginx占用80端口、PHP-FPM占用计算机的9000端口。
问题:请求过来后,都要先通过80端口的Nginx软件。那如果是.php为后缀的动态文件怎么处理呢?
2、创建php脚本
# cd /usr/local/nginx/html # vim demo.php
<?php
echo 'hello php!';
?>
直接在浏览器中,访问IP地址+demo.php,自动弹出下载
原因分析:正常情况下,Nginx不具备PHP代码的解析功能。所以遇到PHP 代码以后,会把其当做未知文件,自动调用下载器进行下载。
3、让Nginx把.php文件转发PHP-FPM
Nginx 识别.php代码,然后转发 PHP-FPM
所以核心就是更改Nginx的配置文件nginx.conf:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
# 监听端口
listen 80;
# 真实域名,localhost代表本机
server_name localhost;
# 项目目录
root html;
# 任意请求
location / {
# 默认首页(如果在html目录发现默认首页,直接运行)
index index.html index.htm;
}
# 添加PHP文件支持
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME
$document_root$fastcgi_script_name;
include fastcgi_params;
}
# 当访问遇到错误时,返回50x.html页面给用户
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
nginx.conf文件,主要由三部分组成:
http {
server {}
server {}
}
一个nginx.conf对应一个http,代表http请求,所以一个页面只有一个http
一个http可以包含多个server区块,每个区块就是一个项目(网站)=> 虚拟主机
配置让Nginx可以识别.php文件,然后转发:
设置完成后,一定要重载Nginx
# systemctl reload nginx
重载完成后一定要检查一下9000端口是否启用,否则请求过来之后无法进行转发。