2018-3-12 12周1次課 LNMP下的MySQL、PHP安裝和配置
和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安裝和配置