12.1 LNMP架構介紹 12.2 MySQL安裝 12.3/12.4 PHP安裝 12.5 Nginx介紹

12.1 LNMP架構介紹

LNMP是Linux+Nginx+MySQL+PHP的簡稱php

• 和LAMP不一樣的是,提供web服務的是Nginx,而且php是做爲一個獨立服務存在的,叫作php-fpm。css

• Nginx直接處理靜態請求,動態請求會轉發給php-fpm,Nginx處理靜態請求的能力要高於Apache。html

12.2 MySQL安裝

MySQL的幾個經常使用安裝包:rpm、源碼、二進制免編譯mysql

  1. Mysql的源碼安裝是cmake和apache的make不同,具體查看安裝文檔。
  2. rpm包安裝不能自定義安裝路徑;
  3. 二進制:在發佈以前在一臺linux服務器上,作一個編譯,而後把編譯完成的文件從新編排放到一個目錄下,打包壓縮後發佈出來;好處是不用花費太多的時間去編譯,直接解壓後使用.若是想要更加準確完善的安裝,可使用源碼安裝,通常使用二進制安裝就能夠。

二進制包是區分平臺的,centos7以前的版本都是區分32位和64位,centos7直接選擇64位安裝。linux

[root@linux-10 src]# uname –i   //查看linux是多少位
x86_64

下載源碼包:

[root@linux-10 ~]# cd /usr/local/src  	//建議將全部軟件包都放在這個目錄下

下載地址到r.aminglinux.com找最新的下載nginx

[root@linux-10 src]# wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz

注:本人因爲網絡問題,沒法直接將安裝包下載至Linux操做系統中,故採用先下載至本地Windows系統上(版本5.6.35),後經過rz命令上傳至Linux操做系統上web

初始化

1.解壓

[root@linux-10 src]# tar zxvf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz

2.重命名

[root@linux-10 src]# mv mysql-5.6.35-linux-glibc2.5-x86_64 /usr/local/mysql
[root@linux-10 ~]# cd /usr/local/mysql
[root@linux-10 mysql]# ls
bin      data  include  man         README   share      support-files
COPYING  docs  lib      mysql-test  scripts  sql-bench

3.創建mysql用戶,由於啓動mysql時須要該用戶

[root@linux-10 mysql]# useradd -s /sbin/nologin mysql

4.建立存放數據庫目錄的目錄

[root@linux-10 mysql]# mkdir /data

5.初始化

[root@linux-10 mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql  
//--user=mysql 以用戶mysql身份運行,--datadir=/data/mysql存放數據庫的目錄
ERROR: please install the following Perl modules before executing ./scripts/mysql_install_db:
Data::Dumper    //這裏出現了錯誤,緣由是缺乏包 perl-Module-Install 

可使用yum list 來查看缺乏包
[root@linux-10 mysql]# yum list |grep perl |grep -i dumper
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
perl-Data-Dumper.x86_64                 2.145-3.el7                    base
perl-Data-Dumper-Concise.noarch         2.020-6.el7                    epel
perl-Data-Dumper-Names.noarch           0.03-17.el7                    epel
perl-XML-Dumper.noarch                  0.81-17.el7                    base

安裝perl-Data-Dumper包
[root@linux-10 mysql]# yum install -y perl-Data-Dumper

6.而後再執行一次

[root@linux-10 mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql  
若是看到兩個OK說明執行正確,或者echo $? 結果爲0 也表示執行正確。
[root@linux-10 mysql]# echo $?
0

配置Mysql

Mysql的配置文件在/usr/local/mysql/support-files/目錄下my-default.cnf,它是msyql的模板配置文件sql

1.拷貝配置文件

[root@linux-10 mysql]# cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
cp:是否覆蓋"/etc/my.cnf"? y    	
//這裏已經存在文件my.cnf,這是以前系統rpm安裝留下的,咱們能夠查看它是哪一個包安裝的
[root@linux-10 mysql]# rpm -qf /etc/my.cnf
mariadb-libs-5.5.52-1.el7.x86_64

咱們這裏直接按「y」覆蓋便可數據庫

2.修改配置文件

[root@linux-10 ~]# vim /etc/my.cnf

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
# *** default location during install, and will be replaced if you
# *** upgrade to a newer version of MySQL.

[mysqld]

# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M

# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin

# These are commonly set, remove the # and set as required.
basedir = /usr/local/mysql   //mysql的安裝目錄
datadir = /data/mysql        //存放數據庫的目錄
port = 3306                  //端口
# server_id = .....          //mysql的ID號,作主從的時候要用到
socket = /tmp/mysql.sock     //mysql服務監聽的套件字地址,也是用來通訊的。

# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M

啓動腳本

1.複製啓動腳本

[root@linux-10 mysql]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

2.修改啓動腳本

[root@linux-10 mysql]# vim /etc/init.d/mysqld
basedir=/usr/local/mysql
datadir=/data/mysql

3.修改權限

[root@linux-10 mysql]# chmod 755 /etc/init.d/mysqld

4.將mysqld服務加入到系統服務列表中

[root@linux-10 mysql]# chkconfig --add mysqld

5.設置開機啓動

[root@linux-10 mysql]# chkconfig mysqld on

6.啓動服務

[root@linux-10 ~]# service mysqld start 
Starting MySQL.Logging to '/data/mysql/linux-5.err'.
. SUCCESS!

注:若是啓動不了,請到/data/mysql/目錄下查看錯誤日誌,這個日誌一般是主機名.errapache

7.查看mysql進程

[root@linux-10 ~]# ps aux |grep mysqld
root       3233  0.0  0.0  11772  1596 pts/1    S    19:58   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/linux-5.pid
mysql      3395  0.8 24.0 973052 449444 pts/1   Sl   19:58   0:01 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql/linux-5.err --pid-file=/data/mysql/linux-5.pid --socket=/tmp/mysql.sock --port=3306
root       3443  0.0  0.0 112676   984 pts/1    S+   20:01   0:00 grep --color=auto mysqld

8.查看mysql監聽的端口

[root@linux-10 ~]# netstat -lnp |grep mysqld
tcp6       0      0 :::3306                 :::*                    LISTEN      3395/mysqld         
unix  2      [ ACC ]     STREAM     LISTENING     55465    3395/mysqld          /tmp/mysql.sock

若是咱們不知道mysql的啓動文件,咱們還可使用命令行的方法來啓動mysql 先關閉以前打開的mysql

[root@linux-10 mysql]# service mysqld stop
Shutting down MySQL.. SUCCESS!

執行命令行

/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql &
//--defaults-file=/etc/my.cnf指定配置文件的路徑

12.3/12.4 PHP安裝

和LAMP安裝PHP方法有差異,須要開啓php-fpm服務

下載PHP5.6安裝包

cd /usr/local/src/ 
wget http://cn2.php.net/distributions/php-5.6.32.tar.bz2

解壓安裝包

tar jxvf php-5.6.32.tar.bz2

創建php-fpm用戶,由於啓動php-fpm服務時須要該用戶

useradd -s /sbin/nologin php-fpm

初始化

cd /usr/local/src/php-5.6.32/

./configure --prefix=/usr/local/php-fpm --with-config-file-path=/usr/local/php-fpm/etc --enable-fpm --with-fpm-user=php-fpm --with-fpm-group=php-fpm --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-pdo-mysql=/usr/local/mysql --with-mysql-sock=/tmp/mysql.sock --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-ftp --enable-mbstring --enable-exif --with-pear --with-curl  --with-openssl
//--prefix=/usr/local/php-fpm 指定安裝目錄
//--with-config-file-path=/usr/local/php-fpm/etc 指定PHP配置文件所在路徑(PHP配置文件後綴爲.ini)
//--enable-fpm 啓動fpm服務
// --with-mysql=/usr/local/mysql --with-pdo-mysql=/usr/local/mysql --with- 
   mysqli=/usr/local/mysql/bin/mysql_config 三種鏈接MySQL的驅動

初始化報錯,須要curl包

yum -y install libcurl-devel

編譯&&安裝

make && make install

php-fpm特性

1.比LAMP架構中的PHP多了兩個文件,通常執行的命令均在/usr/local/php-fpm/sbin/php-fpm目錄下

2.一樣支持-m、-i選項(與/usr/local/php-fpm/bin/php相同)

/usr/local/php-fpm/sbin/php-fpm -m
/usr/local/php-fpm/sbin/php-fpm -i

3.-t選項

/usr/local/php-fpm/sbin/php-fpm -t //檢測自身配置語法錯誤

配置php-fpm服務

拷貝PHP配置文件

cp php.ini-production /usr/local/php-fpm/etc/php.ini   //生產環境
cp php.ini-development /usr/local/php-fpm/etc/php.ini  //研發環境

建立並編寫php-fpm.conf文件

[root@linux-10 php-5.6.32]# cd /usr/local/php-fpm/etc 
[root@linux-10 etc]# vim php-fpm.conf
[global]
pid = /usr/local/php-fpm/var/run/php-fpm.pid            //pid存放路徑
error_log = /usr/local/php-fpm/var/log/php-fpm.log      //錯誤日誌存放路徑
[www]
listen = /tmp/php-fcgi.sock                             //監聽地址,用於服務間通訊
listen.mode = 666                                       //sock文件的權限
user = php-fpm                                          //定義服務所屬用戶
group = php-fpm                                         //定義服務所屬組
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024

注:監聽地址(listen)也能夠寫成listen = 127.0.0.1:9000的格式,由於php-fpm是內部服務,因此採用迴環地址通訊便可,默認端口爲9000。可是兩種配置格式的不一樣,會致使後續相關配置的格式也有所不一樣。

拷貝啓動腳本

cd /usr/local/src/php-5.6.32
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

修改啓動腳本文件權限

chmod 755 /etc/init.d/php-fpm

將php-fpm服務添加至系統服務列表中

chkconfig --add php-fpm

設置服務開機啓動

chkconfig php-fpm on

啓動php-fpm服務

[root@linux-10 php-5.6.32]# service php-fpm start
Starting php-fpm  done

查看服務進程是否存在

[root@linux-10 php-5.6.32]# ps aux |grep php-fpm
root       4790  0.0  0.2 123652  4944 ?        Ss   10:40   0:00 php-fpm: master process (/usr/local/php-fpm/etc/php-fpm.conf)
php-fpm    4791  0.0  0.2 123652  4708 ?        S    10:40   0:00 php-fpm: pool www
php-fpm    4792  0.0  0.2 123652  4708 ?        S    10:40   0:00 php-fpm: pool www
php-fpm    4793  0.0  0.2 123652  4708 ?        S    10:40   0:00 php-fpm: pool www
php-fpm    4794  0.0  0.2 123652  4708 ?        S    10:40   0:00 php-fpm: pool www
php-fpm    4795  0.0  0.2 123652  4712 ?        S    10:40   0:00 php-fpm: pool www
php-fpm    4796  0.0  0.2 123652  4712 ?        S    10:40   0:00 php-fpm: pool www
php-fpm    4797  0.0  0.2 123652  4712 ?        S    10:40   0:00 php-fpm: pool www
php-fpm    4798  0.0  0.2 123652  4712 ?        S    10:40   0:00 php-fpm: pool www
php-fpm    4799  0.0  0.2 123652  4712 ?        S    10:40   0:00 php-fpm: pool www
php-fpm    4800  0.0  0.2 123652  4716 ?        S    10:40   0:00 php-fpm: pool www
php-fpm    4801  0.0  0.2 123652  4716 ?        S    10:40   0:00 php-fpm: pool www
php-fpm    4802  0.0  0.2 123652  4716 ?        S    10:40   0:00 php-fpm: pool www
php-fpm    4803  0.0  0.2 123652  4716 ?        S    10:40   0:00 php-fpm: pool www
php-fpm    4804  0.0  0.2 123652  4716 ?        S    10:40   0:00 php-fpm: pool www
php-fpm    4805  0.0  0.2 123652  4716 ?        S    10:40   0:00 php-fpm: pool www
php-fpm    4806  0.0  0.2 123652  4716 ?        S    10:40   0:00 php-fpm: pool www
php-fpm    4807  0.0  0.2 123652  4716 ?        S    10:40   0:00 php-fpm: pool www
php-fpm    4808  0.0  0.2 123652  4716 ?        S    10:40   0:00 php-fpm: pool www
php-fpm    4809  0.0  0.2 123652  4716 ?        S    10:40   0:00 php-fpm: pool www
php-fpm    4810  0.0  0.2 123652  4716 ?        S    10:40   0:00 php-fpm: pool www
root       4812  0.0  0.0 112720   968 pts/0    R+   10:40   0:00 grep --color=auto php-fpm

12.5 Nginx介紹

• Nginx官網 nginx.org,最新版1.15,最新穩定版1.14

• Nginx應用場景:web服務、反向代理、負載均衡

• Nginx著名分支,淘寶基於Nginx開發的Tengine,使用上和Nginx一致,服務名,配置文件名都同樣,和Nginx的最大區別是Tenging增長了一些定製化模塊,在安全限速方面表現突出,另外它支持對js,css合併

 • Nginx核心+lua相關的組件和模塊組成了一個支持lua的高性能web容器openresty

相關文章
相關標籤/搜索