LNMP 编译安装

LNMP 编译安装



LNMP 安装

nginx 各种安装方法

    1. 使用 yum 安装 nginx
        # vim /etc/yum.repos.d/nginx.repo
            [nginx-stable]
            name=nginx stable repo
            baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
            gpgcheck=1
            enabled=1
            gpgkey=https://nginx.org/keys/nginx_signing.key
            module_hotfixes=true
        # yum install nginx
        # systemctl restart nginx                   // 如果更换默认的
        # ss -tnl


    2. nginx 编译安装
        # yum install openssl openssl-devel gcc gcc-c++ pcre pcre-devel
        # groupadd www 
        # useradd -g www www -s /sbin/nologin
        # tar zxf nginx-1.10.0.tar.gz
        # cd nginx-1.10.0
        # ./configure --prefix=/usr/local/nginx --user=www --group=www --pid-path=/run/nginx.pid --with-http_ssl_module --with-http_stub_status_module --with-http_v2_module --with-stream --with-http_gzip_static_module --with-http_flv_module --with-http_mp4_module --with-file-aio --with-pcre
        # ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_realip_module --with-http_v2_module --with-stream --with-http_gzip_static_module --with-file-aio --with-http_stub_status_module --with-pcre=../pcre-8.38  // GS代码
        # make && make install
        # /usr/local/nginx/sbin/nginx              // 启动
        # ss -tnl                                  // 80端口被监控 注意 防火墙放行 关闭selinux
        # /usr/local/nginx/sbin/nginx -V           // 查看nginx 版本 及 编译参数
        # /usr/local/nginx/sbin/nginx -s reload    // 重新加载
        # /usr/local/nginx/sbin/nginx -s stop      // 停止
        # cp /data/soft/nginx /etc/init.d/nginx    // 复制启动脚本
        # chmod +x /etc/init.d/nginx               // 添加执行权限  注意pid路径是否与主配置文件路径相同...添加启动脚本 nginx
        # chkconfig --add /etc/init.d/nginx        // 添加到service 管理 
        # chkconfig nginx on                       // 添加开启启动
        # service nginx start                      // 启动
        # systemctl restart nginx                  // 重启
        # ss -tnl                                  // 80端口被监听


.......................................................................................................................


php 各种安装方法

    1. yum 安装 php 任意版本

        # yum install epel-release yum-utils
        # yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
        # yum list available --disablerepo="*" --enablerepo="remi-safe" php56*       // 搜索 php5.6
        # yum list available --disablerepo="*" --enablerepo="remi-safe" php73*       // 搜索 php7.3
        # yum install php73-php-fpm php73-php-cli php73-php-bcmath php73-php-gd php73-php-json php73-php-mbstring php73-php-mcrypt php73-php-mysqlnd php73-php-opcache php73-php-pdo php73-php-pecl-crypto php73-php-pecl-mcrypt php73-php-pecl-geoip php73-php-pecl-swoole php73-php-recode php73-php-snmp php73-php-soap php73-php-xmll
        # php73 -v
        # cp /usr/lib/systemd/system/php73-php-fpm.service /etc/systemd/system/php-fpm.service
        # systemctl daemon-reload              // php73-php-fpm 换成 php-fpm   如果不改的话 systemctl restart php73-php-fpm
        # vim /etc/opt/remi/php73/php.ini      // 配置文件
            memory_limit = 512M
        # vim /etc/opt/remi/php73/php-fpm.d/www.conf     // 如果你运行的是 nginx 修改用户名
            user = nginx
            group = nginx
        # ln -s /opt/remi/php73/root/usr/bin/php /usr/bin/php    // 将php73链接到系统环境变量中,就可以使用 php -v
        # php -v                              // nginx 配合 PHP-FPM 时,通常建议将 cgi.fix_pathinfo 设置为 0,以避免安全风险。
        # sed -i 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/' /etc/opt/remi/php73/php.ini   
        # systemctl enable php-fpm
        # systemctl restart php-fpm            // 127.0.0.1 被监听

        配置文件: 
            /etc/opt/remi/php73/php.ini

        php安装 扩展
            # yum search php73     // 目前只安装了部分 PHP 拓展, 如果要安装某一个扩展使用 yum install 即可

        错误日志
            # tail -f /var/opt/remi/php73/log/php-fpm/error.log      // 错误日志

        错误显示在浏览器上 方便找错误
            # vim /etc/opt/remi/php73/php.ini
                display_errors                // 运行时是否将错误和警告信息显示在浏览器中。
                   Default Value: On          // 表示在默认情况下,错误信息会显示在浏览器中。
                   Development Value: On      // 在开发环境中,通常希望立即看到错误信息,以便调试和修复问题,所以设置为 On。
                   Production Value: Off      // 在生产环境中,通常不希望将错误信息暴露给用户,因为这些信息可能包含敏感数据
                                              // 或提供给攻击者有关系统的线索,因此设置为 Off。

                display_startup_errors        // PHP 启动期间(初始化时)发生的错误是否会显示在浏览器中。
                                              // 这些错误可能在 php.ini 文件加载之前或 PHP 引擎初始化时发生。
                   Default Value: Off
                   Development Value: On
                   Production Value: Off

        测试页
            <?php phpinfo();?>

        nginx 配置
            # mkdir -p /data/www/logs/192.168.10.10/
            # vim /etc/nginx/conf.d/192.168.10.10.conf     // nginx 中 连接 php 配置文件 可直接使用
                server {
                    listen 80;
                    server_name 192.168.10.10;
                    access_log /data/www/logs/192.168.10.10/192.168.10.10_access.log;
                    error_log /data/www/logs/192.168.10.10/192.168.10.10_error.log;

                    location / {
                        root /data/www/192.168.10.10/;
                        index index.html index.htm index.php;
                        try_files $uri $uri/ /index.php?$query_string;
                    }

                    location ~ ^/(uploads|config|private)/ {
                        deny all;
                        return 403;
                    }
                    
                    location ~ \.php$ {
                        include        fastcgi_params;
                        root /data/www/192.168.10.10/;
                        fastcgi_pass   127.0.0.1:9000;
                        fastcgi_index  index.php;
                        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                    }
                }

            # vim /etc/nginx/fastcgi_params
                #fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
                fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;

        其他命令
            # systemctl enable php73-php-fpm               // 开启开机自启
            # systemctl restart php73-php-fpm              // 重启
            # systemctl start php73-php-fpm                // 启动
            # systemctl stop php73-php-fpm                 // 关闭
            # systemctl status php73-php-fpm               // 检查状态
            # find /etc/opt/remi/php73 -name php.ini       // 查找php.ini位置
            # rpm -qa | grep 'php'                         // 查找 php 和扩展的安装包:
            # rpm -ql php73-php-pecl-swoole4-4.4.15-1.el7.remi.x86_64     // 查询php安装路径


    2. php 编译安装
        # tar xzf php-7.3.4.tar
        # yum install epel*
        # yum install libjpeg-devel libpng-devel freetype-devel libicu-devel openldap-devel openssl-devel libxml2-devel bzip2-devel libmcrypt-devel libmcrypt php-mcrypt mcrypt curl curl-devel php-ldap gcc gcc-c++
        # ./configure --prefix=/usr/local/php --enable-fpm --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --enable-sockets --enable-opcache --enable-zip --with-zlib --enable-bcmath --with-libxml-dir --with-gd --with-mysqli --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-ftp --enable-mbstring --enable-exif --disable-ipv6 --with-pear --with-curl --with-openssl --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-gettext
        # make -j4                    // 快速 安装  编译7.3.11的时候会报错 mcrypt 忽略即可
        # make install                // --disable-fileinfo 1G以下内存要使用此命令编译 不然要报错

        php 5.6及以下
            # cp /data/soft/php-5.6.16/php.ini-production /etc/php.ini
            # cp /data/soft/php-5.6.16/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm 
            # cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
            # vim /usr/local/nginx/conf/nginx.conf     // 在nginx 指向 php
                location ~ \.php$ {
                    root           /var/www;
                    fastcgi_pass   127.0.0.1:9000;
                    fastcgi_index  index.php;
                    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
                    include        fastcgi_params;
                }
            # vim /usr/local/nginx/conf/fastcgi_params
                fastcgi_param SCRIPT_FILENAME    $document_root$fastcgi_script_name;   // 主要修改这项
            # /usr/local/nginx/sbin/nginx -s reload
            # vim /var/www/index.php
                <?php  
                    phpinfo();  
                ?>
            # chmod +x /etc/init.d/php-fpm
            # chkconfig --add php-fpm
            # service php-fpm start
            # chkconfig php-fpm on
            # ss -tnl                                  // 127.0.0.1:9000端口被监听

        php 7.3及以上
            # cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
            # cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
            # vim php-fpm.conf 
                pid = /run/php-fpm.pid                 // 指定pid文件位置
            # vim /usr/local/nginx/conf/nginx.conf     // 在nginx 指向 php
                location ~ \.php$ {
                    root           /var/www;
                    fastcgi_pass   127.0.0.1:9000;
                    fastcgi_index  index.php;
                    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
                    include        fastcgi_params;
                }
            # vim /usr/local/nginx/conf/fastcgi_params
                fastcgi_param SCRIPT_FILENAME    $document_root$fastcgi_script_name;   // 主要修改这项
            # /usr/local/nginx/sbin/nginx -s reload                                    // 重新加载
            # vim /var/www/index.php
                <?php  
                    phpinfo();  
                ?>
            # /usr/local/php/sbin/php-fpm                // 启动 如果提示curl.so等不能加载 删除/etc/php.d/*.ini即可
            # kill -INT `cat /run/php-fpm.pid`           // 关闭 没有大用处
            # kill -USR2 `cat /run/php-fpm.pid`          // 重启 没有大用处
            # cp /data/soft/php-fpm /etc/init.d/php-fpm  // 复制启动脚本  ... ... 添加启动脚本 php-fpm
            # chmod +x /etc/init.d/php-fpm
            # chkconfig --add php-fpm
            # service php-fpm start
            # chkconfig php-fpm on
            # ss -tnl                                    // 127.0.0.1:9000端口被监听


.......................................................................................................................


mysql 编译安装                  // 已测试 Mysql 5.6.47  Mariadb 5.5     Mariadb 10.4.10 会报错先看注释01解决
    # rpm -qa | grep mariadb
    # rpm -qa | grep mysql
    # yum remove mariadb-libs.x86_64
    # yum install openssl-devel libxml2-devel bzip2-devel libmcrypt-devel libmcrypt php-mcrypt mcrypt
    # yum install libarchive-devel boost boost-devel lsof wget gcc gcc-c++ make cmake perl kernel-headers kernel-devel pcre-devel
    # yum install libaio libaio-devel bison bison-devel zlib-devel openssl openssl-devel ncurses ncurses-devel libcurl-devel
    # mkdir -p /data/soft
    # cd /data/soft
    # tar zxf mysql-5.6.47.tar.gz
    # groupadd mysql
    # useradd -g mysql mysql -s /sbin/nologin
    # mkdir -p /data/mysqldb/{3306,innodb,mysql-bin,logs,run,relay-bin}
    # chown -R mysql:mysql /data/mysqldb
    # cd mysql-5.6.47
    # cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/data/mysqldb/run/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DWITH_MYISAM_STORAGE_ENGINE=1 -DMYSQL_TCP_PORT=3306 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/data/mysqldb
    # make
    # make install
    # chown -R root:mysql /usr/local/mysql
    # mkdir /etc/mysql
    # rz                                    // 复制进去my.cnf
    # vim /etc/profile.d/mysql.sh
        export PATH=/usr/local/mysql/bin:$PATH
    # source /etc/profile
    # /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysqldb/3306
    # cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
    # chkconfig --add mysqld
    # chkconfig mysqld on
    # systemctl restart mysqld
    # ln -s /data/mysqldb/run/mysql.sock /tmp/mysql.sock // 由于配置文件修改了mysql.sock位置 安全初始化 会提示找不路径 方法一
        # vim /usr/local/mysql/bin/mysql_secure_installation // 安全初始化 mysql.sock路径 会提示找不到路径 需要修改此文件 方法二
            write_file($config,                              // 此为方法二  但是 有的数据库版本 没有此行语句
                ...
                ...
                "connect-expired-password",                  // 此项去掉 ")" 改成","
                "socket=/data/mysqldb/run/mysql.sock");      // 大概在157行 插入此语句即可
            }
    # mysql                // 如果提示找不到mysql.sock 可以用-S指明路径 # mysql -S /data/mysqldb/run/mysql.sock
        mysql> use mysql
        mysql> select user,host,password from user;
    # /usr/local/mysql/bin/mysql_secure_installation  // 设置密码y 删除匿名用户y 禁止root远程登录n 删除测试数据库y 重载授权表y


 ❷ Mariadb 编译安装  旧安装方法
    # rpm -qa | grep mariadb
    # rpm -qa | grep mysql
    # yum remove mariadb-libs.x86_64
    # yum install libaio libaio-devel bison bison-devel zlib-devel openssl openssl-devel ncurses ncurses-devel libcurl-devel 
    # yum install libarchive-devel boost boost-devel lsof wget gcc gcc-c++ make cmake perl kernel-headers kernel-devel pcre-devel
    # groupadd mysql
    # useradd -g mysql mysql -s /sbin/nologin
    # tar zxf mariadb-5.5.63.tar.gz
    # cd mariadb-5.5.63
    # cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DENABLED_LOCAL_INFILE=1 -DENABLE_DOWNLOADS=1 -DEXTRA_CHARSETS=all -DSYSCONFDIR=/etc -DWITHOUT_TOKUDB=1 -DWITH_ARCHIVE_STPRAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_DEBUG=0 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_ZLIB=system -DWITH_LOBWRAP=0 -DMYSQL_DATADIR=/data/mysql/ -DMYSQL_USER=mysql -DMYSQL_UNIX_ADDR=/var/run/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 -DMYSQL_MAINTAINER_MODE=0
        \\ mariadb 5.5 使用上面代码进行编译
    # cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_ZLIB=system -DWITH_LIBWRAP=0 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
        \\ mariadb 10.4 使用上面代码进行编译
    # make && make install
    # cd /usr/local/mysql
    # chown -R root:mysql ./*  
    # mkdir -p /data/mysql/mysql  // 多创建一个mysql目录是 主数据库 如果后创建 属主是root 执行./scripts/mysql_...命令会报权限错误 
    # chown -R mysql:mysql /data/mysql
    # ./scripts/mysql_install_db --user mysql --datadir=/data/mysql  // 创建主数据库等文件 一定要在/usr/local/mysql/目录下执行
    # cd /usr/local/mysql/support-files
    # cp my-large.cnf /etc/my.cnf          // 10.4版本   # cp wsrep.cnf /etc/my.cnf 主配置文件最好放在/etc目录
    # vim my.cnf
        thread_concurrency = 8             // cup核心数乘以2
        datadir = /data/mysql              // 加 数据库目录
        innodb_file_per_table = on         // 加 独立表空间开启
        skip_name_resolve = on             // 加 跳过名称反解
    # ./mysql.server start                 // 如果启动不起来 注意 mysql.server 中的数据库位置是否与配置文件位置相同
    # cp mysql.server /etc/rc.d/init.d/mysqld
    # chkconfig --add mysqld
    # chkconfig --list mysqld
    # chkconfig mysqld on
    # service mysqld restart
    # vim /etc/profile.d/mysql.sh                     // 建立环境变量 指向mysql 才可以用mysql命令进入数据库
        export PATH=/usr/local/mysql/bin:$PATH
    # source /etc/profile                             // 重新加载环境变量 使之生效
    # mysql
        use mysql                                     // 使用 mysql 数据库
        select user,host,password from user;          // 查询 user表中 这些字段 user表中保存 用户名密码
    # /usr/local/mysql/bin/mysql_secure_installation  // 安全初始化 需要在mysql运行时 管理员现在密码 
      \\ 要不要设置管理员密码 要不要删除匿名用户 要不要禁止管理员远程登录 要不要删除测试数据库 要不要授权表重载一下


注:
    ❶. 如果提示内存不足 需要创建交换分区
        # dd if=/dev/zero of=/swapfile bs=8M count=256  // 创建 swap分区为2G 内存不够用时可用此分区做为内存使用 
                                                        // 在编译10.4的时候内存低于1G会报错 要创建swap分区
        # mkswap /swapfile         // 格式化交换分区 bs=bytes:同时设置读入/输出的块大小为bytes个字节 
                                   // count=blocks:仅拷贝blocks个块,块大小等于ibs/bs指定的字节数
        # swapon /swapfile         // 启用/挂载 交换分区 # swapoff /swapfile 关闭 交换分区后可用rm删除
        # swapon -s                // 查看
        # vim /etc/fstab           // 开机自动 挂载 可使用 df -h 挂载的盘符
            /swapfile    swap     swap    defaults        0 0
    ❷. 如果安装其他软件后 mysql启动不起来,查看是否安装了 mariadb-libs 此程序会在/etc/下生成my.cnf 耽误正常启动,删除即可.
       可使用 find / -name my.cnf* 或者  lsof -c mysqld|grep sock$ 命令查询,如zabbix等软件.
    ❸. 使用 Zabbix 连接数据库时 最好把mysql.sock目录设置在/var/lib/mysql/mysql.sock 可以在my.cnf中修改.要给此目录777权限
       及mysql的属组权限,否则mysql启动不了.最好使用 ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock建立软连接.
       否则安全初始化会提示找不到/tmp/mysql.sock文件,注意权限问题.
        [client]
          socket = /var/lib/mysql/mysql.sock
        [mysqld]
          socket = /var/lib/mysql/mysql.sock
    ❹. php测试用连接数据库                    // 需要端口 3306
        <?php
            $servername = "127.0.0.1";
            $username = "root";             // 在Mariadb10.4.10中 不能使用root 需要创建测试账户 LNMP的注解01
            $password = "123456";

            $conn = new mysqli($servername, $username, $password);
            if ($conn->connect_error) {
                die("连接失败: " . $conn->connect_error);
            }

            $sql = "CREATE DATABASE teoDB";
            if ($conn->query($sql) === TRUE) {
                echo "数据库创建成功";
            } else {
                echo "Error creating database: " . $conn->error;
            }

            $conn->close();
        ?>
    ❺. 安装wordpress 5.2.4以上的版本 页面排版错误需修改nginx配置文件location *.css 删除
    ❻. 安装wordpress 5.2.4以上的版本 安装不了主题提示ftp 需要修改WordPress权限为www 及 wp-content目录777权限 







Teo

You must be logged in to post a comment