2002年世界杯决赛_2018俄罗斯世界杯 - dzlpgs.com

LNMP架构环境部署(YUM安装方式)

LNMP架构环境部署(yum安装方式)1、使用官方仓库安装 Nginx代码语言:javascript代码运行次数:0运行复制#可能优先使用epel里的源,怎么确保我们配置的 官方优先。

[root@web01 ~]$yum -y install yum-plugin-priorities

[root@web01 ~]$ rpm -qa yum-plugin-priorities

yum-plugin-priorities-1.1.31-54.el7_8.noarch

[root@web01 ~]$ cat /etc/yum.repos.d/nginx.repo

[nginx-stable]

name=nginx stable repo

baseurl=http://nginx.org/packages/centos/$releasever/$basearch/

gpgcheck=0

priority=1 #增加优先参数,使得官方源优先epel源。

#安装Nginx

[root@web01 ~]$ yum install nginx -y

2、配置Nginx进程运行的用户代码语言:javascript代码运行次数:0运行复制[root@web01 ~]$ useradd -u1111 www -s /sbin/nologin -M

[root@web01 ~]$ sed -i '/^user/c user www;' /etc/nginx/nginx.conf

[root@web01 ~]$ grep "^user" /etc/nginx/nginx.conf

3、启动Nginx,并将Nginx加入开机自启代码语言:javascript代码运行次数:0运行复制[root@web01 ~]$ systemctl start nginx

[root@web01 ~]$ systemctl enable nginx

[root@web01 ~]$ lsof -i:80 #查看端口对应的服务

[root@web01 ~]$ nginx -v #查看版本

nginx version: nginx/1.22.1

[root@web01 ~]$curl 10.0.0.7 # Welcome to nginx!表示正常SH

4、使用第三方扩展源安装php7.1代码语言:javascript代码运行次数:0运行复制#(1)配置PHP安装源

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

#如果下载失败加下面参数

wget https://mirror.webtatic.com/yum/el7/webtatic-release.rpm --no-check-certificate

yum -y install epel-release #安装epel源 /etc/yum.repos.d/epel.repo

rpm -Uvh webtatic-release.rpm #安装PHP第三方源

rpm -ql webtatic-release-7-3

rpm -ql epel-release

#如果上述安装源有问题可以使用下面的配置看看

#PHP下载地址:

https://us-east.repo.webtatic.com/yum/el7/x86_64/

https://uk.repo.webtatic.com/yum/el7/x86_64/

#卸载旧版本的php

[root@web01 tools]$ rpm -e $(rpm -qa|grep php)

[root@web01 tools]$ rpm -qa|grep php

[root@web01 tools]$ rm -f /etc/php.ini.rpmsave

#安装PHP及相关插件

yum install php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-gd -y

yum install php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd -y

yum install php71w-opcache php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb -y

###企业场景中由开发人员给你编译的参数(他开发的软件)。可以比他多,不能少。

########## 本地安装,不用 ##########

安装php7版本的软件【本地】

[root@web01 ~]# unzip php.zip #提前去官方下载好,然后执行 下面的安装

[root@web01 ~]# yum localinstall php/*.rpm -y

###################################

配置php-fpm用户与Nginx的运行用户保持一致

[root@web01 tools]$egrep "^user|^group" /etc/php-fpm.d/www.conf

user = apache

group = apache

#替换用户

[root@web01 code]$ sed -i '/^user/c user = www' /etc/php-fpm.d/www.conf

[root@web01 code]$ sed -i '/^group/c group = www' /etc/php-fpm.d/www.conf

#检查

[root@web01 tools]$egrep "^user|^group" /etc/php-fpm.d/www.conf

user = www

group = www

启动php-fpm,并将其加入开机自启

[root@web01 ~]$ systemctl start php-fpm

[root@web01 ~]$ systemctl enable php-fpm

#检查

[root@web01 tools]$lsof -i :9000

[root@web01 tools]$ps -ef|grep php

5、安装mariadb数据库代码语言:javascript代码运行次数:0运行复制[root@web01 ~]$ yum install mariadb-server mariadb -y

启动Mariadb数据库, 并加入开机启动

[root@web01 ~]$ systemctl start mariadb

[root@web01 ~]$ systemctl enable mariadb

#检查

[root@web01 ~]$lsof -i :3306

[root@web01 ~]$ps -ef|grep mariadb

[root@web01 blog]$ mysql #直接进去

给Mariadb配置登陆密码,并设置新密码进行登录数据库

[root@web01 ~]$ mysqladmin -uroot password oldboy123

[root@web01 ~]$ mysql -uroot -poldboy123

[root@web01 ~]$ mysqladmin -uroot -poldboy123 password oldboy #有密码更改密码

代码语言:javascript代码运行次数:0运行复制#php测试,配置hosts文件

#Nginx连接Fastcgi服务器配置如下

[root@web01 blog]$cat /etc/nginx/conf.d/blog.conf

server {

listen 80;

server_name blog.shnne.org;

root /data/blog;

index index.php index.html;

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;

}

}

在/data目录下创建test_php.php文件

[root@web01 ~]$ mkdir /data/blog -p

[root@web01 ~]$ chown -R www.www /data/blog

[root@web01 ~]$ cat /data/blog/test_php.php

phpinfo();

?>

#浏览器测试

http://blog.shnne.com//test_php.php

#mariadb测试

[root@web01 ~]$ cat /data/blog/test_mysql.php

$servername = "localhost";

$username = "root";

$password = "oldboy123";

// 创建连接

$conn = mysqli_connect($servername, $username, $password);

// 检测连接

if (!$conn) {

die("Connection failed: " . mysqli_connect_error());

}

echo "php连接MySQL数据库成功。";

?>

#浏览器测试

http://blog.shnne.org/test_mysql.php

6、扩展:企业级应用实战案例:科学授权站点目录权限和属组方法代码语言:javascript代码运行次数:0运行复制#(1)生产授权方案(新手可不用):

[root@web01 blog]# chown -R root.root /data/blog

[root@web01 blog]# mkdir -p /data/blog/uploads

[root@web01 blog]# chown -R www.www /data/blog/uploads #此目录可能没有。

[root@web01 blog]# ll wp-content/

plugins ##blog增加功能 root.root

themes ##blog主题皮肤 root.root

uploads ##上传目录www.www

#(2)LNMP企业级核心安全优化思想:

chown -R www.www /data/blog/uploads/ #安全隐患很大。

#黑客会放Webshell.php木马到/data/blog/upload/来遍历文件插入广告 或者提权root。

#执行放的webshell,http://xx/upload/webshell.php ##轮询站点, 改所有站点文件,嵌入它的广告

#网站安全防护露点: 对外:http,https(控制这里),没办法白名单。 对内:ssh(禁止对外访问),可以白名单。

# (3)#针对80端口安全防护限制:

1.php程序控制,上传的程序扩展名不能是.php,.sh等等

2.访问/data/blog/upload/(*.php return 403)

location /upload/ \.php$ {

return 403

}

3.挂载NFS

mount,noexec,nosuid

4.通过架构,限制动态请求方法

location /upload/ 禁止GET,不能浏览。 解决方法:动静分离 动态:location /upload/ 禁止GET,不能浏览。 静态:没有PHP环境

location /upload/

5.配置waf防火墙或者开发第三方安全模块(比如还可以控制sql语句执行等)

6.永远确保站点权限最优

#工作启动Nginx脚本:start_nginx.sh

chown -R root.root /data/blog

chown -R www.www /data/blog/uploads

#启动前做站点目录,权限和用户做检查。

#检测:权限、用户和组不对,自测、报警。。省略检测脚本100行。提供思路

systemctl reload nginx

# (4) 因blog需要使用数据库, 所以需要建立blog数据库,并授予指定权限

[root@web01 ~]# mysql -uroot -poldboy123

mysql> create database blog;

mysql> exit;

7、扩展:企业级应用实战案例:采用异地db01.etiantian.org方式访问数据库,而不是本机localhost代码语言:javascript代码运行次数:0运行复制######

MariaDB [(none)]> create database blog; #创建blog数据库

MariaDB [(none)]> show databases; #查看

MariaDB [(none)]> grant all privileges on blog.* to blog@'172.16.1.%' identified by 'oldboy123';#创建用户密码并 授权。

MariaDB [(none)]> flush privileges;

Query OK, 0 rows affected (0.00 sec)

#####

all privileges为所有权限: 本次科学权限:select,delete,insert,update,create,alter

工作中生产线应该:select,delete,insert,update 针对数据内容

create,alter 表结构,库结构。

#一定一定由DBA或运维控制。 企业故障案例:

表结构被开发修改了,导致运维背锅。 最终比对备份的表结构和上线数据库表结构,发现开发改了表结构。

解决办法:收回select,delete,insert,update以外的权限由DBA控制。

因为创建好blog用户并授权密码,但是登录提示失败

上述配置网页链接数据库出现故障,解决办法如下:

[root@web01 blog]# mysql -uroot -poldboy123

MariaDB [(none)]> #删除无用的用户

MariaDB [(none)]> drop user ''@'localhost';

MariaDB [(none)]> drop user ''@'web01';

MariaDB [(none)]> drop user 'root'@'web01';

MariaDB [(none)]> drop user 'root'@'::1';

MariaDB [(none)]> select user,host from mysql.user;

+------+--------------------------+

| user | host |

+------+--------------------------+

| root | 127.0.0.1 |

| root | localhost |

+------+--------------------------+

4 rows in set (0.00 sec)

#重新授权

MariaDB [(none)]> grant all privileges on blog.* to 'blog'@'172.16.1.%' identified by 'oldboy123';

MariaDB [(none)]> flush privileges;

MariaDB [(none)]> quit

#退出测试,如果能登录表示OK。

[root@web01 blog]# mysql -ublog -poldboy123 -h172.16.1.7

MariaDB [(none)]>

#修改/etc/hosts为如下

[root@web01 blog]# grep db01 /etc/hosts

172.16.1.7 db01 db01.etiantian.org #db01.etiantian.org为连 接数据库的域名。

5) 通过浏览器访问blog, 并部署该产品

数据库名blog

账户名blog

密码oldboy123

数据库主机 不用localhost

表前缀 oldboy_