美文网首页
Centos7编译安装LNMP环境

Centos7编译安装LNMP环境

作者: 阿当运维 | 来源:发表于2020-10-26 18:29 被阅读0次

    系统版本:CENTOS 7.8
    环境在docker容器中测试(容器中很多常用命令没有,所以部署环境前需要安装一下)
    安装前准备

    yum install lrzsz  net-tools.x86_64 wget  -y
    curl 7.10以后的版本可能在安装php7指定参数时候会报错,可以先不安curl
    wget https://curl.haxx.se/download/curl-7.54.0.tar.gz
    tar zxvf curl-7.54.0.tar.gz 
    cd curl-7.54.0
    make && make install 
    

    安装NGINX

    1.安装nginx所需依赖

    yum install gcc gcc-c++ openssl openssl-devel cyrus-sasl-md5  zlib-devel make pcre-devel -y
    

    2.下载软件包

    wget  http://nginx.org/download/nginx-1.19.1.tar.gz
    

    3.解压,编译,安装[cd /usr/local/src(软件包统一都放这里,安装是安装在/usr/local/软件名)]

    tar zxvf nginx-1.19.1.tar.gz
    cd nginx-1.19.1
    ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-stream
    make -j4 && make install 
    

    4.创建运行用户和组(NGINX)[-r 创建系统用户;-g指定组;-s指定用户登录类型;-d用户登录时所在主目录;-M不自动创建用户家目录(-m是自动创建家目录)]

    groupadd -r nginx && useradd -r -g nginx -s /sbin/nologin -d /usr/local/nginx -M nginx 
    

    5.备份主配置文件和拷贝最新主配置文件进去

    备份:mv nginx.conf   `date +%Y%m%d`.nginx.bak
    新的配置文件如下:nginx.conf
    ______________________________________________________________________________________
    #定义 Nginx 运行的用户和用户组
    user nginx nginx;
    #启动进程,通常设置成和 cpu 的数量相等
    worker_processes 2;
    
    worker_rlimit_nofile 102400;
    #该指令是当一个 nginx 进程打开的最多文件描述符数目,最好与 ulimit -n 的值保持一致。
    
    error_log /usr/local/nginx/logs/error.log;
    #错误日志定义等级, [ debug | info | notice | warn | error | crit ]
    
    pid /usr/local/nginx/nginx.pid;
    
    #工作模式及连接数上限
    events {
        use epoll;
        worker_connections 102400;
        #单个后台 worker process 进程的最大并发链接数 (最大连接数=连接数*进程数)
        multi_accept on;
        #尽可能多的接受请求.
    } 
    
    http {
        include mime.types;
        default_type application/octet-stream;
        access_log /usr/local/nginx/logs/access.log;
    
        sendfile on;
    
        tcp_nopush on;
        #防止网络阻塞
    
        keepalive_timeout 60;
        #keepalive 超时时间, 客户端到服务器端的连接持续有效时间,当出现对服务器的后继请求时, keepalive-timeout 功能可避免建立或重新建立连接。
    
        tcp_nodelay on;
        #提高数据的实时响应性
    
        #开启 gzip 压缩
        gzip on;
        gzip_min_length 1k;
        gzip_buffers 4 16k;
        gzip_http_version 1.1;
        gzip_comp_level 3;
        #压缩级别大小,最大为9。值越小,压缩后比例越小,CPU 处理更快。值越大,消耗 CPU 比较高。
        gzip_types text/plain application/x-javascript text/css
        application/xml;
        gzip_vary on;
    
        client_max_body_size 10m;
        #允许客户端请求的最大单文件字节数
    
        client_body_buffer_size 128k;
        #缓冲区代理缓冲用户端请求的最大字节数.
    
        proxy_connect_timeout 90;
        #nginx 跟后端服务器连接超时时间(代理连接超时)
    
        proxy_send_timeout 90;
        #后端服务器数据回传时间(代理发送超时)
    
        proxy_read_timeout 90;
        #连接成功后,后端服务器响应时间(代理接收超时)
    
        proxy_buffer_size 4k;
        #设置代理服务器(nginx)保存用户头信息的缓冲区大小
    
        proxy_buffers 4 32k;
        #proxy_buffers 4个缓冲区,每个缓存区32K。适合网页平均在 32k 以下
    
        proxy_busy_buffers_size 64k;
        #高负荷下缓冲大小(proxy_buffers*2)
    
        #设定请求缓冲
        large_client_header_buffers 4 4k;
        client_header_buffer_size 4k;
        #客户端请求头部的缓冲区大小,这个可以根据系统分页大小来设置,一般一个请求的头部大小不会超过 1k
        #不过由于一般系统分页都要大于 1k,所以这里设置为分页大小。分页大小可以用命令getconf PAGESIZE 取得。
    
        open_file_cache max=102400 inactive=20s;
        #这个将为打开文件指定缓存,默认是没有启用的, max 指定缓存数量,建议和打开文件数一致, inactive 是指经过多长时间文件没被请求后删除缓存。
    
        open_file_cache_valid 30s;
        #这个是指多长时间检查一次缓存的有效信息。
    
        open_file_cache_min_uses 1;
        #open_file_cache 指令中的 inactive 参数时间内文件的最少使用次数,如果超过这个数字,文件描述符一直是在缓存中打开的。
    
        server_tokens off;
        #隐藏版本号
        include vhost/*.conf;
    }
    

    6.mkdir -p /usr/local/nginx/conf/vhost
    编辑虚拟主机测试文件

    server
    {
        listen 80;
        server_name localhost;
        index index.html index.htm index.php;
        root /usr/local/nginx/html;
        location ~ \.php$
        {
            include fastcgi_params;
            #fastcgi_pass unix:/tmp/php-fcgi.sock;
                    fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        }
    }
    

    7.查看进程,测试
    ps -ef|grep nginx
    /usr/local/nginx/sbin/nginx -t
    curl http://localhost/index.html

    PHP7的安装

    1.安装php所需扩展

    yum install gcc gcc-c++ libxml2 libxml2-devel autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel -y
    

    2.下载php软件包

    cd /usr/local/src/
    wget http://cn2.php.net/distributions/php-7.2.0.tar.gz
    

    3.解压,编译安装,创建php7运行用户和组
    tar zxvf php-7.2.0.tar.gz
    cd php-7.2.0

    groupadd -r php7 && useradd -r -g php7 -s /sbin/nologin -d /usr/local/php7 -M php7
    
    ./configure --prefix=/usr/local/php7 --with-config-file-path=/usr/local/php7/etc --enable-fpm --with-fpm-user=php7 --with-fpm-group=php7 --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mysql-sock=/usr/local/mysql/mysql.sock --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --enable-soap --enable-ftp --enable-mbstring --enable-exif --with-pear --with-curl --with-openssl --enable-bcmath --enable-sockets --with-gettext
    
    make -j4 && make install 
    

    4.安装完成后,拷贝配置文件和服务文件到软件的安装目录下(做完这步直接到第5步)

    cp php.ini-production /usr/local/php7/etc/php.ini
    cp sapi/fpm/php-fpm.conf /usr/local/php7/etc/php-fpm.conf
    cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
    
    

    扩展部分1:关于编译完成后拷贝文件的问题。
    如果在编译的时候没有指定运行组和用户,那么需要我们手动去改。

    cd /usr/local/php7.2/etc
    cp php-fpm.conf.default php-fpm.conf (复制sapi下面的fpm.conf到etc下【第4步的做法】。和进入到php安装目录里复制etc下面的fpm.conf都行)
    vim  php-fpm.conf---->pid = run/php-fpm.pid 去掉前面的井号
    
    cd /usr/local/php7.2/etc/php-fpm.d
    cp www.conf.default www.conf
    vim www.conf ----->需要编辑修改的地址
    user = www 加入的用户名
    group = www 加入的用户组
    listen端口默认不需要改
    

    扩展部分2:后期有需求或者需要在按如下修改配置文件

    #修改配置文件
    [root@S1 etc]# vim php-fpm.conf
    
    #模块[global]定义pid及log文件路径,去掉注释;
    [global]
    pid = /usr/local/php7/var/run/php-fpm.pid
    error_log = /usr/local/php7/var/log/php-fpm.log
    
    #扩展文件配置
    cp sapi/fpm/www.conf /usr/local/php7/etc/php-fpm.d/www.conf
    #修改[www]池相关配置参数,可用默认
    user = php7
    group = php7
    listen = 127.0.0.1:9000 # 或者指定php-fcgi.sock文件路径
    listen.mode = 0660
    pm = dynamic
    pm.max_children = 50
    pm.start_servers = 20
    pm.min_spare_servers = 5
    pm.max_spare_servers = 35
    pm.max_requests = 500
    rlimit_files = 1024
    

    5.拷贝服务文件

    chmod +x /etc/init.d/php-fpm
    chkconfig --add php-fpm
    chkconfig php-fpm on

    6.修改环境变量

    sed -i  '$a\PATH=\$PATH\:\/usr\/local\/php7\/bin' /etc/profile
    sed -i  '$a\export PATH' /etc/profile
    source /etc/profile
    

    7.查看php版本并启动服务
    /etc/init.d/php-fpm start
    php -v
    ps -ef |grep php-fpm

    8.在上面nginx的server.conf定义的路径/usr/local/nginx/html/下创建phpinfo的测试页面
    echo " <?php phpinfo(); ?> " >/usr/local/nginx/html/index.php


    image.png

    MYSQL5.7(Yum)

    wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm 
    rpm -ivh mysql57-community-release-el7-8.noarch.rpm 
    yum -y install mysql-server 
    

    yum 指定安装目录安装Mysql

    yum --installroot=/usr/local/mysql --releasever=/ -y install mysql-server
    

    安装完成后,启动服务

    systemctl start mysqld
    

    查看默认随机密码

    cat /var/log/mysqld.log|grep "password"
    

    登陆上去,修改密码并刷新权限

    alter user 'root'@'localhost' identified by '123456';
    flush privileges;
    

    开启远程授权(为了测试,开启了所有权限)

    grant all privileges on *.* to root@'%' identified by 'passwd'
    

    总结:
    编译安装的思想:下载依赖和软件包--》解压--》指定安装路径以及参数--》编译, 安装
    如php等服务要复制配置文件到安装目录(php.ini 和php-fpm.conf 和www.conf)--配置环境变量

    相关文章

      网友评论

          本文标题:Centos7编译安装LNMP环境

          本文链接:https://www.haomeiwen.com/subject/dobamktx.html