CentOS 7 搭建LAMP环境

1. Apache 安装

Apache 的软件包名称叫做httpd,因此安装Apache,使用以下命令

[root@localhost ~]# yum -y install httpd

安装完成后Apache是以httpd服务的形式存在的。

启动Apache

[root@localhost ~]# systemctl start httpd.service

设置Apache为开机启动

[root@localhost ~]# systemctl enable httpd.service

检查httpd服务状态

[root@localhost ~]# systemctl status httpd.service

● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2017-02-21 00:47:39 PST; 17h ago
Docs: man:httpd(8)
man:apachectl(8)
Process: 7594 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)
Main PID: 7673 (httpd)
Status: "Total requests: 5; Current requests/sec: 0; Current traffic: 0 B/sec"
CGroup: /system.slice/httpd.service
├─7673 /usr/sbin/httpd -DFOREGROUND
├─7674 /usr/sbin/httpd -DFOREGROUND
├─7675 /usr/sbin/httpd -DFOREGROUND
├─7676 /usr/sbin/httpd -DFOREGROUND
├─7677 /usr/sbin/httpd -DFOREGROUND
├─7678 /usr/sbin/httpd -DFOREGROUND
├─7758 /usr/sbin/httpd -DFOREGROUND
└─7806 /usr/sbin/httpd -DFOREGROUND
Feb 21 00:47:39 localhost.localdomain systemd[1]: Starting The Apache HTTP Server...
Feb 21 00:47:39 localhost.localdomain httpd[7673]: AH00558: httpd: Could not reliably ...e
Feb 21 00:47:39 localhost.localdomain systemd[1]: Started The Apache HTTP Server.
Hint: Some lines were ellipsized, use -l to show in full.

如以上结果所示, 'loaded'项 中的 'enabled' 表示httpd服务已经设为开机启动;'Active'项中的'active(running)'则表示httpd服务正在运行中。

由于HTTP协议使用TCP端口80,因此防火墙要放通TCP端口80:

[root@localhost ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent

success

重启防火墙使更改立即生效

[root@localhost ~]# firewall-cmd --reload

success

查询防火墙当前开放端口,检查配置是否成功

[root@localhost ~]# firewall-cmd --list-all

public (default, active)
interfaces: eno16777736
sources:
services: dhcpv6-client ssh
ports: 80/tcp
masquerade: no
forward-ports:
icmp-blocks:
rich rules:

如以上结果显示,'ports'项中显示 '80/tcp'表示TCP端口80已放通。

设置Apache配置文件

Apache主配置文件为 /etc/httpd/conf/httpd.conf

另外 /etc/httpd/conf.d目录下以.conf结尾的配置文件也会被读取;可加载模块的配置文件应放置在/etc/httpd/conf.modules.d目录下,并且也以.conf结尾

ServerRoot "/etc/httpd"                      //服务器根目录:本配置文件中没有使用绝对路径的地方,都认为是在该目录下
Listen 80 //侦听80端口
Include conf.modules.d/*.conf
//该设定让/etc/httpd/conf.modules.d目录下以.conf结尾的配置文件也会被读取进来。DSO对象的配置文件应放置在此目录下
User apache
Groupapache
//当你使用浏览器访问web服务器时,会产生相应的httpd进程,该进程所属的用户和组就由这里设定。
//从这里开始,下面的设定适用于“主”服务器,与虚拟主机区别开来。但如果<VirtualHost>部分未设定这些值,也会使用这些值
ServerAdmin root@localhost //系统管理员的邮箱。改成自己的邮箱即可。
ServerName www.speedsnail.com //设置主机名。生产环境中,该主机名应该是能被正确解析成这台服务器的IP的。 <Directory />
AllowOverride none
Require all denied
</Directory> //<Directory 目录路径>和</Directory>:用于设定指定目录(这里是系统根目录)的访问权限。目录路径那里可以使用绝对
//路径和相对路径,还可以搭配使用通配符和正则表达式。
//AllowOverride:如果指定目录下(这里是系统根目录)存在一个.htaccess文件,那么AllowOverride设定的是,该文件里面的
//设置是否能够覆盖<Directory>这部分的设置,或该文件里面的设置可以覆盖的是<Directory>这部分的哪些设置。none表示不
//允许进行覆盖。
//Require:设定哪些用户可以访问该目录(这里是系统根目录)。all denied表示不允许访问该目录。 DocumentRoot "/var/www/html"
//设定网页存放目录。比如说,访问http://host/index.html实际上就是访问这个host的/var/www/html/index.html这个文档。 <Directory "/var/www">
AllowOverride None
Require all granted //all granted表示可无条件访问该目录。
</Directory> <Directory"/var/www/html">
Options FollowSymLinks
AllowOverride None
Require all granted
</Directory> //Options:用于设定在该目录中哪些特性可用。FollowSymLinks,让该目录下的符号链接可以生效。默认这里还有个Indexes选
//项,建议拿掉。它的作用是,当浏览器访问该目录(而非该目录下的某一个档案)时,如果该目录下没有默认网页(如index.html),
//那么此时就会返回该目录下的文件名列表。 <IfModule dir_module>
DirectoryIndex index.html
</IfModule> //<IfModule 模块>和</IfModule>:如果Apache有加载这里指定的模块,那么Apache就会对它们之间的语句进行处理。
//也可以使用<IfModule!模块>和</IfModule>,那么就表示没有加载指定的模块时才进行处理。
//这里的模块可以是模块ID(如rewrite_module),也可以是模块文件名(如mod_rewrite.c)。
//DirectoryIndex:这就是设置默认网页的,即当浏览器访问某一个目录时,会返回该目录下的index.html文件(如果存在的话)。
//也可以接多个档名,如DirectoryIndexindex.html index.htm index.cgi index.pl,这样就会返回找到的第一个文件。 <Files ".ht*">
Require all denied
</Files>
//<Files 文件名>和</Files>:对指定文件名的文件应用这里指定的语句。
//这里的语句的意思是:任意目录下,文件名符合.ht*的文件都会被禁止访问。 ErrorLog "logs/error_log" //错误日志所在文档为/etc/httpd/logs/error_log
LogLevel warn //设置日志记录级别 <IfModule log_config_module>
LogFormat "%h %l %u %t \"%r\" %>s %b\"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
<IfModule logio_module> LogFormat "%h %l %u %t \"%r\" %>s %b\"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
</IfModule>
CustomLog "logs/access_log" combined //客户端访问服务器的日志会记在/etc/httpd/logs/access_log
</IfModule> <IfModule alias_module>
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
</IfModule> //ScriptAlias会将URL路径映射到指定目录,并且让该目录具有CGI脚本执行权限(因此CGI脚本都可放置在该目录下)。
//以这里的设定举个例子,假如在浏览器中输入http://example.com/cgi-bin/foo,此时就会执行/var/www/cgi-bin/foo这个
//CGI脚本。 <Directory"/var/www/cgi-bin">
AllowOverride None
Options None
Require all granted
</Directory> <IfModule mime_module> //这部分是关于MIME的
TypesConfig /etc/mime.types
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
</IfModule> AddDefaultCharset Off
//AddDefaultCharset会强制客户端浏览器使用指定的字符集编码方式。这可能会有问题,所以要将它关闭。实际上,所使用的编
//码方式在网页里有声明。 <IfModule mime_magic_module>
MIMEMagicFile conf/magic
</IfModule> EnableSendfile on //允许Apache使用系统核心支持的sendfile来传送文件给客户端
IncludeOptional conf.d/*.conf //在/etc/httpd/conf.d目录下以.conf结尾的配置文件也会被读取

从以上配置文件中可以知道,默认情况下,

网页文档可以放置在/var/www/html 目录下

CGI脚本可以放置在 /var/www/cgi-bin 目录下

错误日志在 /etc/httpd/logs/error_log

访问日志在 /etc/httpd/logs/access_log

注:每次修改Apache配置文件之后都要重启服务器以让修改生效

测试配置文件语法有没有问题可用以下命令:

[root@localhost ~]#apachectl configtest

重启Apache 即 httpd服务

[root@localhost ~]#systemctl restart httpd

2. PHP安装

使用以下命令安装PHP软件:

[root@localhost ~]#yum -y install php

从安装过程中可以看出安装的版本为5.4版本

安装完成后,PHP会生成配置文件 /etc/httpd/conf.d/php.conf

因为该配置文件在 /etc/httpd/conf.d 目录下,所以它会被Apache所读取。

PHP还会生成配置文件 /etc/httpd/conf.modules.d/10-php.conf,该配置也会被Apache所读取,它的设定让Apache可以加载PHP模块。

PHP本身的配置文件是 /etc/php.ini

下面介绍一下配置文件 /etc/httpd/conf.d/php.conf

<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch> //<FilesMatch 正则表达式>和</FilesMatch>:文件名与正则表达式相匹配的文件,将适用这里设定的语句。
//SetHandler:强制所有匹配的文件使用指定handler进行处理。 AddType text/html .php //设定扩展名为.php的档案的类型为text/html
DirectoryIndex index.php //默认网页档名增加index.php
php_value session.save_handler"files"
php_value session.save_path "/var/lib/php/session"

最后看一下配置文件 /etc/php.ini

display_errors = Off                                       //当发生错误时,不将错误信息显示出来(到浏览器上)
display_startup_errors = Off //不将PHP启动时发生的错误信息显示出来(到浏览器上)
error_reporting = E_ALL &~E_DEPRECATED & ~E_STRICT //这一项设定PHP会告知的错误或信息类型
html_errors = On //当PHP显示或记录错误信息时,将该信息格式化成HTML格式
log_errors = On //这让PHP可以将错误信息日志记录到日志文件里
ignore_repeated_errors = On //忽略重复的错误信息
ignore_repeated_source = On //当忽略重复的错误信息时忽略信息源
post_max_size = 25M //PHP所允许的POST数据的最大值。可按照需要进行调整
file_uploads = On //允许文件上传,默认为On
upload_max_filesize = 20M //上传文件所允许的最大值。可按照需要进行调整
memory_limit = 128M //PHP可用的最大内存。可按照需要进行调整

然后,重启httpd服务

[root@localhost ~]# systemctl restart httpd

为了测试Apache能否正常解析PHP文件,在/ver/www/html目录下新建一个testphp.php文档,内容如下:

<?php
phpinfo();
?>

phpinfo();是PHP提供的一个函式库,该函式库可以显示出你这个web服务器的相关信息,及PHP的一些模块加载情况。

测试完成后及时删除testphp.php这个文档

3. MySQL安装

由于从RHEL 7开始Red Hat公司推荐使用MariaDB替换MySQL,因此默认情况下,并没有提供MySQL的安装包,也就是没办法直接使用yum命令安装MySQL软件。

为了要安装MySQL,我选择的是去官网http://dev.mysql.com/downloads/repo/yum/下载安装包,不过在下载之前需要先注册。

因为使用的是CentOS 7系统,所以我下载的是mysql-community-release-el7-5.noarch.rpm这个文件。

下载地址:http://repo.mysql.com/

下载下来后,将它放在/root目录下,然后使用命令:

[root@localhost ~]# yum localinstall mysql-community-release-el7-5.noarch.rpm

使用上面这个命令可以将MySQL Yum Repository添加到系统的软件库列表(repositorylist)。然后可以使用下面的命令检查添加是否成功:

[root@localhost ~]# yum repolist enabled | grep mysql

然后,使用下面的命令安装MySQL:

[root@localhost ~]# yum install mysql-community-server

安装完成后,启动mysqld服务并设为开机自启动

[root@localhost ~]# systemctl start mysqld

[root@localhost ~]# systemctl enable mysqld

如果需要远程访问数据库,需要防火墙放通TCP端口3306

[root@localhost ~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent

success

重启防火墙使更改立即生效

[root@localhost ~]# firewall-cmd --reload

success

检查mysqld服务状态

[root@localhost ~]# systemctl status mysqld

查看mysqld服务侦听的端口

[root@localhost ~]# netstat -atlpn | grep mysqld

tcp6       0      0 :::3306                 :::*                    LISTEN      2388/mysqld

从以上结果可以看出,MySQL侦听tcp端口3306。

根据MySQL官方手册,建议安装完成MySQL数据库后使用下面的命令来增强数据库的安全性:

[root@localhost ~]# mysql_secure_installation

该命令可以协助你设置数据库root账号的密码,移除匿名用户账号,是否允许远程登录root账号,移除自带的test数据库,最后还会问你是否要重新加载特权表以让修改生效。我是设置了数据库root账号密码,其它的都是(Y).

如果不想使用上面的命令,可以用以下命令来给root账号设置密码:

[root@localhost ~]# mysqladmin -u root password

如果要修改root账号的密码可以使用以下命令:

[root@localhost ~]# mysqladmin -u root -p password

用root账号进入MySQL管理后台,它会提示你输入密码:

[root@localhost ~]# mysql -u root -p

创建本地用户:

mysql> create user '用户名'@'localhost' identified by '密码';

注:MySQL命令输入完成后需要在最后加上分号(;)标识,回车开始执行命令

创建新数据库:

mysql> create database 数据库名;

进入数据库

mysql> use 数据库名;

将指定数据库的所有权授权给指定用户

mysql> grant all privileges on 数据库名.* to '用户名'@'localhost';

允许使用root远程访问数据库

1.设置root远程访问权限

 mysql> use mysql;

 mysql> update user set host='%' where host='localhost' and user='root';

 2.授权

 mysql> grant all privileges on . to 'root'@'%' identified by '密码';

刷新系统权限表:

mysql> flush privileges;

退出MySQL管理后台:

mysql> exit;

MySQL的一些文件位置

/etc/my.cnf : 这是MySQL的配置文件。

/var/lib/mysql : 这是数据库实际存放目录。不能删除,并且要给予所在分区足够容量

/var/log/mysqld.log :这是MySQL的错误日志文件。

安装php-mysqlnd

php-mysqlnd 是一个用于让PHP程序使用MySQL数据库的模块。要安装该模块使用命令:

[root@localhost ~]# yum -y install php-mysqlnd

然后重启httpd服务:

[root@localhost ~]# systemctl restart httpd

为了测试php能否正常连接数据, 在/var/www/html 目录下创建文档testmysql.php,内容如下:

<?php
$mydbhost = 'localhost'; // 数据库服务器
$mydbuser = 'root'; // 用户名
$mydbpwd = '123456'; // 密码 $db = mysql_connect($mydbhost, $mydbuser, $mydbpwd) or die('Cannot find the database server.');
echo 'Everything is OK!';
?>

修改SELinux规则

Apache如果要进行联机工作,需要让SELinux规则放行:

[root@localhost ~]# setsebool -P httpd_can_network_connect=1

然后确认一下修改是否生效:

[root@localhost ~]# getsebool httpd_can_network_connect

CentOS 7 yum搭建 LAMP的更多相关文章

  1. CentOS 7.4搭建LAMP,LAMP:Linux、Apache、MySQL、PHP

    CentOS 7.4搭建LAMP,LAMP:Linux.Apache.MySQL.PHP. 目录: 第一部分 准备工作 第二部分 安装Apache服务 第三部分 安装MySQL服务 第四部分 搭建PH ...

  2. yum搭建 Lamp环境

    yum搭建Lamp yum install -y httpd yum install -y nano rpm 安装 Php7 相应的 yum源 rpm -Uvh https://dl.fedorapr ...

  3. 利用yum搭建lamp环境并进一步创建博客

    用yum搭建lamp环境 第一.安装apache yum -y install httpd 第二.安装mariadb Yum -y mariadb mariadb-server 第三.安装php Yu ...

  4. centos下yum安装lamp和lnmp轻松搞定

    centos下yum安装lamp和lnmp轻松搞定.究竟多轻松你看就知道了.妈妈再也不操心不会装lamp了. 非常辛苦整理的安装方法,会持续更新下去.凡无法安装的在评论里贴出问题来,会尽快解决.共同维 ...

  5. CentOS 7 yum安装LAMP,LNMP并搭建WordPress个人博客网站

    本次实验要进行的是在CentOS7.2,内核版本3.10.0-327.el7.x86_64的环境下搭建LAMP和LNMP,并在此之上做一个WordPress博客网站. [root@Shining ~] ...

  6. CentOS 6.6 yum 搭建LAMP环境

    CentOS 查看操作系统版本 [root@oa ~]# cat /etc/redhat-releaseCentOS release 6.6 (Final) 参考linux centos yum安装L ...

  7. centos7用yum搭建LAMP环境

    用yum快速搭建LAMP平台 实验环境: [root@nmserver- html]# cat /etc/redhat-release CentOS release (AltArch) [root@n ...

  8. CentOS下编译搭建LAMP环境

    搭建LAMP环境须知 搭建LAMP环境时,需要安装的所有软件都要按照一定的顺序安装,我们按照Apache->MySQL->PHP的顺序安装.但是在安装PHP之前,应先安装PHP5需要的最新 ...

  9. 如何在CentOS 7上搭建LAMP环境(使用YUM或编译)

    什么是LAMP? LAMP是Linux,Apache,MySQL和PHP的缩写. 它是一堆应用程序的堆栈,它们在Web服务器上一起工作以托管网站. 话虽如此,每个程序都有不同的目的: 在LAMP中, ...

随机推荐

  1. cocos2d-x 跨平台usleep方法

    #if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) #define usleep(t) Sleep(t) #else #include <unistd.h ...

  2. JQuery Easy Ui dataGrid 数据表格 -->转

    转至: http://www.cnblogs.com/cnjava/archive/2013/01/21/2869876.html#events 数据表格 - DataGrid 内容 概况 使用方法 ...

  3. 设置git账号并生成新的ssh(切换电脑用户之后)

    1.设置账号 2.设置邮箱 3.检查确认 4. 5.check-----成功~

  4. 安卓弹出对话框——AlertDialog(二)

    在Android中,启动一个对话框有三种方式: 1.定义一个新的activity,并将其主题设置为对话框风格 2.使用AlertDialog类,并且显示它 3.使用 Android的Dialog类的子 ...

  5. RAMOS系统 WIN7+VHD+GURB map

    转载(并未验证) 前段时间加了一个内存条,将笔记本内存升级到了6G,由于之前用的是32位的win7不可以直接使用6G内存,便装了64位的系统.网上找资源的时候发现,大内存可以使用RamOS,从内存中虚 ...

  6. 【T】并行调度

    /** * 并行调度相关处理 * * 按卫星*日期 ,将待处理的任务分解为 卫星+日期 粒度的子任务 添加到paramMapList列表中 */ List<Map<String, Obje ...

  7. 判断js对象的数据类型,有没有一个最完美的方法?

    先来一个例子: var string1=""; var string2=new String(""); alert(typeof string1); // st ...

  8. Angular - - ngIf、ngSwitch、ngHide/ngShow

    在组合这些ng指令写到一篇文章里的时候,基本是有规则的,野兽把功能相似相近的一类大多会组合到一起,方便理解和记忆. 这篇的三个指令也都是对DOM元素的操作,页面上显示/隐藏的判断,添加/移除的判断. ...

  9. VMware虚拟机与宿主无法复制的解决办法

    由于工作需要,上网机器使用虚拟机,因此需要经常来回的拷贝文件,而vmware从6.5一直走来到10.0.1,总是有一个问题很让人苦恼---共享粘贴板总是会无故失效.经常实验,发现可以经过以下方法临时解 ...

  10. SSH系统介绍

    SSH的系统中,对象的调用流程是:JSP->Action->Service->DAO->Hibernate,数据的流向是ActionFormBean接受用户的数据,Action ...