LNMP网站架构部署(非常详细,全文1.1w字,列举了从NGINX到PHP源码部署的全过程)

导航

    • LNMP是什么?
    • 基础准备
    • Nginx源码安装
    • MySQL源码安装
    • PHP源码安装
    • LNMP架构配置
    • 验证结果

LNMP网站架构部署(非常详细,全文1.1w字,列举了从NGINX到PHP源码部署的全过程)_第1张图片

LNMP是什么?

LNMP网站架构部署(非常详细,全文1.1w字,列举了从NGINX到PHP源码部署的全过程)_第2张图片
LNMP为一种缩写,其代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。

Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统。代表版本有:debian、centos、ubuntu、fedora、suse等。

Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。

Mysql是一个关系型数据库管理系统。

PHP是一种在服务器端执行的嵌入HTML文档的脚本语言。

这四种软件均为免费开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系统。

LNMP组件并不固定,例如:其中"M"还包含mariaDB,"P"包含Perl,Python。

基础准备

本案例中,LNMP为单机部署,具体版本如下:

名称 版本
Centos7.7 1908
Nginx 1.9.5
MySQL 5.7.26
PHP 5.6.40

链接:LNMP软件包
提取码:ucru

LNMP网站架构部署(非常详细,全文1.1w字,列举了从NGINX到PHP源码部署的全过程)_第3张图片
以上就是LNMP软件包.zip压缩包中内容,依照案例中的顺序依次部署即可。

其他的一些说明:
LNMP搭建方式:本地搭建
主机IP地址:192.168.1.123
firewalld防火墙:关闭
SElinux:关闭
本地yum源:依照各自环境搭建

所有基础操作完成后,就开始部署LNMP架构了。

Nginx源码安装

安装Nginx依赖包

yum install -y gcc gcc-c++ autoconf automake zlib zlib-devel openssl openssl-devel  pcre pcre-devel make automake

创建Nginx运行用户

groupadd www
useradd -g www www -s /sbin/nologin

上传Nginx源码包,解压,预编译,安装。

tar xf nginx-1.9.5.tar.gz 
cd nginx-1.9.5/
./configure --prefix=/usr/local/nginx --with-http_dav_module --with-http_stub_status_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-pcre --with-http_ssl_module --with-http_gzip_static_module --user=www --group=www
make && make install

配置项说明:
–prefix:nginx安装路径
–with-http_dav_module:通过WebDAV协议提供文件管理自动化,默认情况下未构建此模块。
–with-http_stub_status_module:提供对NGINX基本状态信息的访问,默认情况下未构建此模块。
–with-http_addition_module:过滤器,可在响应之前和之后添加文本,默认情况下未构建此模块。
–with-http_sub_module:允许一些其他字符串替换NGINX中的指定字符串来修改相应,默认情况下未构建此模块。
–with-http_flv_module:为Flash Video(FLV)文件提供伪流服务器端支持,默认情况下未构建此模块。
–with-http_mp4_module:该 模块为MP4文件提供伪流服务器端支持,默认情况下未构建此模块。
–with-pcre:强制使用PCRE库。
–with-http_ssl_module:启用构建将HTTPS协议支持添加 到HTTP服务器的模块的功能,默认情况下未构建此模块,需要OpenSSL库来构建和运行此模块。
–with-http_gzip_static_module:支持发送.gz扩展名为" "的预压缩文件,而不是常规文件,默认情况下未构建此模块。
–user:NGINX服务运行使用的用户,默认用户名为nobody。
–group:NGINX服务运行使用的组,默认情况下为nginx运行用户的名称。

通过Nginx启动控制工具启动

/usr/local/nginx/sbin/nginx

查看端口,验证Nginx是否启动成功

netstat -anput | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      4993/nginx: master  

MySQL源码安装

卸载系统中原有的mysql,mariadb及其相关依赖包

yum -y remove mysql* mariadb*

创建MySQL运行用户

groupadd mysql
useradd -M -s /sbin/nologin -r -g mysql mysql 

创建mysql数据库文件存放目录并对权限进行控制

mkdir -p /data/mysql/{data,log}
chown -R mysql:mysql /data/mysql/

安装MySQL依赖包

yum install -y cmake make gcc gcc-c++ bison ncurses ncurses-devel bzip2

上传boost包(MySQL从5.7.5版本之后,必须有boost库的支持),并对其解压

tar jxf boost_1_59_0.tar.bz2 -C /root/

上传MySQL软件包,解压,预编译。

tar xf mysql-5.7.26.tar.gz
cd mysql-5.7.26/
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/mysql/data \
-DSYSCONFDIR=/etc \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/root/boost_1_59_0

直接粘贴配置项

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql/data -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/root/boost_1_59_0

预编译配置项说明:
-DCMAKE_INSTALL_PREFIX:MySQL程序安装目录。
-DMYSQL_DATADIR:MySQL库数据存放目录。
-DSYSCONFDIR:配置文件存放目录。
-DWITH_MYISAM_STORAGE_ENGINE:添加MYISAM存储引擎支持。
-DWITH_INNOBASE_STORAGE_ENGINE:添加INNOBASE存储引擎支持。
-DWITH_MEMORY_STORAGE_ENGINE:添加MEMORY存储引擎支持。
-DWITH_READLINE:使用readline功能,即方便在命令行复制、粘贴命令。
-DMYSQL_UNIX_ADDR:套接字(socket)文件路径,默认/tmp/mysql.sock。
-DMYSQL_TCP_PORT:MySQL服务端口,默认为3306。
-DENABLED_LOCAL_INFILE:可以使用load data infile命令从本地导入文件,默认OFF。
-DWITH_PARTITION_STORAGE_ENGINE:指定静态编译到mysql的存储引擎,MyISAM, MERGE,MEMBER以及CSV四种引擎默认即被编译至服务器,不需要特别指定。
-DEXTRA_CHARSETS:支持所有字符集
-DDEFAULT_CHARSET=:指定服务器默认字符集,默认latin1。
-DDEFAULT_COLLATION:指定服务器默认的校对规则,默认latin1_general_ci。
-DDOWNLOAD_BOOST:将boost下载到本地,若-DWITH_BOOST指定路径中不存在boost库,则会在联网的情况下自动下载,若有boost库则忽略。
-DWITH_BOOST:指定boost库路径。

查看主机CPU核数

echo $(grep processor /proc/cpuinfo | wc -l)
4

调用CPU核数,加快编译速度(不建议调用全部CPU核数,以免影响其他服务正常运行)

make -j 2 ; make install

安装完成后,对mysql安装目录进行权限控制

chown -R mysql:mysql /usr/local/mysql/

定义配置文件

vim /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/data/mysql/data
port=3306
socket=/usr/local/mysql/mysql.sock
symbolic-links=0
character-set-server=utf8
log-error=/data/mysql/log/mysqld.log
pid-file=/usr/local/mysql/mysqld.pid

主配置文件说明:
[mysqld]:模块名称
basedir=/usr/local/mysql:mysql安装目录
datadir=/data/mysql/data:mysql数据存放目录
port=3306:mysql监听端口
socket=/usr/local/mysql/mysql.sock:mysql.sock文件存放目录
symbolic-links=0:关闭mysql的符号链接
character-set-server=utf8:指定mysql的字符集为utf8
log-error=/data/mysql/log/mysqld.log:指定mysql的错误日志存放路径
pid-file=/usr/local/mysql/mysqld.pid:mysql的pid文件存放目录

设置启动脚本

cp support-files/mysql.server /etc/init.d/mysql.server
chmod +x /etc/init.d/mysql.server

初始化数据库

/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data

启动MySQL

/etc/init.d/mysql.server start

查看端口确认MySQL是否启动成功

netstat -anplt | grep mysql
tcp6       0      0 :::3306                 :::*                    LISTEN      80502/mysqld        

为MySQL设置PATH变量

ln -s /usr/local/mysql/bin/* /usr/local/bin/

输入MySQL,验证是否可以进入数据库

 mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.26 Source distribution

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

到这里,MySQL的安装就告一段落了。

PHP源码安装

安装PHP依赖包

yum -y install gcc autoconf  freetype gd libpng libpng-devel libjpeg libxml2 libxml2-devel zlib curl curl-devel freetype-devel libjpeg-devel bzip2 bzip2-devel openssl openssl-devel

上传libmcrypt包,解压,预编译,安装

tar xf libmcrypt-2.5.8.tar.gz 
cd libmcrypt-2.5.8/
 ./configure --prefix=/usr/local/libmcrypt && make && make install

上传PHP软件包,解压,预编译

tar xf php-5.6.40.tar.gz 
cd php-5.6.40/
./configure --prefix=/usr/local/php5.6 \
--with-mysql=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--enable-mbstring \
--with-curl \
--with-gd \
--enable-fpm \
--with-config-file-path \
--with-openssl \
--enable-fpm \
--enable-sockets  \
--enable-sysvshm \
--enable-mbstring \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir=/usr \
--enable-xml  \
--with-mhash  \
--with-mcrypt=/usr/local/libmcrypt \
--with-config-file-path=/usr/local/php5.6/etc \
--with-config-file-scan-dir=/etc/php.d \
--with-bz2 

直接粘贴预编译

./configure --prefix=/usr/local/php5.6 --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --enable-mbstring --with-curl --with-gd --enable-fpm --with-config-file-path --with-openssl --enable-fpm --enable-sockets  --enable-sysvshm --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml  --with-mhash  --with-mcrypt=/usr/local/libmcrypt --with-config-file-path=/usr/local/php5.6/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 

预编译配置项说明:
–prefix:安装位置
–with-mysql:支持mysql
–with-pdo-mysql:支持pdo模块
–with-mysqli:支持mysqli模块
注:上面的三选项的作用:数据库与php不在一个服务器上,指定此种方式,安装数据库连接驱动
–enable-mbstring:多字节字符串的支持
–with-curl:支持CURL
–with-gd:支持gd库
–enable-fpm:支持构建fpm
–with-config-file-path:设置配置文件路径
–with-openssl:支持openssl模块
–enable-fpm:支持fpm模式
–enable-sockets:启用socket支持
–enable-sysvshm:启用系统共享内存支持
–enable-mbstring:多字节字串、像我们的中文就是多字节字串
–with-freetype-dir:支持freetype、就要装freetype-devel、跟字体相关的、字体解析工具
–with-jpeg-dir:处理jpeg图片的php可以动态生成jpeg图片
–with-png-dir:处理png图片的php可以动态生成jpeg图片
–with-zlib:是个压缩库、在互联网传输时用来压缩传输的
–with-libxml-dir:这个libxml是用来解析xml的、指定/usr下
–enable-xml:支持xml
–with-mhash:支持mhash
–with-mcrypt:libmcrypt-devel这个程序包所指定的
–with-config-file-path:指定配置文件的存放路径的
–with-config-file-scan-dir:配置文件扫描路径
–with-bz2:支持BZip2

编译并安装

make -j 2 ; make install

生成配置文件,从解压的PHP包中复制

cp php.ini-production /usr/local/php5.6/php.ini

修改php-fpm.conf文件名称,便于修改

cp /usr/local/php5.6/etc/php-fpm.conf.default /usr/local/php5.6/etc/php-fpm.conf

复制PHP启动脚本并赋予权限,从解压的PHP包中复制

cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm 

启动php-fpm

/etc/init.d/php-fpm start

查看PHP服务端口

netstat -anput | grep php-fpm
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      81639/php-fpm: mast 

LNMP架构配置

当Nginx,MySQL,PHP都安装完成后,就可以通过配置文件将他们联系起来。

修改PHP的配置文件,修改运行账户等信息

vim /usr/local/php5.6/etc/php-fpm.conf
user = www
group = www
pid = run/php-fpm.pid
listen = 0.0.0.0:9000

以上三项为主要修改配置,下面有几项优化PHP,不添加也不影响结果

pm.max_children =300	#子进程的最大打开数
pm.start_servers =20	#启动时创建子服务的最大个数
pm.min_spare_servers = 20	#空闲时子进程的最小数量
pm.max_spare_servers = 100	#空闲时子进程的最大数量

修改Nginx配置文件,让其支持PHP页面

vim /usr/local/nginx/conf/nginx.conf
location / {
            root   html;
            index  index.php index.html index.htm; #添加index.php
        }
        #在以上模块直接粘贴以下配置项
location ~ .*\.(php|php5)?$ {
            root html;
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            include fastcgi.conf;
            fastcgi_cache_valid 200 302 1h;
            fastcgi_cache_valid 301 1d;
            fastcgi_cache_valid any 1m;
            fastcgi_cache_min_uses 1;
            fastcgi_cache_use_stale error timeout invalid_header http_500;
            fastcgi_cache_key http://$host$request_uri;
}

其他配置不用修改,直接在location / {}中添加index.php网页支持,并在下面直接复制location ~ .*\.(php|php5)?$ {}即可。

创建PHP测试页面

vim /usr/local/nginx/html/index.php

        phpinfo();
?>

创建PHP网页连接接MySQL的测试页面

vim /usr/local/nginx/html/mysql.php

$link=mysql_connect('192.168.1.123','lnmp','123456');
if ($link)echo "mysql连接成功......";
mysql_close();
?>

其中$link是用于连接MySQL的,格式为:mysql_connect(‘IP地址’,‘MySQL用户’,‘密码’);,若是连接成功了,就会输出"mysql连接成功…"字样。

进入数据库,创建测试用户

mysql> grant all on *.* to 'lnmp'@'%' identified by '123456';
mysql> flush privileges;

接下来重启Nginx和PHP,重载配置

/usr/local/nginx/sbin/nginx -s reload
/etc/init.d/php-fpm restart

验证结果

验证PHP页面支持,在浏览器中输入主机IP/index.php。
LNMP网站架构部署(非常详细,全文1.1w字,列举了从NGINX到PHP源码部署的全过程)_第4张图片
验证PHP网页连接接MySQL的测试,在浏览器中输入主机IP/mysql.php。
LNMP网站架构部署(非常详细,全文1.1w字,列举了从NGINX到PHP源码部署的全过程)_第5张图片
以上LNMP网站架构就搭建成功了。

你可能感兴趣的:(Nginx,LNMP,架构,运维)