Centos 安装 LAMP

系统: Centos 6.5

Apache 2.4 + PHP 7.2 + Mysql 5.7

准备工作

  1. centos 查看版本

查看 centos版本 How to Check CentOS Version

cat /etc/redhat-release
cat /etc/centos-release
cat /etc/os-release
  1. 更新yum 源
[vagrant@centos tmp]$ sudo yum update

使用yum安装 Apache

[vagrant@centos tmp]$ sudo yum install httpd

安装好查看版本

[vagrant@centos tmp]$ httpd -v
Server version: Apache/2.2.15 (Unix)
Server built: Jun 19 2018 15:45:13

开启 apache 自启动

[vagrant@centos tmp]$ sudo chkconfig httpd on

Apahce 相关命令

sudo service httpd start #启动apache
sudo service httpd stop # 禁用apache
sudo service httpd restart # 重启apache
sudo apachectl configtest #测试配置文件的语法是否正确

开放 Apache 常用的 80,443端口

开放Apache的 80,443 端口

执行命令:

sudo /sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
sudo /sbin/iptables -I INPUT -p tcp --dport 443 -j ACCEPT

保存之前输入已开放端口号语句的命令

sudo /etc/rc.d/init.d/iptables save

查看打开端口命令

sudo service iptables status
sudo service iptables restart #重启 iptables命令

配置 Apache 配置文件

编辑 /etc/httpd/conf/httpd.conf,禁止列出文件目录,访问.env(Laravel的配置文件)格式的文件

执行命令:

sudo vim /etc/httpd/conf/httpd.conf

找到 <Directory "/var/www/html",将 Options Indexes FollowSymLinks改为 Options FollowSymLinks,禁止列出文件目录

在当前组的 </Directory> 之前添加

<Files .env>
Order allow,deny
Deny from all
</Files>

禁止访问.env文件

最后httpd.conf<Directory "/var/www/html">节点的所有内容类似

#
# This should be changed to whatever you set DocumentRoot to.
#
<Directory "/var/www/html">
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
<Files .env>
Order allow,deny
Deny from all
</Files>
</Directory>

[vagrant@centos tmp]$ apachectl configtest
httpd: apr_sockaddr_info_get() failed for centos
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
Syntax OK

如果出现apr_sockaddr_info_get()的错误,

  1. 确认etc/sysconfig/network设定的值
$ cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=centos
  1. /etc/hosts追加
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 centos
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
  1. /etc/httpd/conf/httpd.conf 修改
#ServerName www.example.com:80
ServerName centos:80

安装 Mysql 5.7

更新及安装 mysql 的 yum 源

  1. 官网下载源码包
[vagrant@centos tmp]$ wget http://dev.mysql.com/get/mysql57-community-release-el6-7.noarch.rpm
  1. rpm 安装 mysql 的 yum 源
[vagrant@centos tmp]$ sudo rpm -Uvh mysql57-community-release-el6-7.noarch.rpm
  1. 打开 mysql-community.repo 文件,查看关于 mysql 的内容,确定 [mysql57-community]enable的值是1
[vagrant@centos tmp]$ sudo vim /etc/yum.repos.d/mysql-community.repo

安装 Mysql

执行安装 mysql 命令

[vagrant@centos tmp]$ sudo yum install mysql-community-server

安装时,会出现2次确认,都输入y, 按Enter键确认即可

完成后启动服务

[vagrant@centos tmp]$ sudo service mysqld start

启动完成后,查看临时给root用户生成的密码

$ sudo grep "password" /var/log/mysqld.log
2018-08-08T02:59:58.687152Z 1 [Note] A temporary password is generated for root@localhost: 3fF4?tujHrfl
2018-08-08T03:00:04.204111Z 2 [Note] Access denied for user 'UNKNOWN_MYSQL_USER'@'localhost' (using password: NO)

第一行 root@localhost: 3fF4?tujHrfl 这个就是数据库的 root 密码了

修改初始化密码

为了Mysql安全,建议修改 root的初始密码

执行命令:

[vagrant@centos tmp]$ sudo mysql_secure_installation
  1. 执行上面的命令之后,需要先输入 root临时生成的密码,上一步查询到
  2. 输入root目前的密码之后,需要输入2次新的root密码
  3. Change the password for root ? ((Press y|Y for Yes, any other key for No) : 回复 y来确认修改 root用户的密码
  4. Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : 回复y来继续下面的步骤
  5. Remove anonymous users? (Press y|Y for Yes, any other key for No): 回复 y来移除匿名用户(在生成环境下,你应该删除它)
  6. Disallow root login remotely? (Press y|Y for Yes, any other key for No) : 回复y来禁用 root 远程登录
  7. Remove test database and access to it? (Press y|Y for Yes, any other key for No) : 回复y来移除测试数据库
  8. Reload privilege tables now? (Press y|Y for Yes, any other key for No) : 回复y来重新加载权限

mysql 的配置文件默认在 /etc/my.cnf

开启Mysql 自启动

[vagrant@centos tmp]$ sudo chkconfig mysqld on

安装 PHP 7.2

如果之前已经安装过 php 的话,需要先卸载

[vagrant@centos tmp]$ sudo yum  remove php* php-common

更新及安装 PHP 的 yum 源

[vagrant@centos tmp]$ rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

修改 yum 源

执行命令:

#安装第三方源epel-release
[vagrant@centos tmp]$ sudo yum install epel-release
[vagrant@centos tmp]$ sudo vi /etc/yum.repos.d/remi.repo

[remi] 节点下的 enabled的值由0 改为 1

列出 /etc/yum.repos.d文件夹下的文件列表

[vagrant@centos tmp]$ ls -l /etc/yum.repos.d
CentOS-Base.repo CentOS-fasttrack.repo CentOS-Vault.repo epel-testing.repo mysql-community-source.repo remi-glpi92.repo remi-glpi94.repo remi-php70.repo remi-php72.repo remi.repo
CentOS-Debuginfo.repo CentOS-Media.repo epel.repo mysql-community.repo remi-glpi91.repo remi-glpi93.repo remi-php54.repo remi-php71.repo remi-php73.repo remi-safe.repo

通过上面的命令结果,可以按照自己需要安装的PHP版本,修改对应版本remi-php<version>.repo的文件

因为我需要安装的是 7.2版本,所以编辑的是 remi-php72.repo

执行命令:

sudo vim /etc/yum.repos.d/remi-php72.repo

[remi-php72] 节点下的 enabled的值由0 改为 1

yum list php

列出所有可安裝的软件php清单,如果显示的是 7.x 的话 就没有问题

开始安装 php

sudo yum install php php-cli php-curl php-json php-pdo php-mysql php-gd php-bcmath php-xml php-mbstring php-mcrypt php-redis php-crypto

安装途中,会出现多次确认,输入y并按Enter键 确认 安装

安装完成之后,可以通过php -v查看 php 版本 或php -m 查看安装的扩展

配置PHP

配置文件默认是在/etc/php.ini

date.timezone = Asia/Shanghai
upload_max_filesize = 20M
post_max_size = 20M
#生成环境需关掉显示错误信息
display_errors = Off
# 在HTTP返回头不显示 PHP 信息
expose_php = Off

安装Composer

按照 Command-line installation 命令进行安装

cd /tmp
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
# 如果安装的版本不一样,sha384会验证失败的情况
php -r "if (hash_file('sha384', 'composer-setup.php') === '48e3236262b34d30969dca3c37281b3b4bbe3221bda826ac6a9a62d6444cdb0dcd0615698a5cbe587c3f0fe57a54d8f5') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" php composer-setup.php php -r "unlink('composer-setup.php');"
# 全局安装 composer
sudo mv composer.phar /usr/local/bin/composer
# 查看composer版本
composer -V

Redis的安装(可选)

进入Redis ,需要不同的版本,可以在官网页面中进行选择

上图框住的部分,鼠标放上去可以看到链接,鼠标在下载链接上右键,选择"复制链接地址(E)"(Chrome浏览器的右键菜单选项)

  1. 下载 安装包
wget http://download.redis.io/releases/redis-4.0.14.tar.gz
  1. 解压和安装
tar -xzf redis-4.0.14.tar.gz
cd redis-4.0.14
sudo make
sudo make install

Redis没有其他外部依赖,安装过程很简单。编译后在Redis源代码目录的src文件夹中可以找到若干个可执行程序,安装完后,在/usr/local/bin目录中可以找到刚刚安装的redis可执行文件。如下图

  1. 启动 redis

直接执行 redis-server 命令就启动了

随开机启动脚本,在/etc/init.d/文件夹下创建一个redis_端口号的文件,如redis_6379

  1. 创建文件夹
# 创建存放redis配置的文件夹
sudo mkdir -p /etc/redis
# 创建存放redis 数据的文件夹,端口号,默认是6379
sudo mkdir -p /var/redis/端口号
  1. 修改配置文件
# 进入下载 redis-4.0.14.tar.gz 文件时的目录,复制文件配置模板到 /etc/redis,并重命名为`6379.conf`
sudo cp redis-4.0.14/redis.conf /etc/redis/6379.conf

首先将配置文件模板(redis-4.0.14/redis.conf)复制到/etc/redis 目录中,以端口号命名(如“6379.conf”),然后按照下表对其中的部分参数进行编辑。

参数 说明
daemonize yes 使Redis以守护进程模式运行(由no改为yes)
pidfile /var/run/redis_端口号.pid 设置Redis的PID文件位置(默认已是/var/run/redis_6379.pid,不用修改)
port 端口号 设置Redis监听的端口号(默认是6379,不用修改)
dir /var/redis/端口号 设置持久化文件存放位置,默认是dir ./,修改为/var/redis/6379
  1. 创建 /etc/init.d/redis_6379 文件并进行配置
sudo vim /etc/init.d/redis_6379

在vim编辑器中填入以下内容

#!/bin/bash
# /etc/init.d/redis_6379 ### BEGIN INIT INFO
# Provides: redis_6379
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: redis server script
# Description: This service is used to manage redis-server start or stop
### END INIT INFO REDISPORT=6379
EXEC=/usr/local/bin/redis-server
CLIEXEC=/usr/local/bin/redis-cli PIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="/etc/redis/${REDISPORT}.conf" case "$1" in
start)
if [ -f $PIDFILE ];
then
echo "$PIDFILE exists,redis-server is already running or crashed"
else
echo "Starting Redis Server"
$EXEC $CONF
fi
;;
stop)
echo "Stopping Redis Server"
#killall redis server
kill $(ps aux | grep -m 1 "${EXEC}" | awk '{ print $2 }')
;;
*)
echo "Usage: service redis_6379 start|stop"
exit 1
;;
esac
exit 0

保存之后,就可以通过以下命令来启动或者停止 redis-server 了

# 启动redis server
sudo service redis_6379 start
# 停止redis server
sudo service redis_6379 stop
  1. 启用redis-server开机启动
sudo chkconfig redis_6379 on

列出redis的启动信息

chkconfig --list | grep "redis"

如果列表中出现了

redis_6379     	0:off	1:off	2:on	3:on	4:on	5:on	6:off

说明开机启动设置成功了

部署Laravel到生成环境的优化

安装包

composer install --optimize-autoloader --no-dev

其中,--optimize-autoloader 表示生成优化后的自动加载器,虽然生成过程可能较慢,但换来的是提高运行时的效率。--no-dev 表示不安装 composer.json 中 require-dev 声明的扩展包,在生产环境中我们不需要这些开发依赖。

建立缓存

php artisan optimize
php artisan api:cache
php artisan route:cache
php artisan view:clear
php artisan config:cache

supervisor (可选)

因为 Centos 6.5 通过Yum 安装的 supervisor 的版本是 2.1

可以通过yum info supervisor 查询supervisor的信息

如果已通过 yum 命令安装了supervisor 2.1,可以通过yum remove supervisor*来卸载。

安装 supervisor

# 查看python版本
[vagrant@centos tmp]$ python -V
Python 2.6.6

指定安装supervisor 3.1.3版本,这个版本可以用python2.6,直接装了就能用。可以pip install supervisor==3.1.3或者easy_install supervisor==3.1.3

我是通过下面安装的:

easy_install supervisor==3.1.3

配置

  1. 生成配置文件
echo_supervisord_conf > /etc/supervisord.conf
  1. 编辑配置文件
sudo vim /etc/supervisord.conf

找到

;[include]
;files = relative/directory/*.ini

改为

[include]
;files = relative/directory/*.ini
files = /etc/supervisor/conf.d/*.conf

保存之后,创建包含的目录

sudo mkdir -p /etc/supervisor/conf.d

以后工作的配置文件就可以放在这个目录里了

  1. 启动supervisord

使用 /etc/supervisord.conf 配置文件来启动supervisord 服务

/usr/bin/supervisord -c /etc/supervisord.conf
  1. 常用的命令小记
#查看状态
supervisorctl status
# 添加或者修改了配置文件,需要重新加载
supervisorctl reload
# 重启所有
supervisorctl restart all

遇见的问题

Apache error: default virtualhost overlap on port 443或者80

Apache error: _default_ virtualhost overlap on port 443或者80,修改 httpd.conf文件,大概在 1002行左右添加

NameVirtualHost *:80
#如果需要使用到https,需要添加 443端口
NameVirtualHost *:443

You don't have permission to access /index.html on this server.

当确认了 DocumentRoot/home/testdomain/public_html三级文件夹和index.html的权限都是 755(drwxrwxr-x)之后,访问还是 You don't have permission to access /index.html on this server.

可以检查Centos的selinux状态,尝试关闭SELinux访问之后,应该就可以访问到

查看 SELinux状态

[vagrant@centos tmp]$ getenforce
Enforcing #是启用的,如果返回Disabled,就是已经禁用了

临时关闭

sudo setenforce 0

永久关闭

vi /etc/selinux/config

SELINUX=enforcing改为SELINUX=disabled

设置后需要重启才能生效

References
  1. CentOS6.5 下升级 PHP7、MySQL5.7 文章安装部分文字描述主要参考
  2. centos 6.5 防火墙开放指定端口 简单快速设置好 iptables
  3. Centos查看端口占用情况和开启端口命令 开放端口的内容规则,但是新增的规则一定要放在-A FORWARD开头这1行的前面,不然重启 iptables 不会生效
  4. CentOS / httpd > Starting httpd: httpd: apr_sockaddr_info_get() failed for [hostname].localdomain centos httpd 重啓顯示 httpd: apr_sockaddr_info_get() failed for的解决参考
  5. CentOS 7.X 关闭SELinux SELinux关闭参考
  6. CentOS下Redis的安装 redis 安装参考
  7. linux chkconfig 使用说明 了解chkconfig使用很有帮助
  8. (上线时清缓存)laravel 5.1 的程序性能优化(配置文件) - 简书轻松部署 Laravel 应用 | 《10. 手动部署 - 生产环境的必要优化》
  9. centos6.5安装supervisor Centos 6.5下安装 supervisor 3 的解决方法和centos下安装supervisor的步骤详解 很详细

Centos6.5 安装 LAMP的更多相关文章

  1. CentOS6.5安装LAMP环境APACHE的安装

    1.卸载apr.apr-util [root@centos6 LAMP]# yum remove apr apr-util 2.编译安装apr-1.5.1.tar.gz [root@centos6 L ...

  2. CentOS6.5安装LAMP环境的前期准备

    首先需要按照前一篇<CentOS 6.5下安装MySql 5.7>的安装步骤配置好防火墙.关闭 SELINUX 1.编译安装libxml2注:libxml2是一个xml的c语言版的解析器, ...

  3. linux centos6 yum 安装lamp

    centos 6.5 1.yum安装和源代码编译在使用的时候没啥区别,但是安装的过程就大相径庭了,yum只需要3个命令就可以完成,源代码需要13个包,还得加压编译,步骤很麻烦,而且当做有时候会出错,源 ...

  4. 在 centos6 上安装 LAMP

    LAMP 代表的是 Linux, Apache, MySQL, 以及 PHP.   第一步,安装 Apache 使用 yum 安装 sudo yum install httpd 启动 httpd 服务 ...

  5. CentOS6.4安装LAMP环境

    1.配置防火墙,开放80.3306端口 vi /etc/sysconfig/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport - ...

  6. centos6.7安装lamp

    1.配置防火墙,开启80端口.3306端口 vi /etc/sysconfig/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport ...

  7. Centos6.5 安装lamp环境

    转载自:http://www.jb51.net/article/37987.htm (转载请注明出处,谢谢) 准备篇: 1.配置防火墙,开启80端口.3306端口vi /etc/sysconfig/i ...

  8. CentOS6.3 编译安装LAMP(1):准备工作

    卸载yum或rpm安装的amp软件 #在编译安装lamp之前,首先先卸载已存在的rpm包. rpm -e httpd rpm -e mysql rpm -e php yum -y remove htt ...

  9. CentOS6.3 编译安装LAMP(2):编译安装 Apache2.2.25

    所需源码包: /usr/local/src/Apache-2.2.25/httpd-2.2.25.tar.gz 编译安装 Apache2.2.25 #切换到源码目录 cd /usr/local/src ...

随机推荐

  1. 【牛客网-剑指offer】旋转数组的最小数字

    题目: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋 ...

  2. linux学习总结--linux100day(day1)

    写在前面:我是一名在学习linux的小学生,最近在学习python时,我的老师推荐了github上的一本教材“python100day”,100day里面的内容由浅入深,且都具备详细的例子,对于我这个 ...

  3. linux网络配置 转

    1.常用配置网络指令 (1) 配置eth0的IP地址, 同时激活该设备 1 sudo ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up (2) 添 ...

  4. 小米手机 - Charles无法安装证书 因为无法读取证书

    1.不要使用小米原装的浏览器安装证书 2.使用第三方浏览器安装,如我使用的是UC浏览器 3.使用第三方浏览器安装的证书格式是".pem"格式问卷 4.将这个文件放入小米的downl ...

  5. 解决VSCode中Python在控制台输出中文乱码的问题

    在菜单Debug->Open Configurations,打开launch.json,新增如下粉红色字符内容: { // Use IntelliSense to learn about pos ...

  6. Failed to bind properties under '' to com.zaxxer.hikari.Hikari DataSource Spring Boot解决方案

    Description: Failed to bind properties under '' to com.zaxxer.hikari.HikariDataSource: Property: dri ...

  7. spring data jpa 配置文件

    <?xml version="1.0" encoding="UTF-8"?><persistence xmlns="http://j ...

  8. go变量和声明

    go变量和声明 这将是美好的开始和结束,通过写下x = 4,我们查看变量,可以说声明了一个变量并赋值,但是很不幸,go语言变量声明和赋值比这更复杂.通过学习一些简单的示例开始学习变量声明和赋值.然后在 ...

  9. Wannafly Winter Camp Day5 Div1 E题 Fast Kronecker Transform 转化为NTT或FFT

    目录 Catalog Solution: (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 Catalog @ Problem:传送门  原题目描述在最下面.  对给定的式子算解.   ...

  10. Springboot开篇

    1.Spring -boot-starter-web:用于构建web 应用模块,加入后包含spring mvc框架,默认内嵌tomcat容器 2.spring-boot-starter-jpa:用于构 ...