1. 程式人生 > >2018-3-12 12周1次課 LNMP下的MySQL、PHP安裝和配置

2018-3-12 12周1次課 LNMP下的MySQL、PHP安裝和配置

LNMP MySQL PHP

12.1 LNMP架構介紹



和LAMP不同的是,提供web服務的是Nginx

並且php是作為一個獨立服務存在的,這個服務叫做php-fpm

Nginx直接處理靜態請求,動態請求會轉發給php-fpm


技術分享圖片


用戶並發支持很大,可以上好幾萬,Apache做不到





12.2 MySQL安裝


[root@localhost ~]# cd /usr/local/src/
[root@localhost src]# wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
(過程省略)
[root@localhost src]# tar zxvf mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
(過程省略)
[root@localhost src]# mv mysql-5.6.36-linux-glibc2.5-x86_64 /usr/local/mysql
[root@localhost src]# cd ../mysql/
[root@localhost mysql]# ls
bin  COPYING  data  docs  include  lib  man  mysql-test  README  scripts  share  sql-bench  support-files
[root@localhost mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
FATAL ERROR: please install the following Perl modules before executing ./scripts/mysql_install_db:
Data::Dumper                            ##需要裝perl-Data-Dumper.x86_64包
[root@localhost mysql]# useradd mysql
[root@localhost mysql]# mkdir /data
[root@localhost mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
(過程省略)
[root@localhost mysql]# cp support-files/my-default.cnf /etc/my.cnf
[root@localhost mysql]# vim /etc/my.cnf

技術分享圖片

[root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@localhost mysql]# /etc/init.d/mysqld start
Starting MySQL.Logging to '/data/mysql/localhost.localdomain.err'.
SUCCESS!
[root@localhost mysql]# ps aux |grep mysql
root       1214  0.1  0.1 113264  1600 pts/0    S    21:59   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/localhost.localdomain.pid
mysql      1351  5.7 44.9 1300784 449548 pts/0  Sl   21:59   0:00 /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/localhost.localdomain.err --pid-file=/data/mysql/localhost.localdomain.pid --socket=/tmp/mysql.sock
root       1375  0.0  0.0 112676   984 pts/0    R+   21:59   0:00 grep --color=auto mysql
[root@localhost mysql]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      803/sshd
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      904/master
tcp6       0      0 :::22                   :::*                    LISTEN      803/sshd
tcp6       0      0 ::1:25                  :::*                    LISTEN      904/master
tcp6       0      0 :::3306                 :::*                    LISTEN      1351/mysqld
[root@localhost mysql]# chkconfig --add mysqld
[root@localhost mysql]# chkconfig --list
註:該輸出結果只顯示 SysV 服務,並不包含
原生 systemd 服務。SysV 配置數據
可能被原生 systemd 配置覆蓋。
要列出 systemd 服務,請執行 'systemctl list-unit-files'。
查看在具體 target 啟用的服務請執行
'systemctl list-dependencies [target]'。
mysqld         0:關1:關2:開3:開4:開5:開6:關
netconsole     0:關1:關2:關3:關4:關5:關6:關
network        0:關1:關2:開3:開4:開5:開6:關
[root@localhost mysql]# chkconfig mysqld on            ##加入開機啟動
[root@localhost mysql]# service mysqld stop            ##現在可以用服務命令
Shutting down MySQL.. SUCCESS!
[root@localhost mysql]# service mysqld start
Starting MySQL. SUCCESS!





12.3/12.4 PHP安裝



·LNMP下的PHP安裝和LAMP下PHP安裝有差別,需要開啟php-fpm服務

·如果之前編譯過php,那麽進到源碼包中,用make clean清除之前make過的文件

[root@localhost src]# cd php-5.6.30/
[root@localhost php-5.6.30]# make clean

·如果沒有編譯過的php,甚至麽有下載php源碼包,那麽從下載開始做

[root@localhost src]# wget http://cn2.php.net/distributions/php-5.6.30.tar.bz2
(過程省略)
[root@localhost src]# tar jxvf php-5.6.30
(過程省略)
[root@localhost php-5.6.30]# useradd -s /sbin/nologin php-fpm           ##也可以直接useradd php-fpm
[root@localhost php-5.6.30]# ./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
(過程省略)
[root@localhost php-5.6.30]# make && make install
(過程省略)
[root@localhost php-5.6.30]# /usr/local/php-fpm/sbin/php-fpm -m        ##查看模塊
(此處省略)
[root@localhost php-5.6.30]# /usr/local/php-fpm/sbin/php-fpm -i        ##查看信息
(此處省略)
(php-fpm -m 和 php-fpm -i 配合php -m 和 php -i 使用)
[root@localhost php-5.6.30]# /usr/local/php-fpm/sbin/php-fpm -t        ##測試語法
[12-Mar-2018 22:37:17] ERROR: failed to open configuration file '/usr/local/php-fpm/etc/php-fpm.conf': No such file or directory (2)
[12-Mar-2018 22:37:17] ERROR: failed to load configuration file '/usr/local/php-fpm/etc/php-fpm.conf'
[12-Mar-2018 22:37:17] ERROR: FPM initialization failed
[root@localhost php-5.6.30]# cp php.ini-production /usr/local/php-fpm/etc/php.ini
[root@localhost php-5.6.30]# cd /usr/local/php-fpm/etc/
[root@localhost etc]# vim php-fpm.conf

技術分享圖片

(listen也可以為127.0.0.1:9000,監聽內部網絡

listen.mode = 666 定義/tmp/php-fcgi.sock的權限為666)


[root@localhost etc]# cd ..
[root@localhost php-fpm]# cp /usr/local/src/php-5.6.30/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@localhost php-fpm]# cd /etc/init.d/
[root@localhost init.d]# chmod 755 php-fpm            ##更改php-fpm權限為755
[root@localhost init.d]# chkconfig --add php-fpm
[root@localhost init.d]# chkconfig php-fpm on
[root@localhost init.d]# chkconfig
註:該輸出結果只顯示 SysV 服務,並不包含
原生 systemd 服務。SysV 配置數據
可能被原生 systemd 配置覆蓋。
要列出 systemd 服務,請執行 'systemctl list-unit-files'。
查看在具體 target 啟用的服務請執行
'systemctl list-dependencies [target]'。
mysqld         0:關1:關2:開3:開4:開5:開6:關
netconsole     0:關1:關2:關3:關4:關5:關6:關
network        0:關1:關2:開3:開4:開5:開6:關
php-fpm        0:關1:關2:開3:開4:開5:開6:關
[root@localhost init.d]# service php-fpm start
Starting php-fpm  done
[root@localhost init.d]# ps aux |grep php-fpm
root     123135  0.0  0.4 123612  4952 ?        Ss   22:59   0:00 php-fpm: master process (/usr/local/php-fpm/etc/php-fpm.conf)
php-fpm  123136  0.0  0.4 123612  4708 ?        S    22:59   0:00 php-fpm: pool www
php-fpm  123137  0.0  0.4 123612  4708 ?        S    22:59   0:00 php-fpm: pool www
php-fpm  123138  0.0  0.4 123612  4708 ?        S    22:59   0:00 php-fpm: pool www
php-fpm  123139  0.0  0.4 123612  4708 ?        S    22:59   0:00 php-fpm: pool www
php-fpm  123140  0.0  0.4 123612  4712 ?        S    22:59   0:00 php-fpm: pool www
php-fpm  123141  0.0  0.4 123612  4712 ?        S    22:59   0:00 php-fpm: pool www
php-fpm  123142  0.0  0.4 123612  4712 ?        S    22:59   0:00 php-fpm: pool www
php-fpm  123143  0.0  0.4 123612  4712 ?        S    22:59   0:00 php-fpm: pool www
php-fpm  123144  0.0  0.4 123612  4712 ?        S    22:59   0:00 php-fpm: pool www
php-fpm  123145  0.0  0.4 123612  4716 ?        S    22:59   0:00 php-fpm: pool www
php-fpm  123146  0.0  0.4 123612  4716 ?        S    22:59   0:00 php-fpm: pool www
php-fpm  123147  0.0  0.4 123612  4716 ?        S    22:59   0:00 php-fpm: pool www
php-fpm  123148  0.0  0.4 123612  4716 ?        S    22:59   0:00 php-fpm: pool www
php-fpm  123149  0.0  0.4 123612  4716 ?        S    22:59   0:00 php-fpm: pool www
php-fpm  123150  0.0  0.4 123612  4716 ?        S    22:59   0:00 php-fpm: pool www
php-fpm  123151  0.0  0.4 123612  4716 ?        S    22:59   0:00 php-fpm: pool www
php-fpm  123152  0.0  0.4 123612  4716 ?        S    22:59   0:00 php-fpm: pool www
php-fpm  123153  0.0  0.4 123612  4716 ?        S    22:59   0:00 php-fpm: pool www
php-fpm  123154  0.0  0.4 123612  4716 ?        S    22:59   0:00 php-fpm: pool www
php-fpm  123155  0.0  0.4 123612  4716 ?        S    22:59   0:00 php-fpm: pool www
root     123162  0.0  0.0 112676   976 pts/0    R+   23:00   0:00 grep --color=auto php-fpm


右側的www就是php.ini配置文件中的www,而左側php-fpm就是配置文件中定義的用戶

[root@localhost init.d]# ll /tmp/php-fcgi.sock
srw-rw-rw- 1 root root 0 3月  12 23:04 /tmp/php-fcgi.sock

而sock文件權限也是配置文件中定義的666


·安裝問題匯總:

1,configure: error: Please reinstall the libcurl distribution - easy.h should be in <curl-dir>/include/curl/

安裝libcrul-devel

yum install -y libcurl-devel






12.5 Nginx介紹


·Nginx官網 nginx.org

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

·Nginx著名分支,淘寶基於Nginx開發的Tengine,使用上和Nginx一致,服務名,配置文件名都一樣,

和Nginx的最大區別在於Tenging增加了一些定制化模塊,在安全限速方面表現突出,另外它支持對js,css合並

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

參考http://jinnianshilongnian.iteye.com/blog/2280928





2018-3-12 12周1次課 LNMP下的MySQL、PHP安裝和配置