nginx php mysql技术架构_LNMP架构介绍、MySQL和PHP安装、Nginx介绍

6月6日任务

12.1 LNMP架构介绍

12.2 MySQL安装

12.3/12.4 PHP安装

12.5 Nginx介绍

扩展

Nginx为什么比Apache Httpd高效:原理篇

http://www.toxingwang.com/linux-unix/linux-basic/1712.html

apache和nginx工作原理比较

http://www.server110.com/nginx/201402/6543.html

mod_php 和 mod_fastcgi以及php-fpm的比较

http://dwz.cn/1lwMSd

概念了解:CGI,FastCGI,PHP-CGI与PHP-FPM

http://www.nowamagic.net/librarys/veda/detail/1319/

https://www.awaimai.com/371.html

12.1 LNMP架构介绍

LNMP和LAMP不同的是把Apache换成了Nginx,提供web服务的是Nginx,单纯访问PHP的网站,如果都是去访问静态的图片,Nginx的用户并发量比Apache大,这个也是Apache做不到的。

19b5da4b1fa021d6869d78816f75334b.png

12.2 MySQL安装

MySQL安装步骤如下:

1、下载mysql源码包

[root@jimmylinux-001 ~]# cd /usr/local/src 进入到src目录

[root@jimmylinux-001 src]# wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz wget下载MySQL源码包

2、解压源码包

[root@jimmylinux-001 src]# tar zxvf mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz

3、移动目录并改名为mysql,同时进入mysql目录。

[root@jimmylinux-001 src]# mv mysql-5.6.36-linux-glibc2.5-x86_64 /usr/local/mysql

[root@jimmylinux-001 src]# cd /usr/local/mysql

4、创建mysql用户及data目录

[root@jimmylinux-001mysql]# useradd mysql

[root@jimmylinux-001 mysql]# mkdir /data/

5、初始化生成mysql启动时需要的目录

[root@jimmylinux-001 mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql

-bash: ./scripts/mysql_install_db: /usr/bin/perl: 坏的解释器: 没有那个文件或目录

#如果出现这个错误,解决办法(安装perl跟perl-devel即可)

执行 yum -y install perl perl-devel 后在初始化

如果初始化过程中还有以下报错,可以根据错误提示安装对应的软件包,直到可以初始化成功。

[root@jimmylinux-001 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

[root@jimmylinux-001 mysql]# yum install -y Perl modules

[root@jimmylinux-001 mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql

Installing MySQL system tables..../bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared objectfile: No such file or directory

[root@jimmylinux-001 mysql]# yum install -y libaio*

执行初始化以后,如果看到有2个OK或者执行echo $? 结果是0表示初始化成功。

8f09ff8c5f2758cd20df6a12ef83a77f.png

d324c486e7d6d59dc6b053da1e643ca6.png

6、copy配置文件和启动脚本

[root@jimmylinux-001 mysql]# cp support-files/my-default.cnf  /etc/my.cnf

[root@jimmylinux-001 mysql]# vim /etc/my.cnf

把my.cnf配置文件修改成以下内容

[mysqld]

datadir=/data/mysql

socket=/tmp/mysql.sock

[root@jimmylinux-001 mysql]# cp support-files/mysql.server /etc/init.d/mysqld

[root@jimmylinux-001 mysql]# vim /etc/init.d/mysqld

定义启动脚本文件中路径

basedir=/usr/local/mysql

datadir=/data/mysql

7、启动mysql服务

[root@jimmylinux-001 mysql]# /etc/init.d/mysqld start 启动mysql服务

如果出现以下错误

Starting MySQL.180606 17:22:32 mysqld_safe error: log-error set to '/var/log/mariadb/mariadb.log', however file don't exists. Create writable for user'mysql'.

ERROR! The server quit without updating PID file (/data/mysql/jimmylinux-001.pid)

把my.cnf配置文件以下内容加#注释掉就可以了

[mysqld_safe]

#log-error=/var/log/mariadb/mariadb.log

#pid-file=/var/run/mariadb/mariadb.pid

重新启动mysql服务

[root@jimmylinux-001 mysql]# /etc/init.d/mysqld start

Starting MySQL.Logging to'/data/mysql/jimmylinux-001.err'.

.. SUCCESS![root@jimmylinux-001 mysql]# ps aux |grep mysql

root4135 0.0 0.0 113304 1632 pts/0 S 17:37 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/jimmylinux-001.pid

mysql4272 6.0 7.6 1300824 453504 pts/0 Sl 17:37 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/jimmylinux-001.err --pid-file=/data/mysql/jimmylinux-001.pid --socket=/tmpmysql.sock

root4300 0.0 0.0 112720 984 pts/0 S+ 17:37 0:00 grep --color=auto mysql

8、把mysqld服务加入到服务列表去,并设置开机自启动。

[root@jimmylinux-001 mysql]# chkconfig --add mysqld

[root@jimmylinux-001 mysql]# chkconfig mysqld on

d480db61d389345d71940ca482c6f07a.png

12.3/12.4 PHP安装

在Nginx中PHP安装和Apache里面安装是不同的,需要开启php-fpm服务。

PHP安装步骤如下:

1、进入src目录,使用wget下载PHP源码包。

[root@jimmylinux-001 ~]# cd /usr/local/src/[root@jimmylinux-001 src]# wget http://cn2.php.net/distributions/php-5.6.30.tar.gz

2、解压源码包,然后进入php目录。

[root@jimmylinux-001 src]# tar zxf php-5.6.30.tar.gz

[root@jimmylinux-001 src]# useradd -s /sbin/nologin php-fpm

[root@jimmylinux-001 src]# cd php-5.6.30

3、./configure源代码安装的第一步,主要的作用是对即将安装的软件进行配置,检查当前的环境是否满足要安装软件的依赖关系

[root@jimmylinux-001 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

如果出现报错,根据提示安装所需要的软件包,直到配置完成。

checking target system type... x86_64-unknown-linux-gnu

checking for cc... no

checking for gcc... no  缺少gcc编译环境

configure: error: in `/usr/local/src/php-5.6.30':

configure: error: no acceptable C compiler found in $PATH

See `config.log' for more details

[root@jimmylinux-001 php-5.6.30]# yum install -y gcc  安装缺少的gcc包后在执行./configure

checking libxml2 install dir... yes

checking for xml2-config path...

configure: error: xml2-config not found. Please check your libxml2 installation.  报错xml2-config not found

可以通过yum模糊搜索安装缺少的包,yum install -y libxml2-devel

53d24dc5ed1273652889b805b17217ac.png

ad2a93fd343bc99734833bcccddff6b7.png

f20c2d139ea2d97447fbb098f203b8a7.png

a9ef0f1a5964fbd3fb095360eda2fadb.png

47f6460126ce2942e9031348fe4ef7a4.png

af255fde3e3f834846a82f60644c56d8.png

7c539229402e6819b1790df64bd8c71b.png

一路报错,一路安装,根据报错提示,缺少什么就安装什么,直到看到如下截图,就说明执行成功了。

8e48a4547abd265a308380ea19592fe5.png

4、编译并且安装

[root@jimmylinux-001 php-5.6.30]# make && make install

[root@jimmylinux-001 php-5.6.30]# /usr/local/php-fpm/sbin/php-fpm -m 查看加载的模块

[PHP Modules]

cgi-fcgi

Core

ctype

curl

date

dom

ereg

exif

fileinfo

filter

ftp

gd

hash

iconv

json

libxml

mbstring

mcrypt

mysql

mysqli

openssl

pcre

PDO

pdo_mysql

pdo_sqlite

Phar

posix

Reflection

session

SimpleXML

soap

SPL

sqlite3

standard

tokenizer

xml

xmlreader

xmlwriter

zlib

[Zend Modules]

[root@jimmylinux-001 php-5.6.30]# /usr/local/php-fpm/sbin/php-fpm -i 查看php的相关信息

phpinfo()

PHP Version=> 5.6.30

[root@jimmylinux-001 php-5.6.30]# /usr/local/php-fpm/sbin/php-fpm -t  测试自己配置文件语法的

[06-Jun-2018 23:09:47] ERROR: failed to open configuration file '/usr/local/php-fpm/etc/php-fpm.conf': No such file or directory (2)

[06-Jun-2018 23:09:47] ERROR: failed to load configuration file '/usr/local/php-fpm/etc/php-fpm.conf'

[06-Jun-2018 23:09:47] ERROR: FPM initialization failed  这里报错是因为没有给配置文件,想要启动这个服务,必须要有配置文件。

5、copy配置文件

[root@jimmylinux-001 php-5.6.30]# ls /usr/local/php-fpm/etc/pear.conf php-fpm.conf.default原本是没有php.int文件的

[root@jimmylinux-001 php-5.6.30]# cp php.ini-production /usr/local/php-fpm/etc/php.ini

[root@jimmylinux-001 php-5.6.30]# ls /usr/local/php-fpm/etc/pear.conf php-fpm.conf.default php.ini 拷贝后多了一个php.ini文件

6、进入指定目录并创建配置文件vi /usr/local/php/etc/php-fpm.conf 写入以下内容

[root@jimmylinux-001 php-5.6.30]# cd /usr/local/php-fpm/etc/[root@jimmylinux-001etc]# ls

pear.conf php-fpm.conf.defaultphp.ini

[root@jimmylinux-001 etc]# vim php-fpm.conf

写入以下内容

[global] 定义全局参数

pid= /usr/local/php-fpm/var/run/php-fpm.pid (pid路径)

error_log= /usr/local/php-fpm/var/log/php-fpm.log (error_log路径)

[www] 模块名

listen= /tmp/php-fcgi.sock 监听地址

listen.mode= 666定义sock文件权限666

user= php-fpm 定义是那个用户

group= php-fpm 定义是那个组

pm= dynamicpm都是进程信息

pm.max_children= 50pm.start_servers= 20pm.min_spare_servers= 5pm.max_spare_servers= 35pm.max_requests= 500rlimit_files= 1024

7、进入到源码包目录,然后copy启动脚本并启动php-fpm服务。

[root@jimmylinux-001 etc]# cd /usr/local/src/php-5.6.30 进入到源码包目录[root@jimmylinux-001 php-5.6.30]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm 拷贝启动脚本到etc下面

[root@jimmylinux-001 php-5.6.30]# chmod 755 /etc/init.d/php-fpm 修改文件权限为755

[root@jimmylinux-001 php-5.6.30]# chkconfig --add php-fpm 把php-fpm服务添加到服务列表去

[root@jimmylinux-001 php-5.6.30]# chkconfig php-fpm on 设置开机自启动

[root@jimmylinux-001 php-5.6.30]# service php-fpm start 开启php-fpm服务

Starting php-fpm done

8、检查php-fpm服务启动状态

[root@jimmylinux-001 php-5.6.30]# ps aux |grep php-fpm

root43099 0.0 0.0 123656 4952 ? Ss 6月06 0:00 php-fpm: master process (/usr/local/php-fpm/etc/php-fpm.conf)

php-fpm 43100 0.0 0.0 123656 4708 ? S 6月06 0:00 php-fpm: pool www

php-fpm 43101 0.0 0.0 123656 4708 ? S 6月06 0:00 php-fpm: pool www

php-fpm 43102 0.0 0.0 123656 4708 ? S 6月06 0:00 php-fpm: pool www

php-fpm 43103 0.0 0.0 123656 4708 ? S 6月06 0:00 php-fpm: pool www

php-fpm 43104 0.0 0.0 123656 4712 ? S 6月06 0:00 php-fpm: pool www

php-fpm 43105 0.0 0.0 123656 4712 ? S 6月06 0:00 php-fpm: pool www

php-fpm 43106 0.0 0.0 123656 4712 ? S 6月06 0:00 php-fpm: pool www

php-fpm 43107 0.0 0.0 123656 4712 ? S 6月06 0:00 php-fpm: pool www

php-fpm 43108 0.0 0.0 123656 4712 ? S 6月06 0:00 php-fpm: pool www

php-fpm 43109 0.0 0.0 123656 4716 ? S 6月06 0:00 php-fpm: pool www

php-fpm 43110 0.0 0.0 123656 4716 ? S 6月06 0:00 php-fpm: pool www

php-fpm 43111 0.0 0.0 123656 4716 ? S 6月06 0:00 php-fpm: pool www

php-fpm 43112 0.0 0.0 123656 4716 ? S 6月06 0:00 php-fpm: pool www

php-fpm 43113 0.0 0.0 123656 4716 ? S 6月06 0:00 php-fpm: pool www

php-fpm 43114 0.0 0.0 123656 4716 ? S 6月06 0:00 php-fpm: pool www

php-fpm 43115 0.0 0.0 123656 4716 ? S 6月06 0:00 php-fpm: pool www

php-fpm 43116 0.0 0.0 123656 4716 ? S 6月06 0:00 php-fpm: pool www

php-fpm 43117 0.0 0.0 123656 4716 ? S 6月06 0:00 php-fpm: pool www

php-fpm 43118 0.0 0.0 123656 4716 ? S 6月06 0:00 php-fpm: pool www

php-fpm 43119 0.0 0.0 123656 4716 ? S 6月06 0:00 php-fpm: pool www

root43139 0.0 0.0 112720 984 pts/0 S+ 00:03 0:00 grep --color=auto php-fpm

12.5 Nginx介绍

0eb54c453c78be1067fa250ca636a4ee.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值