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

12.1 LNMP架構介紹

• 和LAMP不一樣的是,提供web服務的是Nginx • 而且php是做爲一個獨立服務存在的,這個服務叫作php-fpm • Nginx直接處理靜態請求,動態請求會轉發給php-fpmphp

12.2 MySQL安裝

二進制免編譯安裝mysql 5.7.20css

1 下載解壓mysql

cd /usr/local/src
wget http://mirrors.ustc.edu.cn/mysql-ftp/Downloads/MySQL-5.7/mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
tar xf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.20-linux-glibc2.12-x86_64 /usr/local/mysql

2 初始化linux

useradd -M -s /sbin/nologin  mysql 
mkdir -p /data/mysql
chown mysql /data/mysql
cd /usr/local/mysql
./bin/mysqld  --initialize --user=mysql --datadir=/data/mysql
注意,這一步最後一行會有一個提示
[Note] A temporary password is generated for root@localhost: vF)rn:Z;i5Al
最後面的字符串爲root密碼。
./bin/mysql_ssl_rsa_setup --datadir=/data/mysql

3 新建配置文件和啓動腳本nginx

mv /etc/my.cnf  /etc/my.cnf.bak  或者 rm /etc/my.cnf 刪除系統自動的my.cnf  
vim /etc/my.cnf //新建一個my.cnf並編輯   注意 這裏我mysql的端口

[client]
port=33060
default-character-set=utf8
[mysqld]
# 設置爲本身MYSQL的安裝目錄
basedir=/usr/local/mysql
# 設置爲MYSQL的數據目錄
datadir=/data/mysql
port=33060
socket=/tmp/mysql.sock
character_set_server=utf8
#開啓查詢緩存
explicit_defaults_for_timestamp=true


cp support-files/mysql.server /etc/init.d/mysqld
vim /etc/init.d/mysqld   //編輯修改

basedir=/usr/local/mysql
datadir=/data/mysql

4 啓動以及其它git

1 常規啓動 /etc/init.d/mysqld startweb

2 設置mysql開機啓動 , 測試sql

chkconfig --add mysqld
service mysqld start | stop | restart 
netstat -lntp |grep 33060  或 ps aux | grep mysql      //查看mysql端口. 查看mysql啓動的進程

此時輸入mysql可能沒法鏈接,這是由於當前環境變量路徑中找不到mysql

echo "export PATH=/usr/local/mysql/bin:$PATH">>/etc/profile
source /etc/profile

以後可順利鏈接mysqlvim

12.3/12.4 PHP安裝

make clean 能夠把php源碼包中以前configure編譯過的文件所有清除掉api

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

cd /usr/local/src/
wget http://cn.php.net/distributions/php-7.2.1.tar.gz
tar xf php-7.2.1.tar.gz
useradd  -M -s /sbin/nologin php-fpm
cd php-7.2.1/

./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-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 --enable-soap  --enable-ftp --enable-mbstring --enable-exif --with-pear --with-curl  --with-openssl  --with-mcrypt, --enable-gd-native-ttf



make && make install

cp php.ini-production /usr/local/php-fpm/etc/php.ini

vim /usr/local/php-fpm/etc/php-fpm.conf //寫入以下內容(參考https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D15Z/php-fpm.conf)// 默認conf爲 /usr/local/php-fpm/etc/php-fpm.conf.default , 好像不大好用

[global]  //定義全局參數
pid = /usr/local/php-fpm/var/run/php-fpm.pid  //定義pid
error_log = /usr/local/php-fpm/var/log/php-fpm.log   //定義錯誤日誌文件
[www]     //模塊www
listen = /tmp/php-fcgi.sock   //監聽的地址 也能夠寫成 listen = 127.0.0.1:9000,  port默認9000, 後面nginx裏的虛擬主機conf 解析php 相關配置也要寫的和這裏匹配,不然會報502錯誤 
listen.mode = 666    //監聽sock纔會生效, sock文件權限爲666, 不指定默認爲660, sock屬主和屬組是root, 但nginx讀sock用戶的身份是nobody, 因此會報502錯誤
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

cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod 755 /etc/init.d/php-fpm
chkconfig --add php-fpm
chkconfig php-fpm on
service php-fpm start      // reload   重載php配置文件
ps aux |grep php-fpm

編譯php時,若是mysql不在同一臺機器上怎麼辦 http://ask.apelearn.com/question/17664

./configure --prefix=/usr/local/php-fpm --with-config-file-path=/usr/local/php-fpm/etc --enable-fpm --with-fpm-user=nobody --with-fpm-group=php-fpm --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --enable-soap --enable-ftp --enable-mbstring --enable-exif --with-pear --with-curl --with-openssl

12.5 Nginx介紹

Nginx官網 nginx.org,最新版1.13,最新穩定版1.12 Nginx應用場景:web服務、反向代理、負載均衡 Nginx著名分支,淘寶基於Nginx開發的Tengine,使用上和Nginx一致,服務名,配置文件名都同樣,和Nginx的最大區別在於Tenging增長了一些定製化模塊,在安全限速方面表現突出,另外它支持對js,css合併 Nginx核心+lua相關的組件和模塊組成了一個支持lua的高性能web容器openresty,參考http://jinnianshilongnian.iteye.com/blog/2280928

相關文章
相關標籤/搜索