zoukankan      html  css  js  c++  java
  • (LNMP) Nginx_PHP_MariaDB

    L用的是Centos7.5以上,主要是NMP三组件的安装记录。

    通常会先安装一下依赖:

    yum install -y pcre-devel zlib-devel openssl-devel

    使用yum或rpm方式安装MariaDB

    # 保留缓存软件包
    #sudo vim /etc/yum.conf cachedir=/var/cache/yum/$basearch/$releasever keepcache=1

    # 防火墙先关为敬
    systemctl stop firewalld.service
    systemctl disable firewalld.service


    #------------------最简单的 yum 安装,默认版本5.5.64 -------------------------
    yum install mariadb mariadb-server
    systemctl start mariadb
    netstat -nltp # 找3306
    # vim /etc/my.cnf --[mysqld]下增加一行: 
    innodb_file_per_table=1
    systemctl restart mariadb

    mysql

      use mysql;
      grant all PRIVILEGES on *.* to 'root'@'%' IDENTIFIED BY '123456' with grant option;
      grant all PRIVILEGES on *.* to 'root'@'localhost' IDENTIFIED BY '123456' with grant option;
      FLUSH PRIVILEGES;

    # 如果修改了 /etc/my.cnf 后,启动mysql 时出错: ERROR 2002 (HY000): Can't connect to local MySQL server through socket 
    # 则需要编辑 /etc/my.cnf.d/client.cnf 文件,在[client]下添加:
    port=3306 socket=/data/mariadb/mysql.sock
    # 指向正确的 sock 和端口

    # ------------离线下载安装 rpm 的 5.5.64 版本--------------------------------- # https:
    //mirrors.tuna.tsinghua.edu.cn/mariadb//mariadb-5.5.65/yum/centos74-amd64/rpms/ # https://mariadb.com/kb/en/library/installing-mariadb-with-the-rpm-tool/
    # 可能要下载以下rpm包 MariaDB-client-5.5.65-1.el7.centos.x86_64.rpm MariaDB-client-debuginfo-5.5.65-1.el7.centos.x86_64.rpm MariaDB-server-debuginfo-5.5.65-1.el7.centos.x86_64.rpm MariaDB-devel-5.5.65-1.el7.centos.x86_64.rpm MariaDB-server-5.5.65-1.el7.centos.x86_64.rpm MariaDB-shared-5.5.65-1.el7.centos.x86_64.rpm MariaDB-test-5.5.65-1.el7.centos.x86_64.rpm MariaDB-common-5.5.65-1.el7.centos.x86_64.rpm MariaDB-compat-5.5.65-1.el7.centos.x86_64.rpm libzstd-1.3.4-1.el7.x86_64.rpm galera-25.3.26-1.rhel7.el7.centos.x86_64.rpm jemalloc-3.6.0-1.el7.x86_64.rpm jemalloc-devel-3.6.0-1.el7.x86_64.rpm rpm -Uvh --force --nodeps *.rpm #./bin/mysqladmin -u root password '123456' #./bin/mysqladmin -u root -h evxapp01 password '123456' #Alternatively you can run: #./bin/mysql_secure_installation ./bin/mysqld --defaults-file=/etc/my.cnf --user=mysql &
    # 后续设置同上.


    # ------------- 使用官方推荐的 yum 方式安装 10.4.8 -----------------------------
    # https://mariadb.com/kb/en/library/yum/

    # 先得到仓库

    curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
    # 成功后, 编辑 /etc/yum.repos.d/mariadb.repo 更改一下 url 国内源. 比如清华,其它不改。如果网速够快,可以不改。
    [mariadb-main]
    name = MariaDB Server
    baseurl = https://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-10.4.8/yum/rhel/$releasever/$basearch
    gpgkey = file:///etc/pki/rpm-gpg/MariaDB-Server-GPG-KEY
    gpgcheck = 1
    enabled = 1
    
    [mariadb-maxscale]
    # To use the latest stable release of MaxScale, use "latest" as the version
    # To use the latest beta (or stable if no current beta) release of MaxScale, use "beta" as the version
    name = MariaDB MaxScale
    baseurl = https://mirrors.tuna.tsinghua.edu.cn/MaxScale/2.4/centos/$releasever/$basearch
    gpgkey = file:///etc/pki/rpm-gpg/MariaDB-MaxScale-GPG-KEY
    gpgcheck = 1
    enabled = 1
    
    [mariadb-tools]
    name = MariaDB Tools
    baseurl = https://mirrors.tuna.tsinghua.edu.cn/Tools/rhel/$releasever/$basearch
    gpgkey = file:///etc/pki/rpm-gpg/MariaDB-Enterprise-GPG-KEY
    gpgcheck = 1
    enabled = 1

     # 然后就可以直接 yum 安装 10.4.8 了。因为上面的文件里写的是 10.4.8 版本

    yum install MariaDB-server galera-4 MariaDB-client MariaDB-shared MariaDB-backup MariaDB-common
    # 配置文件同上.
    # 启动 状态 停止 重启 开机启动
    systemctl start mariadb
    systemctl status mariadb
    systemctl stop mariadb
    systemctl restart mariadb
    systemctl enable mariadb
     
    二进制程序包 tar 安装 MariaDB 供参考:
    (1) 准备用户
        groupadd -r -g 306 mysql
        useradd -r -g 306 -u 306 -m -d /data/mysqldb mysql
    
    (2) 准备数据目录
        以/data/mysqldb为例,建议使用逻辑卷
        chown mysql:mysql /data/mysqldb
        chmod 700 /data/mysqldb
    
    (3) 准备二进制程序
        tar xf mariadb-10.2.15-linux-x86_64.tar.gz -C /usr/local  #/usr/local是程序包指定的目录,必须解压在这里
        cd /usr/local;ln -sv mariadb-10.2.15 mysql
        chown -R mysql:mysql /usr/local/mysql/
    
    (4) 准备配置文件
        mkdir /etc/mysql/
        cp support-files/my-huge.cnf /etc/mysql/my.cnf
        #/usr/local/mysql/support-files下有很多my-*.cnf文件,分别对应不同的内存大小,可打开看看,选择对应自己机器的拷贝就行
        vim /etc/mysql/my.cnf
        [mysqld]中添加三个选项:
    
            datadir = /data/mysqldb
            innodb_file_per_table = on  # 可不加
            skip_name_resolve = on  # 禁止主机名解析,建议使用,不加也可
    
    (5) 创建数据库文件
        cd /usr/local/mysql/
        ./scripts/mysql_install_db --datadir=/data/mysqldb --user=mysql
    
    (6) 准备日志文件
        touch /var/log/mysqld.log
        chown mysql:mysql /var/log/mysqld.log
    
    (7) 准备服务脚本,并启动服务
        cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld
        chkconfig --add mysqld
        service mysqld start
    
    (8) 安全初始化
        /usr/local/mysql/bin/mysql_secure_installation
    
    (9) 添加环境变量
        echo PATH=/usr/local/mysql/bin:$PATH > /etc/profile.d/mysql.sh
        . /etc/profile.d/mysql.sh
        
        
    mysql -uroot -p
    

    -- use mysql;
    -- grant all PRIVILEGES on *.* to 'root'@'%' IDENTIFIED BY '123456' with grant option;
    -- grant all PRIVILEGES on *.* to 'root'@'localhost' IDENTIFIED BY '123456' with grant option;
    -- FLUSH PRIVILEGES;

    解决ibdata1体积太大问题

    # 备份全部库
    mysqldump -uroot -p123456 --all-databases --add-drop-table > /opt/all.sql
    
    # vim /etc/my.cnf --[mysqld]下增加一行: 
    innodb_file_per_table=1 
    
    # 重启服务
    systemctl restart mariadb
    
    mysql -uroot -p123456 
    show variables like '%per_table%';  -- 得到 ON 即开启成功
    
    # 删除 ibdata1
    cd /var/lib/mysql
    rm -rf ib_logfile*
    rm -rf ibdata1
    
    # 重启服务
    systemctl restart mariadb
    
    # 导入数据
    mysql -uroot -p123456 < /opt/all.sql

    安装与配置nginx1.17.4

    systemctl status firewalld.service
    systemctl stop firewalld.service
    systemctl disable firewalld.service
    systemctl status firewalld.service
    
    tar zxf nginx-1.17.4.tar.gz 
    cd nginx-1.17.4/
    ./configure --prefix=/opt/nginx --user=nginx --group=nginx --with-openssl=/usr/bin/openssl
    make & make install
    
    vim /etc/profile
    
    PATH=/opt/nginx/sbin:$PATH
    export PATH
    
    . /etc/profile
    
    useradd nginx
    passwd nginx 
    
    cd /opt/
    chown -R nginx:nginx nginx/
    
    ln -s /opt/nginx/sbin/nginx /usr/bin/nginx
    cd /

    # 修改conf/nginx.conf 文件,并启用PHP
    user  nginx;
    worker_processes  auto;
    
    error_log  logs/error.log  info;
    
    pid        logs/nginx.pid;
    
    
    events {
        use epoll;
        worker_connections  16384;
    }
    
    
    http {
        include       mime.types;
        default_type  application/octet-stream;
    
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for" "$request_time"';
    
        sendfile        on;
        tcp_nopush     on;
    
        keepalive_timeout  65;
        types_hash_max_size 2048;
    
        server {
            listen       80;
            server_name  _;
    
            location / {
                root   html;
                index  index.html index.htm index.php;
            }
    
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
    
            location ~ .php$ {
                root           html;
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include        fastcgi_params;
            }
        }
    }
    su nginx
    sudo nginx -t

    # 启用PHP解析后,如果浏览器出现 File not found . 需要检查nginx.conf配置文件
    # 可能需要将 $document_root 改成绝对路径。例如下面的配置就改成了/webapp/www
    location ~* .php$ {
                fastcgi_index   index.php;
                fastcgi_pass    127.0.0.1:9000;
                include         fastcgi_params;
                fastcgi_param   SCRIPT_FILENAME    /webapp/www$fastcgi_script_name;
                fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
            }    

    安装与配置PHP7.2.22

    cd /opt
    tar zxf php-7.2.22.tar.gz
    cd php-7.2.22

    安装依赖

    yum install -y autoconf gcc gcc-c++ libxml2 libxml2-devel openssl openssl-devel 
        bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel
        freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel
        libxslt libxslt-devel

    因为要安装 MediaWiki, 所以再安装依赖 APCu, icu, intl

    # 下载 https://pecl.php.net/package/APCu
    # 下载 https://github.com/unicode-org/icu 或者git 
    # icu需要在php编译之前安装,成功后就可以在编译PHP时直接使用。
    tar xf icu4c-52_1-src.tgz
    cd icu/source
    mkdir /usr/local/icu
    ./configure --prefix=/usr/local/icu
    make && make install
    # PHP编译时 --enable-intl --with-icu-dir=/usr/local/icu 
    # 直接带上intl扩展。


    # apcu 需要在php安装之后安装。安装完后需要重启 php-fpm
    tar zxf apcu-5.1.17.tgz 
    cd apcu
    -5.1.17
    phpize #
    /usr/local/php/bin/phpize
    .
    /configure --with-php-config=/usr/local/php/bin/php-config
    make && make install
    # /etc/php.ini中添加引用:
    extension=apcu.so
    apc.enabled=on
    apc.shm_size=128M
    apc.enable_cli=on
    /etc/init.d/php-fpm restart

    # 如果时编译时没有intl,事后安装,则如下执行:
    cd /opt/php-7.2.22/ext/intl
    make clean
    phpize
    ./configure --with-php-config=/usr/local/php/bin/php-config --enable-intl --with-icu-dir=/usr/local/icu
    make && make install

       

    预编译: 注意红色的2项,需要在系统中添加对应的组和用户,用于启动php-fpm。 参数 with-config-file-path=/etc 则指定php.ini的位置 

    cd php-7.2.22 

    ./configure --prefix=/usr/local/php --with-config-file-path=/etc --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --enable-inline-optimization --disable-debug --disable-rpath --enable-shared --enable-soap --with-libxml-dir --with-xmlrpc --with-openssl --with-mhash --with-pcre-regex --with-sqlite3 --with-zlib --enable-bcmath --with-iconv --with-bz2 --enable-calendar --with-curl
    --with-cdb --enable-dom
    --enable-exif --enable-fileinfo --enable-filter --with-pcre-dir --enable-ftp --with-gd --with-openssl-dir --with-jpeg-dir --with-png-dir --with-zlib-dir --with-freetype-dir --enable-gd-jis-conv --with-gettext --with-gmp --with-mhash --enable-json --enable-mbstring --enable-mbregex --enable-mbregex-backtrack --with-libmbfl --with-onig --enable-pdo --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-zlib-dir --with-pdo-sqlite --with-readline --enable-session --enable-shmop --enable-simplexml --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-wddx --with-libxml-dir --with-xsl --enable-zip --enable-mysqlnd-compression-support --with-pear --enable-opcache
    --enable-intl
    --with-icu-dir=/usr/local/icu

    编译如果出错:

    configure: error: off_t undefined; check your library configuration
    解决:加入icu/lib路径 vim /etc/ld.so.conf 
    /usr/local/lib64 
    /usr/local/lib 
    /usr/lib 
    /usr/lib64 
    /usr/local/icu/lib
    
    # 保存退出,执行:
    ldconfig -v

     安装: 

    make && make install

      

    添加用户和组,如果事先没有此用户的话:

    groupadd nginx
    useradd -g nginx

    配置并启动 php-fpm

    vi /etc/profile
    
    PATH=$PATH:/usr/local/php/bin
    export PATH
    
    source /etc/profile
    
    cd /opt/php7.2.22   
    cp php.ini-production /etc/php.ini
    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
    cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
    chmod +x /etc/init.d/php-fpm
    
    /etc/init.d/php-fpm start
    /etc/init.d/php-fpm restart
    /etc/init.d/php-fpm stop

     如果需要 opcache, 操作如下:

    yum install -y php-pecl-zendopcache

    # 修改配置文件 php.ini zend_extension
    =opcache.so [opcache] opcache.enable=1 # 然后重启php-fpm 和 nginx
    /etc/init.d/php-fpm restart
    nginx -s reload

    # 最后用 phpinfo() 检查

    选装 memcached 

    yum install memcached
    vi /etc/sysconfig/memcached  # 调大一些内存用量
    systemctl start memcached && systemctl enable memcached
    
    # 安装 php 扩展
    yum install libmemcached libmemcached-devel # 依赖 wget https://pecl.php.net/get/memcached-3.1.3.tgz tar zxf memcached-3.1.3.tgz cd memcached-3.1.3 /usr/local/php/bin/phpize # php7.2的路径 ./configure --with-php-config=/usr/local/php/bin/php-config make && make install # 留意路径信息 ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/ # 是否存在 memcached.so find / -name php.ini # 找到 php.ini 在扩展中增加一行: extension=memcached.so # 重启所有的php-fpm进程后,浏览器中查看 phpinfo

    一个个安装嫌烦的话, 开发环境也可以使用xampp包

    ./xampp-linux-x64-7.2.22-0-installer.run
    
    cd /opt/lampp
    
    ./lampp security
    # 依次设置安全选项.但是最后要手动启用mysql的远程连接 #在
    /opt/lampp/etc/my.cnf 中注释掉: #skip-networking
  • 相关阅读:
    geoserver发布地图服务WMTS
    geoserver发布地图服务WMS
    geoserver安装部署步骤
    arcgis api 3.x for js 入门开发系列十四最近设施点路径分析(附源码下载)
    arcgis api 3.x for js 入门开发系列十三地图最短路径分析(附源码下载)
    cesium 之自定义气泡窗口 infoWindow 后续优化篇(附源码下载)
    arcgis api 3.x for js 入门开发系列十二地图打印GP服务(附源码下载)
    arcgis api 3.x for js 入门开发系列十一地图统计图(附源码下载)
    arcgis api 3.x for js 入门开发系列十叠加 SHP 图层(附源码下载)
    arcgis api 3.x for js入门开发系列九热力图效果(附源码下载)
  • 原文地址:https://www.cnblogs.com/frx9527/p/npm.html
Copyright © 2011-2022 走看看