LNMP 编译安装

LNMP 编译安装



LNMP 编译安装


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 编译安装
    # 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 /data/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端口被监听


Mariadb 编译安装                  \\ 已测试 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
    # 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