zoukankan      html  css  js  c++  java
  • Centos6.5 安装 LAMP

    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 --daemonize yes
              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的步骤详解 很详细
  • 相关阅读:
    待思考问题---数据库的分层模型
    iOS的常用类库
    java spring是元编程框架---使用的机制是注解+配置
    Java Virtual Machine (JVM), Difference JDK, JRE & JVM – Core Java
    Spring注解的使用和组件扫描
    Spring Boot实战:拦截器与过滤器
    问题、存在与认知---问题产生的原因是对存在的不完全或错误认知
    元编程的分层模型
    元编程的本质---高级语言的表达通过解释生成低级语言的表达(代码)
    aop分层模型——aop是元编程的一种
  • 原文地址:https://www.cnblogs.com/fsong/p/11335289.html
Copyright © 2011-2022 走看看