第二十課 LNMP
目錄
- LNMP架構介紹
- MySQL安裝
- PHP安裝
- Nginx安裝
- 驗證 PHP 能否解析
1. LNMP架構介紹
其實就是四個大寫字母的縮寫,分別是 Linux + Nginx + MySQL + PHP,不同於Apache,LNMP中 Nginx 與 PHP 可以不必在一臺機子上
1.1 LNMP 架構圖
ps. 與 LAMP 不同,PHP 不再以 Apache 的 Module 的形式存在,而是獨立出來成為單獨的服務。
1.2 NGINX
Nginx是一款俄羅斯工程師開發的輕量級的Web 伺服器/反向代理伺服器及電子郵件(IMAP/POP3)代理伺服器,其特點是佔有記憶體少,併發能力強,中國使用 nginx 網站的企業有:百度、京東、新浪、網易、騰訊、淘寶等。
2 MySQL安裝
3.1 下載、解壓
- 將安裝包下載到 /usr/local/src/ 中(300MB)
[root@LNMP ~]# cd /usr/local/src
[root@LNMP src]# wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
- 解壓縮,並放於正式安裝目錄
[root@LNMP src]# tar -xzvf mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
[root@LNMP src]# mv mysql-5.6.36-linux-glibc2.5-x86_64 /usr/local/mysql
[root@LNMP src]# cd /usr/local/mysql
3.2 建立賬戶與目錄
- 建立使用 MySQL 的賬戶
[root@LNMP mysql]# useradd mysql
- 建立存放資料的目錄
[root@LNMP mysql]# mkdir /data/
3.3 安裝
- 執行安裝命令,若在最終輸出中看到 兩個 OK 則表示成功安裝。(此處不再贅述依賴關係的解決過程)
[[email protected] mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql # 只需提前建立 /data/即可,而 /data/mysql 會由該指令碼自動建立
3.4 配置
- 將安裝包中帶有的 MySQL 配置檔案複製到 /etc/ 下(CentOS 7 初始安裝時就已經有 /etc/my.cnf 了,所以其實不替換也可以,只要保證有必要的配置資訊)
## 在此我採用替換的方法,所以要提前備份一下原有的 /etc/my.cnf
[root@LNMP mysql]# mv /etc/my.cnf /etc/my.cnf.bak
[root@LNMP mysql]# cp support-files/my-default.cnf /etc/my.cnf
- 修改配置檔案內容
[[email protected] mysql]# vi /etc/my.cnf
## 配置如下幾行(配置檔案中本就有,但被註釋了)
basedir = /usr/local/mysql
datadir = /data/mysql
port = 3306
socket = /tmp/mysql.sock
- 將 MySQL 服務的啟動程式複製到 /etc/init.d/mysqld 下
[root@LNMP mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@LNMP mysql]# chmod 755 /etc/init.d/mysqld
- 修改啟動程式內容
$ vi /etc/init.d/mysqld
basedir=/usr/local/mysql
datadir=/data/mysql
## 該行中增加 --basedir="$basedir"
$bindir/mysqld_safe --datadir="$datadir" --basedir="$basedir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null &
- 將 mysqld 新增至開機啟動
[root@LNMP mysql]# chkconfig --add mysqld
3.5 MySQL 的啟動
[root@LNMP mysql]# /etc/init.d/mysqld start
Starting MySQL.Logging to '/data/mysql/localhost.localdomain.err'.
.. SUCCESS!
## 也可以採用以下命令啟動 MySQL
[root@LNMP mysql]# /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql
3.6 啟動情況檢視
## 看看是否按照我們的設定正確開啟了服務,如 basedir、datadir、port、user 等
[root@LNMP mysql]# ps aux | grep mysql
root 41896 0.0 0.0 113304 1648 pts/0 S 6月26 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --basedir=/usr/local/mysql --pid-file=/data/mysql/localhost.localdomain.pid
mysql 42074 3.4 11.7 1300828 455004 pts/0 Sl 6月26 0:02 /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 --port=3306
root 42103 0.0 0.0 112720 972 pts/0 S+ 00:00 0:00 grep --color=auto mysql
## 看看埠情況
[root@LNMP mysql]# netstat -ltnp | grep mysql
tcp6 0 0 :::3306 :::* LISTEN 42074/mysqld
3 PHP安裝
6.1 下載、解壓
[root@LNMP src]# cd /usr/local/src/
[root@LNMP src]# wget http://cn2.php.net/distributions/php-5.6.30.tar.gz
[root@LNMP src]# tar -xjvf php-5.6.30.tar.gz
[root@LNMP src]# cd php-5.6.30
6.2 建立使用賬戶
[root@LNMP mysql-5.6.30]# useradd -s /sbin/nologin php-fpm
6.3 安裝
[[email protected] mysql-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
[[email protected] mysql-5.6.30] make && make install
6.4 php常用命令
# 檢視配置資訊
$ /usr/local/php-fpm/bin/php -i
$ /usr/local/php-fpm/sbin/php-fpm -i
# 檢視模組資訊
$ /usr/local/php-fpm/bin/php -m
$ /usr/local/php-fpm/sbin/php-fpm -m
# 配置檔案語法檢查
$ /usr/local/php-fpm/sbin/php-fpm -t
6.4 配置
- 複製 php 配置檔案
[root@LNMP php-5.6.30]# cp php.ini-production /usr/local/php-fpm/etc/php.ini
- 修改 /usr/local/php/etc/php-fpm.conf
vim /usr/local/php/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.mode = 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
- 複製啟動檔案
[root@LNMP php-5.6.30]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@LNMP php-5.6.30]# chmod 755 /etc/init.d/php-fpm
- 設定開機啟動
[root@LNMP php-5.6.30]# chkconfig --add php-fpm
[root@LNMP php-5.6.30]# chkconfig php-fpm on
6.5 啟動 php-fpm
[root@LNMP php-5.6.30]# /etc/init.d/php-fpm start
[root@LNMP php-5.6.30]# ps aux | grep php-fpm
root 34161 0.0 0.1 227292 4944 ? Ss 10:53 0:00 php-fpm: master process (/usr/local/php-fpm/etc/php-fpm.conf)
php-fpm 34162 0.0 0.1 227292 4708 ? S 10:53 0:00 php-fpm: pool www
php-fpm 34163 0.0 0.1 227292 4708 ? S 10:53 0:00 php-fpm: pool www
php-fpm 34164 0.0 0.1 227292 4712 ? S 10:53 0:00 php-fpm: pool www
php-fpm 34165 0.0 0.1 227292 4712 ? S 10:53 0:00 php-fpm: pool www
php-fpm 34166 0.0 0.1 227292 4716 ? S 10:53 0:00 php-fpm: pool www
php-fpm 34167 0.0 0.1 227292 4716 ? S 10:53 0:00 php-fpm: pool www
php-fpm 34168 0.0 0.1 227292 4716 ? S 10:53 0:00 php-fpm: pool www
php-fpm 34169 0.0 0.1 227292 4716 ? S 10:53 0:00 php-fpm: pool www
php-fpm 34170 0.0 0.1 227292 4716 ? S 10:53 0:00 php-fpm: pool www
php-fpm 34171 0.0 0.1 227292 4716 ? S 10:53 0:00 php-fpm: pool www
php-fpm 34172 0.0 0.1 227292 4716 ? S 10:53 0:00 php-fpm: pool www
php-fpm 34173 0.0 0.1 227292 4716 ? S 10:53 0:00 php-fpm: pool www
php-fpm 34174 0.0 0.1 227292 4716 ? S 10:53 0:00 php-fpm: pool www
php-fpm 34175 0.0 0.1 227292 4716 ? S 10:53 0:00 php-fpm: pool www
php-fpm 34176 0.0 0.1 227292 4716 ? S 10:53 0:00 php-fpm: pool www
php-fpm 34177 0.0 0.1 227292 4716 ? S 10:53 0:00 php-fpm: pool www
php-fpm 34178 0.0 0.1 227292 4716 ? S 10:53 0:00 php-fpm: pool www
php-fpm 34179 0.0 0.1 227292 4716 ? S 10:53 0:00 php-fpm: pool www
php-fpm 34180 0.0 0.1 227292 4720 ? S 10:53 0:00 php-fpm: pool www
php-fpm 34181 0.0 0.1 227292 4720 ? S 10:53 0:00 php-fpm: pool www
root 34185 0.0 0.0 112704 956 pts/0 S+ 10:53 0:00 grep --color=auto php-fpm
4 Nginx安裝
4.1 下載、解壓
[root@LNMP php-5.6.30]# cd /usr/local/src
[root@LNMP src]# wget http://nginx.org/download/nginx-1.12.2.tar.gz
[root@LNMP src]# tar xzvf nginx-1.12.2.tar.gz
[root@LNMP src]# cd nginx-1.12.2
4.2 安裝
## ./configure
[root@LNMP nginx-1.12.2]# ./configure --prefix=/usr/local/nginx
## make && make install
[root@LNMP nginx-1.12.2]# make && make install
4.3 配置
- 編輯啟動檔案
[[email protected] nginx]# vim /etc/init.d/nginx
#!/bin/bash
# chkconfig: - 30 21
# description: http service.
# Source Function Library
. /etc/init.d/functions
# Nginx Settings
NGINX_SBIN="/usr/local/nginx/sbin/nginx"
NGINX_CONF="/usr/local/nginx/conf/nginx.conf"
NGINX_PID="/usr/local/nginx/logs/nginx.pid"
RETVAL=0
prog="Nginx"
start()
{
echo -n $"Starting $prog: "
mkdir -p /dev/shm/nginx_temp
daemon $NGINX_SBIN -c $NGINX_CONF
RETVAL=$?
echo
return $RETVAL
}
stop()
{
echo -n $"Stopping $prog: "
killproc -p $NGINX_PID $NGINX_SBIN -TERM
rm -rf /dev/shm/nginx_temp
RETVAL=$?
echo
return $RETVAL
}
reload()
{
echo -n $"Reloading $prog: "
killproc -p $NGINX_PID $NGINX_SBIN -HUP
RETVAL=$?
echo
return $RETVAL
}
restart()
{
stop
start
}
configtest()
{
$NGINX_SBIN -c $NGINX_CONF -t
return 0
}
case "$1" in
start)
start
;;
stop)
stop
;;
reload)
reload
;;
restart)
restart
;;
configtest)
configtest
;;
*)
echo $"Usage: $0 {start|stop|reload|restart|configtest}"
RETVAL=1
esac
exit $RETVAL
[[email protected] nginx-1.12.2]# chmod 755 /etc/init.d/nginx
- 修改 nginx 配置檔案
[[email protected] nginx-1.12.2]# cd /usr/local/nginx/conf/
[[email protected] conf]# mv nginx.conf nginx.conf.bak
[[email protected] conf]# vim nginx.conf
user nobody nobody;
worker_processes 2;
error_log /usr/local/nginx/logs/nginx_error.log crit;
pid /usr/local/nginx/logs/nginx.pid;
worker_rlimit_nofile 51200;
events
{
use epoll;
worker_connections 6000;
}
http
{
include mime.types;
default_type application/octet-stream;
server_names_hash_bucket_size 3526;
server_names_hash_max_size 4096;
log_format combined_realip '$remote_addr $http_x_forwarded_for [$time_local]'
' $host "$request_uri" $status'
' "$http_referer" "$http_user_agent"';
sendfile on;
tcp_nopush on;
keepalive_timeout 30;
client_header_timeout 3m;
client_body_timeout 3m;
send_timeout 3m;
connection_pool_size 256;
client_header_buffer_size 1k;
large_client_header_buffers 8 4k;
request_pool_size 4k;
output_buffers 4 32k;
postpone_output 1460;
client_max_body_size 10m;
client_body_buffer_size 256k;
client_body_temp_path /usr/local/nginx/client_body_temp;
proxy_temp_path /usr/local/nginx/proxy_temp;
fastcgi_temp_path /usr/local/nginx/fastcgi_temp;
fastcgi_intercept_errors on;
tcp_nodelay on;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 8k;
gzip_comp_level 5;
gzip_http_version 1.1;
gzip_types text/plain application/x-javascript text/css text/htm
application/xml;
server
{
listen 80;
server_name localhost;
index index.html index.htm index.php;
root /usr/local/nginx/html;
location ~ \.php$
{
include fastcgi_params;
fastcgi_pass unix:/tmp/php-fcgi.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
}
}
}
- 配置檔案語法檢查
[[email protected] nginx-1.12.2]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
- 配置開機啟動
[root@LNMP nginx-1.12.2]# chkconfig --add nginx
[root@LNMP nginx-1.12.2]# chkconfig nginx on
- 開啟 nginx
## 開啟
[root@LNMP nginx-1.12.2]# /etc/init.d/nginx start
Reloading systemd: [ OK ]
Starting nginx (via systemctl): [ OK ]
## 檢視服務
[root@LNMP nginx-1.12.2]# netstat -tlnp | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 39185/nginx: master
6. 測試能否 PHP 解析
6.1 建立 PHP 檔案
[[email protected] html]# vim /usr/local/nginx/html/test.php
<?php
phpinfo();
?>
6.2 iptables 放通
[root@LNMP html]# iptables -F
6.2 瀏覽器進行訪問,顯示如下頁面則為成功
相關推薦
第二十課 LNMP
目錄 LNMP架構介紹 MySQL安裝 PHP安裝 Nginx安裝 驗證 PHP 能否解析 1. LNMP架構介紹 其實就是四個大寫字母的縮寫,分別是 Linux + Nginx + MySQL + P
Spring入門第二十課
ini pointer lns 後置 獲取 結果 ssp version text 返回通知,異常通知,環繞通知 看代碼: package logan.study.aop.impl; public interface ArithmeticCalculator {
斯坦福大學-自然語言處理入門 筆記 第二十課 問答系統(question answering)
1、什麼是問答系統 問答系統是最早的NLP任務,根據問題的依存關係,找到適合的依存關係的回答。 在現代系統中問題被分為兩類 事實問題的回答一般都是一個簡單的片語或者是命名實體 兩種問答系統的正規化 基於資訊檢索的路徑:TREC; I
C++筆記 第二十課 初始化列表的使用---狄泰學院
如果在閱讀過程中發現有錯誤,望評論指正,希望大家一起學習,一起進步。 學習C++編譯環境:Linux 第二十課 初始化列表的使用 問題:類中是否可以定義const成員?可以 小實驗 下面的類定義是否合法?不合法 如果合法,ci的值是什麼,儲存在哪裡? 20-1 類中的c
第二十課預習任務
12.1 LNMP架構介紹 12.2 MySQL安裝 12.3/12.4 PHP安裝 12.5 Nginx介紹 12.6 Nginx安裝 1.LNMP架構介紹 LNMP(Linux-Nginx-MySQL-PHP)網站架構是目前國際流行的Web框架,該框架包括:Linux
第二十課 【ERC1155實踐】歐陽詢書法複製品從確權設計到買賣測試
1,摘要 【本文目標】 通過本文學習,瞭解以太坊ERC1155標準規範和ERC1155Mintable可增發智慧合約函式功能,並通過一個有趣的故事完成功能測試。 【前置條件】 1)對以太坊ERC20(同質化代幣),ERC721(非同質化代幣)有所瞭解,對ERC
【問鏈財經-區塊鏈基礎知識系列】 第二十課 區塊鏈聯盟鏈攻伐戰
編者按:聯盟鏈是目前區塊鏈落地實踐的熱點,也是大家對“殺手級應用”期望最大的區塊鏈部署形態。聯盟鏈的誕生源於對區塊鏈技術的“反思”,是對比特幣、以太坊所體現的技術特點與企業客戶實際需要的融合與折衷,蘊含了大量區塊鏈工作者的智慧與辛勞。 由於對未來價值的“共識”,很多廠商推出了自
javaweb基礎第二十課:cookie
大綱: 簡介 使用Cookie 設定Cookie 讀取Cookie Cookie有效時間 Cookie路徑 這節課我們來講Cookie,大綱寫好了 簡介
第二十課先乘除後加減——C#計算器程式設計教學
不少人念念不忘四則運算的運算子優先順序,而Windows7的計算器基本型也沒有實現它。 其實根據我的算式運算解決思路,其實就查詢有乘除的項,先加好(物件加),然後做加減。 程式碼修改如下: private string RunCaclLists()
2018年9月15日第二十一節課筆記——LNMP架構(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 --wit
第二十一課 LNMP(中)
目錄 1. 預設虛擬主機 2. Nginx 使用者認證 3. Nginx 域名重定向 4. Nginx 訪問日誌 5. Nginx 日誌切割 6. 靜態檔案不記錄日誌和過期時間 7. N
0516第二十一次課:LNMP 2
LNMP 2 一、nginx預設虛擬主機 在Nginx中也有預設虛擬主機,跟httpd類似,第一個被Nginx載入的虛擬主機就是
0518第二十一次課:LNMP 3
一、nginx代理 Nginx通過upstream和
Spring入門第二十二課
pri startup span val join can arrays log .org 重用切面表達式 我們有的時候在切面裏面有多個函數,大部分函數的切入點都是一樣的,所以我們可以聲明切入點表達式,來重用。 package logan.study.aop.impl;
Spring入門第二十五課
struct java 映射 構造器 into named put per mysq 使用具名參數 直接看代碼: db.properties jdbc.user=root jdbc.password=logan123 jdbc.driverClass=com.mysql.
Spring入門第二十六課
code message manage todo system framework auto manager isbn Spring中的事務管理 事務簡介 事務管理是企業級應用程序開發中必不可少的技術,用來確保數據的完整性和一致性。 事務就是一系列的動作,他們被當做一個單獨
Spring入門第二十七課
url cati urn ksh base stock XML repo study 聲明式事務 直接上代碼: db.properties jdbc.user=root jdbc.password=logan123 jdbc.driverClass=com.mysql.j
Spring入門第二十九課
mchange method true ide ash 一個 value import 重復 事務的隔離級別,回滾,只讀,過期 當同一個應用程序或者不同應用程序中的多個事務在同一個數據集上並發執行時,可能會出現許多意外的問題。 並發事務所導致的問題可以分為下面三種類型: -
AGG第二十六課 裁剪功能
裁剪 agg AGG有四種類型的裁剪,分別工作在不同的層次1. 基礎渲染器Base Render除非直接調用基礎渲染器的繪制線段的方法,否則在一般情況下,都是在render_scanline的時候被調用,進行裁剪,這個時候已經進行了大量無用的工作。比如頂點源超出屏幕範圍,在調用render_scan
十周第二次課(3月1日)
linux十周第二次課(3月1日)11.14/11.15 Apache和PHP結合httpd的主配置文件是/usr/local/apache2.4/conf/httpd.confvim /usr/local/apache2.4/conf/httpd.conf 修改以下4個地方1 ServerName #Ser