网站的LNMP架构

主机名称和IP地址规划

服务 主机名 eth0网卡IP eth1网卡IP 软件
防火墙服务器 firewalld 10.0.0.81 172.16.1.81 firewalld
负载均衡服务器 lb01 10.0.0.5 172.16.1.5 nginx,keepalived
负载均衡服务器 lb02 10.0.0.6 172.16.1.6 nginx,keepalived
web服务器 web01 10.0.0.7 172.16.1.7 nginx
web服务器 web02 10.0.0.8 172.16.1.8 nginx
web服务器 web03 10.0.0.9 172.16.1.9 nginx
存储服务器 nfs01 10.0.0.31 172.16.1.31 nfs
备份服务器 backup 10.0.0.41 172.16.1.41 rsync
数据库服务器 db01 10.0.0.51 172.16.1.51 mysql,mariaDB
批量管理服务器 m01 10.0.0.61 172.16.1.61 ansible
跳板机服务器 jumpserver 10.0.0.71 172.16.1.71 jumpserver
监控服务器 zabbix 10.0.0.72 172.16.1.72 zabbix
缓存服务器 暂无 暂无 暂无 暂无
  • L : linux

关闭selinux和防火墙

/tmp 1777 mysql服务无法启动

  • N : nginx

处理用户的静态请求 html jpg txt mp4/avi

  • M : mysql

存储用户的字符串数据信息

  • P : php

处理动态的页面请求

负责和数据库建立关系

LNMP架构部署

linux部署

安装linux

修改linux的部分配置

nginx部署

安装nginx

web服务本地测试环境配置

编写配置文件,解析php文件

通常需要在默认匹配的index中设置index.php

server {
    listen       80;
    server_name  www.1997sty.com;
    root   "/WWW/blog/public";
    location / {
        index  index.php index.html index.htm;
    }

    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}
  • fastcgi_pass : nginxphp-fpm的进程间通信方式,可以用netstat -luntp | grep php查看php-fpm进程的端口号
  • fastcgi_index : php默认首页文件
  • fastcgi_param SCRIPT_FILENAME : 设置脚本目录名称
  • include fastcgi_params : 引入配置参数
[root@web01 ~]# netstat -luntp | grep php
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      21862/php-fpm: mast 

mysql部署

安装数据库

#安装mariaDB
yum install mariadb-server mariadb -y

启动数据库并设置开机启动

systemctl start mariadb.service
systemctl enable mariadb.service

初始化数据库

#PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
#To do so, start the server, then issue the following commands:
#给本地数据库设置密码
/application/mysql/bin/mysqladmin -u root          password 'new-password'
#给远程数据库设置密码
/application/mysql/bin/mysqladmin -u root -h web01 password 'new-password'

#设置数据库,并非修改数据库密码
mysqladmin -u root  password '123456'
#登录数据库
mysql -u root -p123456

php部署

更新yum源/卸载系统自带的PHP软件

yum remove php-mysql php php-fpm php-common
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm 

安装php和其他相关服务

yum install -y php71w php71w-cli php71w-common php71w-devel php71w-embedded  php71w-gd php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd php71w-opcache  php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb

修改/etc/php-fpm.d/www.confusergroup

  • 保证nginx进程的管理用户和php服务进程的管理用户保持一致,nginx的用户我没有修改默认是nginx,所以php这里修改为nginx
; Start a new pool named 'www'.
[www]

; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
; RPM: apache Choosed to be able to access some dir as httpd
;user = apache
user = nginx
; RPM: Keep a group allowed to write in log dir.
;group = apache
group = nginx

启动php并设置开机启动

systemctl start php-fpm
systemctl enable php-fpm

测试LNMP架构

测试php和nginx之间的关系

  • 在站点目录中添加代码,访问设置好的域名,如果配置正确,可以看到php的相关信息
vi index.php

<?php phpinfo(); ?>

QQ截图20191230151926.jpg

测试php和数据库之间的关系

  • 在站点目录中添加代码,访问设置好的域名,如果配置正确,可以看到php的相关信息
vi index.php

<?php
$conn = mysqli_connect("localhost", "root", "123456");
if ($conn) 
{
    echo "mysql successful by root !\n";
}
else
{
    exit("Connection failed: " . mysqli_connect_error());
}

部署搭建网站页面

如果测试结果没有问题,就可以部署相关的网站

注意事项

  • 获取源码后解压到对应的站点目录
  • 修改对应目录或文件的权限和属主属组
  • 网站源码中使用数据库非root账户
  • 在数据库中添加新库

创建数据库create databases new_datebase;

创建数据库管理用户grant all on new_user.* to 'new_user'@'localhost' identified by '123456';