9月18號上課筆記
LNMP架構
LLNMP和·LAMP唯一不同·的是指提供web服務的是Nginx, 在Apache中,PHP是作為一個模組存在的。而在Nginx中,PHP是作為一個獨立服務存在的,這個服務叫做php-fpm。 Nginx直接處理靜態請求,動態請求會轉發給php-fpm.
mysql安裝
由於之前做LAMP時安裝過這裡想要安裝MySQL,就要先將前面的MySQL刪除。
刪掉一下檔案:
[[email protected] src]# rm -rf /usr/local/mysql
刪除啟動指令碼:
[[email protected] src]# rm -rf /etc/init.d/mysqld
刪除/data/mysql:
[[email protected] mysql]# rm -rf /data/mysql/*
MySQL的配置檔案(/etc/my.cnf)可以不用刪
在/usr/local/src/目錄下,下載MySQL的包。
-
[[email protected] ~]# cd /usr/local/src/
-
[[email protected] src]# ls
-
apr-1.6.3 mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz
-
apr-1.6.3.tar.gz mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
-
apr-util-1.6.1 php-5.6.30
-
apr-util-1.6.1.tar.bz2 php-5.6.30.tar.bz2
-
httpd-2.2.34 php-7.1.6
-
httpd-2.2.34.tar.gz php-7.1.6.tar.bz2
-
httpd-2.4.29 phpredis-develop
-
httpd-2.4.29.tar.gz phpredis-develop.zip
下載完後解壓:
[[email protected] src]# tar zxvf mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
解壓完後,將其移動並重命名:
[[email protected] src]# mv mysql-5.6.36-linux-glibc2.5-x86_64 /usr/local/mysql
進入MySQL下:
-
[[email protected] src]# cd /usr/local/mysql/
-
[[email protected] mysql]# ls
-
bin data include man README share support-files
-
COPYING docs lib mysql-test scripts sql-bench
建立MySQL的使用者,建立/data/mysql時,屬組屬主是MySQL建立的使用者。
初始化:
[[email protected] mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
初始化完成(要出現兩個OK,或者echo $? 為0)
更改配置檔案(/etc/my.cnf)
-
[mysqld]
-
datadir=/data/mysql
-
socket=/tmp/mysql.sock
拷貝一個啟動指令碼過來:
[[email protected] mysql]# cp support-files/mysql.server /etc/init.d/mysql
編輯啟動指令碼:
-
[[email protected] mysql]# vim /etc/init.d/mysql
-
basedir=/usr/local/mysql
-
datadir=/data/mysql
這個時候就可以啟動了。
-
[[email protected] mysql]# /etc/init.d/mysqld start
-
Starting MySQL.Logging to '/data/mysql/shuai-01.err'.
-
... SUCCESS!
設定開機自啟動:
-
[[email protected] mysql]# chkconfig --add mysqld
-
[[email protected] mysql]# chkconfig mysqld on
PHP安裝
PHP在LAMP和LNMP安裝是有差別的。
刪掉PHP: 進入到目錄下(PHP原始碼包下):
[[email protected] src]# cd php-5.6.30/
刪除之前編譯過的檔案:
-
[[email protected] php-5.6.30]# make clean
-
find . -name \*.gcno -o -name \*.gcda | xargs rm -f
-
find . -name \*.lo -o -name \*.o | xargs rm -f
-
find . -name \*.la -o -name \*.a | xargs rm -f
-
find . -name \*.so | xargs rm -f
-
find . -name .libs -a -type d|xargs rm -rf
-
rm -f libphp5.la sapi/cli/php sapi/cgi/php-cgi libphp5.la modules/* libs/*
刪掉之後。PHP就像是一個剛剛解壓的檔案 取名為php-fpm:
編譯:
-
[[email protected] 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
-
//--prefix 指定路徑
-
//--with-config-file-path 指定配置檔案所在路徑
-
//--enable-fpm 要加上這個,如果不加就不會有php-fpm執行檔案生成,更不能啟動php-fpm服務。
-
//--with-fpm-user=php-fpm --with-fpm-group 指定使用者和組
-
//--with-mysql 指定mysql路徑,後面的mysqli,pdo-mysql,mysql-sock也一樣
編譯完成後就開始make && make install
拷貝配置檔案
[[email protected] php-5.6.30]# cp php.ini-production /usr/local/php-fpm/etc/php.ini
新增php-fpm使用者
[[email protected] php-5.6.30]# useradd php-fpm
編輯php-fpm.conf配置檔案:
-
vi /usr/local/php-fpm/etc/php-fpm.conf
-
[global]
-
pid = /usr/local/php-fpm/var/run/php-fpm.pid
-
error_log = /usr/local/php-fpm/var/log/php-fpm.log
-
[www] //一個模組的名字
-
listen = /tmp/php-fcgi.sock //監聽的地址
-
#listen = 127.0.0.1:9000 //內部監聽,一般PHP和Nginx在一臺機器上
-
listen.mode = 666 //監聽的是sock的這行才會生效,用來定義sock檔案的許可權是666
-
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
拷貝啟動的指令碼: 進入到原始碼包的目錄下
-
[[email protected] php-5.6.30]# cd /usr/local/src/php-5.6.30/
-
[[email protected] php-5.6.30]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
把它加入服務列表裡去,先改許可權:
-
[[email protected] php-5.6.30]# chmod 755 /etc/init.d/php-fpm
-
[[email protected] php-5.6.30]# chkconfig --add php-fpm
-
chkconf[[email protected] php-5.6.30]# chkconfig php-fpm on
問題1:
-
checking for cURL in default path... not found
-
configure: error: Please reinstall the libcurl distribution -
-
easy.h should be in <curl-dir>/include/curl/
缺少cURL這個包,安裝
[[email protected] php-5.6.30]# yum install libcurl-devel
安裝完成再編譯
nginx介紹
Nginx應用場景:web服務,反向代理,負載均衡。 官網:nginx.org ,有最新版,穩定版(stable)。 淘寶基於Nginx開發的Tengine,跟Nginx一致,服務名,配置檔案都一樣,最大的區別是增加了一些定製化的模組,在安全方面。支援js,css這些靜態元素的合併。