CentOS 7 yum搭建 LAMP
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的更多相关文章
- CentOS 7.4搭建LAMP,LAMP:Linux、Apache、MySQL、PHP
CentOS 7.4搭建LAMP,LAMP:Linux.Apache.MySQL.PHP. 目录: 第一部分 准备工作 第二部分 安装Apache服务 第三部分 安装MySQL服务 第四部分 搭建PH ...
- yum搭建 Lamp环境
yum搭建Lamp yum install -y httpd yum install -y nano rpm 安装 Php7 相应的 yum源 rpm -Uvh https://dl.fedorapr ...
- 利用yum搭建lamp环境并进一步创建博客
用yum搭建lamp环境 第一.安装apache yum -y install httpd 第二.安装mariadb Yum -y mariadb mariadb-server 第三.安装php Yu ...
- centos下yum安装lamp和lnmp轻松搞定
centos下yum安装lamp和lnmp轻松搞定.究竟多轻松你看就知道了.妈妈再也不操心不会装lamp了. 非常辛苦整理的安装方法,会持续更新下去.凡无法安装的在评论里贴出问题来,会尽快解决.共同维 ...
- CentOS 7 yum安装LAMP,LNMP并搭建WordPress个人博客网站
本次实验要进行的是在CentOS7.2,内核版本3.10.0-327.el7.x86_64的环境下搭建LAMP和LNMP,并在此之上做一个WordPress博客网站. [root@Shining ~] ...
- CentOS 6.6 yum 搭建LAMP环境
CentOS 查看操作系统版本 [root@oa ~]# cat /etc/redhat-releaseCentOS release 6.6 (Final) 参考linux centos yum安装L ...
- centos7用yum搭建LAMP环境
用yum快速搭建LAMP平台 实验环境: [root@nmserver- html]# cat /etc/redhat-release CentOS release (AltArch) [root@n ...
- CentOS下编译搭建LAMP环境
搭建LAMP环境须知 搭建LAMP环境时,需要安装的所有软件都要按照一定的顺序安装,我们按照Apache->MySQL->PHP的顺序安装.但是在安装PHP之前,应先安装PHP5需要的最新 ...
- 如何在CentOS 7上搭建LAMP环境(使用YUM或编译)
什么是LAMP? LAMP是Linux,Apache,MySQL和PHP的缩写. 它是一堆应用程序的堆栈,它们在Web服务器上一起工作以托管网站. 话虽如此,每个程序都有不同的目的: 在LAMP中, ...
随机推荐
- mongodb学习(四)CRUD操作
CRUD操作: 1. 插入操作: 直接使用 insert可执行单个操作,也可以执行批量操作 书上的batchInsert会报错.似乎被废弃了. db.foo.insert({"bar&quo ...
- u-boot源码下载
1. 使用git下载u-boot源码 1.1 clone u-boot源码仓库 可以使用git.HTTP.和 rsync协议来下载u-boot源码.你可以使用如下方法来克隆源码树: $ git cl ...
- Yii实现Password Repeat Validate Rule
在使用Yii时遇到这样的需求:在一个注册的页面输入两次密码,并验证两次输入是否一致.可是password的repeat的字段在数据库 并不存在.问题来了,如何创建一个password_repeat的属 ...
- BZOJ1419: Red is good
1419: Red is good Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 639 Solved: 247[Submit][Status][Di ...
- 安卓 webview背景色的设置
第一步:webview的xml属性设置:android:layerType = "software"(关闭webview硬件加速,颜色设置才可以起效果) 第二步:webview所在 ...
- 子窗口url调整导致父窗口刷新
2014年3月19日 10:22:38 如题: 在弹窗里搜索时,url发生改变,导致父窗口的div消失.为何? 之前的逻辑是隐藏div 现在修改为插入节点 .可是还是刷新字窗口后,父窗口里面的div节 ...
- jquery ajax promise
$request = $.getJSON('test.php'); $request.done(process1); $request.done(process2); $request.always( ...
- 解决mysql 1032 主从错误
1032错误----现在生产库中好多数据,在从库误删了,生产库更新后找不到了,现在主从不同步了,再跳过错误也没用,因为没这条,再更新还会报错 临时解决方案 mysql> stop slave; ...
- WinAPI: GetClassName - 获取指定窗口的类名
WinAPI: GetClassName - 获取指定窗口的类名 //声明: GetClassName( hWnd: HWND; {指定窗口句柄} lpClassName: PChar; {缓冲区} ...
- origin添加error bar
增加一列,然后set as Y Error,然后全部选中显示就行了.