服务器搭建(CenOS 7 Apache + PHP _Mysql环境(LAMP))

第一步、更换阿里云 yum源

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo yum update

(查找文件的命令 find / -name "www")

第二步、Apache部分

安装Apacheyum -y install httpd

启动Apache服务systemctl start httpd

检查Apache服务状态是否runningsystemctl status httpd

设置Apache服务自启动守卫systemctl enable httpd

此时,访问服务器的80端口,应可以看到Apache的默认页。如果不能访问,请检查防火墙设置。Apache的默认网页资源目录是/var/www/html,默认配置文件位置是/etc/httpd/conf/httpd.conf

Firewalld常用命令:

systemctl start firewalld.service            #启动防火墙  
systemctl stop firewalld.service             #停止防火墙  
firewall-cmd --state                         #查看防火墙状态
firewall-cmd --list-ports                   #查看所有打开的端口
firewall-cmd --add-port=80/tcp --permanent   #永久添加80端口例外(全局)
firewall-cmd --remove-port=80/tcp --permanent #永久删除80端口例外(全局)

Firewall配置步骤

输入setenforce 0临时关闭SELINUX 关闭防火墙 systemctl stop firewalld 关闭firewall之后,此时便可以通过浏览器成功访问apache页面了。并且在/var/www/html目录中的所有.html网页都可以通过浏览器访问了。

第三步、MySQL 5.7 部分

安装MySQL及服务器:由于需要下载文件,请在合适的目录下执行下列操作。若系统没有wget,请先yum install wget安装之。

wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm yum -y install mysql57-community-release-el7-10.noarch.rpm yum -y install mysql-community-server

启动MySQL服务systemctl start mysqld.service

检查MySQL服务是否runningsystemctl status mysqld.service

设置MySQL服务自启动守卫systemctl enable mysqld.service

获取MySQL初始随机密码: grep "password" /var/log/mysqld.log

 

使用该密码进入数据库mysql -uroot -p,输入密码进入

执行查询,修改默认密码ALTER USER 'root'@'localhost' IDENTIFIED BY '[NEWPASSWORD]';

注意,依据安全性政策,过于简单的密码无法通过要求。

可以更改安全性政策,如下:

select 'host' from user where user='root';

此时可能会出现“You must reset your password using ALTER USER statement before executing this statement.”

【解决办法】

MySQL版本5.7.6版本以前用户可以使用如下命令:

mysql> SET PASSWORD = PASSWORD('你的密码'); MySQL版本5.7.6版本开始的用户可以使用如下命令:

mysql> ALTER USER USER() IDENTIFIED BY '你的密码';

括号里面的你的密码也就是刚才Mysql的初始随机密码

之后:查看 mysql 初始的密码策略

SHOW VARIABLES LIKE 'validate_password%';
set global validate_password_policy=LOW;
这样policy就成了LOW就可以执行修改密码了;
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';

但是你用SQLmyog等远程连接数据库可能失败,显示 1130,ERROR 1130: Host http://xxx.xxx.xxx.xxx is not allowed to connect to this MySQL server

在本机登入mysql后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从”localhost”改称'%'即可

mysql -u root -p

mysql;use mysql;

mysql;select 'host' from user where user='root';

mysql;update user set host = '%' where user ='root';

mysql;flush privileges;

mysql;select 'host' from user where user='root';

就可以了;

 

如果出现access denied的原因有如下可能:

1)mysql的服务器停止:   若MySQL已经没有启动,重启MySQL服务器:systemctl restart mysqld 2)用户的端口号或者IP导致:   若用户的端口号与IP(3306/3307)不一致,打开my.ini文件进行编辑。全部编辑替换为: port=X 3)mysql的配置文件错误----my.ini等文件:   my.ini文件误输入无效内容,不知道到何处。复制替换该文件;有人已经对my.ini文件进行解释以及注释:https://blog.csdn.net/lienfeng6/article/details/78140404 4)root用户的密码错误(后面解决)

第四步、PHP部分

1,安装之前先卸载虚拟机上其他版本的PHP

yum -y remove php* 2,由于linux的yum源不存在PHP7.x,所有我们要改yum源(两条命令)

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 3,安装PHP及其扩展,比如安装php7.2 yum -y install php72w php72w-cli php72w-common php72w-devel php72w-embedded php72w-fpm php72w-gd php72w-mbstring php72w-mysqlnd php72w-opcache php72w-pdo php72w-xml

4,安装成功之后,开启PHP服务:

  1. systemctl enable php-fpm.service

  2. systemctl start php-fpm.service

5,开启服务后,试着运行一下PHP代码,输出一行当前时间戳:

php -r "echo time();"

6,运行php -m看当前PHP安装的扩展有哪些,如果有需要的扩展没安装,比如要安装redis扩展,可以先用search命令查看此版本的PHP所有扩展服务名:

yum search all php72w

img

上图红框内是redis扩展的名称,接下来使用yum安装:yum install后面加上扩展名称。

yum install php72w-pecl-redis.x86_64

安装完毕后,再php -m查看当前已安装的扩展:

img

redis扩展已经安装成功,其他的扩展都是这样;相比较编译安装这种安装方式简直太舒服。

防火墙和端口设置

对于服务器操作系统来说,对外暴露一些不必要的端口都是非常危险的。因此,在管理服务器的时候,知道开放了哪些服务器端口对于运维人员来说算是一项基本技能。下面我们来看看,怎么知道服务器开放了哪些端口。

工具/原料

  • CentOS7

一、在本机上查看

  1.  

    在CentOS主机上查看当前主机在监听哪些端口的命令是netstat,常用的命令是:

    netstat -tlunp

    这个命令会显示出当前主机打开的所有端口,显示结果如下所示,从图中可以看到目前主机上开放的端口tcp端口的22和25,upd的68号端口

    centos7查看端口是否开放

  2.  

    而端口名称后面关联了对应的进程名称,如下面图中所示。这里需要注意的是,如果你的服务器是公网服务器,你在公网上开放了22号端口,那么你的主机就会被公网上很多扫描器扫描,然后尝试爆破你的账号密码,来黑掉你的服务器。解决方法一般是通过修改特定服务监听的端口,如下面第二张图中所示,修改后的sshd进程监听的端口有22和63213端口,那么我把这个端口暴露出去,被扫描的纪律就小很多了。

    centos7查看端口是否开放

    centos7查看端口是否开放

  3.  

    上面这个命令查看的是服务器上的进程对外监听的端口,但是在CentOS7中,默认会打开firewalld防火墙,如果防火墙打开后,默认情况下只会监听在22号端口,也就是说主机对外暴露的端口只有22。如下面图中所示,查看防火墙开放端口的命令是

    iptables-save

    结果如下面第二张图中所示:

    centos7查看端口是否开放

    centos7查看端口是否开放

  4.  

    如果想增加对外开放的端口,就需要通过防火墙的管理命令firewalld-cmd,例如我想开放80端口,那么命令就是:

    firewall-cmd --zone=public --add-port=80/tcp --permanent

    firewall-cmd --reload

    第一条命令是添加端口,第二条命令是重载防火墙。

    centos7查看端口是否开放

  5.  

    看到sucess字样后,再使用iptables-save命令查看端口,可以看到,对外放开的端口增加了80.

    centos7查看端口是否开放1、开放端口

    firewall-cmd --zone=public --add-port=5672/tcp --permanent # 开放5672端口

    firewall-cmd --zone=public --remove-port=5672/tcp --permanent #关闭5672端口

    firewall-cmd --reload # 配置立即生效

2、查看防火墙所有开放的端口

firewall-cmd --zone=public --list-ports

Http没有效应直接显示源码

1.apache没有添加对应的php类型,所以不支持php的脚本解析

解决办法:在配置文件中添加对应类型

找到apache配置文件:知道位置的自己去找,不知道位置的试试使用find命令

在根目录下执行:#find / -name "httpd.conf"

修改httpd.conf在文件中添加一行内容:AddType application/x-httpd-php .php

2.没有加上针对php的索引,如果没有该索引的支持,则无法解析用php编写的网页

解决办法:在配置文件中添加对应索引

找到配置文件方法同上,找到DirectoryIndex index.html

改为DirectoryIndex index.html index.htm index.php 即可