返回首页

网站LNMP环境安装配置笔记(开发机环境配置)

注:系统为Fedora 30 (Workstation Edition)

一、准备工作:

1、升级系统

dnf update -y

2、清理原有安装

dnf remove php* mariadb* nginx* http* mysql* -y

二、测试服务器LNMP编译安装

1、安装编译工具

dnf install gcc cmake gcc-c++ -y

2、安装Nginx

dnf install pcre-devel openssl-devel -y
  • 建立组和用户并设置不能ssh登录
  • groupadd -r www
    useradd -r -M -s /bin/false -g www www
    sed -i "s/\/home\/www://" /etc/passwd
  • 下载
  • mkdir -p /data/source
    cd /data/source
    wget http://nginx.org/download/nginx-1.17.3.tar.gz
  • 解压
  • tar xvf nginx-1.17.3.tar.gz
  • 编译
  • cd nginx-1.17.3
    ./configure --prefix=/data/lnmp/nginx --user=www --group=www --pid-path=/run/nginx.pid --lock-path=/run/nginx.lock --http-client-body-temp-path=/tmp/client --http-proxy-temp-path=/tmp/proxy --http-fastcgi-temp-path=/tmp/fastcgi --http-uwsgi-temp-path=/tmp/uwsgi --http-scgi-temp-path=/tmp/scgi --http-log-path=/data/lnmp/log/nginx/access.log --error-log-path=/data/lnmp/log/nginx/error.log  --with-http_ssl_module --with-http_v2_module --with-stream_realip_module --with-http_stub_status_module
    make -j5
    make install
  • 配置启动
  • cat > /usr/lib/systemd/system/nginx.service << "EOF"
    [Unit]
    Description=The nginx HTTP and reverse proxy server
    After=network.target remote-fs.target nss-lookup.target
    
    [Service]
    Type=forking
    PIDFile=/run/nginx.pid
    ExecStartPre=/data/lnmp/nginx/sbin/nginx -t -c /data/lnmp/nginx/conf/nginx.conf
    ExecStart=/data/lnmp/nginx/sbin/nginx -c /data/lnmp/nginx/conf/nginx.conf
    ExecReload=/bin/kill -HUP $MAINPID
    ExecStop=/bin/kill -QUIT $MAINPID
    
    [Install]
    WantedBy=multi-user.target
    EOF
    
    sed -i "s/\/\$nginx_version//" /data/lnmp/nginx/conf/fastcgi*
    sed -i "s/}/    application\/vnd.android.package-archive apk;\n}/g" /data/lnmp/nginx/conf/mime.types
    mv /data/lnmp/nginx/conf/nginx.conf /data/lnmp/nginx/conf/nginx.conf.bak
    mkdir /data/lnmp/nginx/conf/conf.d
    
    cat > /data/lnmp/nginx/conf/nginx.conf << "EOF"
    user  www;
    worker_processes  4;
    events {
        worker_connections  1024;
    }
    http {
        include       mime.types;
        default_type  application/octet-stream;
        charset  utf-8;
        sendfile        on;
        client_max_body_size 40m;
        server_tokens off;
        keepalive_timeout  65;
        gzip  on;
        include  conf.d/*.conf;
    }
    EOF
    cat > /data/lnmp/nginx/conf/conf.d/www.conf << "EOF"
    server {
        listen       80;
        server_name  localhost;
        root   /data/www;
        index  index.html index.htm index.php;
    
        error_page  404              /404.html;
        error_page   500 502 503 504  /50x.html;
    
        location / {
            try_files $uri $uri/ /index.php$is_args$args;
        }
    
        location ~ \.php$ {
            try_files $uri = 404;
            fastcgi_pass   127.0.0.1:9000;
            include        fastcgi.conf;
        }
    }
    EOF
    mkdir /data/www
    ln -s /data/lnmp/nginx/sbin/nginx /usr/local/bin/
    
  • 打开防火墙
  • firewall-cmd --permanent --zone=public --add-service=http
    firewall-cmd --reload

    3、安装PHP

  • 安装依赖
  • dnf install systemd-devel gd-devel libxml2-devel libcurl-devel -y
  • 下载
  • cd /data/source
    wget http://cn2.php.net/distributions/php-7.3.8.tar.xz
  • 解压
  • tar xvf php-7.3.8.tar.xz
  • 编译
  • cd php-7.3.8
    ./configure --prefix=/data/lnmp/php --enable-fpm --with-fpm-systemd --with-pear --with-fpm-user=www --with-fpm-group=www --with-config-file-path=/data/lnmp/php --with-config-file-scan-dir=/data/lnmp/php/lib/php/extensions --enable-opcache --disable-ipv6 --enable-mbstring --with-gettext --with-curl --enable-mysqlnd --with-mysqli --with-pdo-mysql --disable-phpdbg --with-gd --with-freetype-dir --with-png-dir --with-xpm-dir --with-jpeg-dir --with-zlib --enable-calendar --enable-exif --enable-ftp --enable-zip --without-libzip --enable-soap --enable-bcmath --enable-sockets --with-openssl --enable-pcntl
    make -j5
    make install
    #make时出现:PEAR package PHP_Archive not installed: generated phar will require PHP's phar extension be enabled.
    #make install之后,运行以下命令,再次make && make install就可以了
    /data/lnpp/php/bin/pear channel-update pear.php.net
    ln -s /data/lnmp/php/bin/* /usr/local/bin/
    ln -s /data/lnmp/php/sbin/* /usr/local/bin/
    cp sapi/fpm/php-fpm.service /usr/lib/systemd/system/
    sed -i "s/\${prefix}/\/data\/lnmp\/php/" /usr/lib/systemd/system/php-fpm.service
    sed -i "s/\${exec_prefix}/\/data\/lnmp\/php/" /usr/lib/systemd/system/php-fpm.service
    sed -i "s/\/data\/php\/var\/run/\/run/" /usr/lib/systemd/system/php-fpm.service
    cp sapi/fpm/www.conf /data/lnmp/php/etc/php-fpm.d/
    cp sapi/fpm/php-fpm.conf /data/lnmp/php/etc/
    echo "zend_extension=opcache.so" > /data/lnmp/php/lib/php/extensions/opcache.ini
    cp php.ini-production /data/lnmp/php/php.ini
    sed -i "s/;opcache.enable=0/opcache.enable=1/" /data/lnmp/php/php.ini
    sed -i "s/;opcache.enable=1/opcache.enable=1/" /data/lnmp/php/php.ini
    sed -i "s/;opcache.enable_cli=0/opcache.enable_cli=1/" /data/lnmp/php/php.ini
    sed -i "s/;opcache.file_cache=/opcache.file_cache=\/tmp/" /data/lnmp/php/php.ini
    sed -i "s/max_execution_time = 30/max_execution_time = 60/" /data/lnmp/php/php.ini
    sed -i "s/upload_max_filesize = 2M/upload_max_filesize = 20M/" /data/lnmp/php/php.ini
    sed -i "s/post_max_size = 8M/post_max_size = 20M/" /data/lnmp/php/php.ini
    sed -i "s/display_errors = Off/display_errors = On/" /data/lnmp/php/php.ini
    sed -i "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/" /data/lnmp/php/php.ini
    sed -i "s/;date.timezone =/date.timezone = Asia\/Shanghai/" /data/lnmp/php/php.ini
    sed -i "s/expose_php = On/expose_php = Off/" /data/lnmp/php/php.ini
    sed -i "s/;error_log = log\/php-fpm.log/error_log = \/data\/lnmp\/log\/php\/php-fpm.log/" /data/lnmp/php/etc/php-fpm.conf
    sed -i "s/;slowlog = log\/\$pool.log.slow/slowlog = \/data\/lnmp\/log\/php\/slow.log/g" /data/lnmp/php/etc/php-fpm.conf
    sed -i "s/;request_slowlog_timeout = 0/request_slowlog_timeout = 300/g" /data/lnmp/php/etc/php-fpm.conf
    mkdir /data/lnmp/log/php
    

    4、安装MariaDB数据库

  • 创建mysql用户
  • groupadd -r mysql
    useradd -r -M -s /bin/false -g mysql mysql
    sed -i "s/\/home\/mysql://" /etc/passwd
  • 安装依赖
  • dnf install ncurses-devel bison -y
  • 下载
  • wget http://mirrors.ustc.edu.cn/mariadb//mariadb-10.4.7/source/mariadb-10.4.7.tar.gz
  • 解压
  • tar xvf mariadb-10.4.7.tar.gz
  • 编译
  • cd mariadb-10.4.7
    cmake . \
    -DCMAKE_INSTALL_PREFIX=/data/lnmp/mariadb \
    -DMYSQL_DATADIR=/data/lnmp/mariadb/data \
    -DDEFAULT_CHARSET=utf8 \
    -DDEFAULT_COLLATION=utf8_general_ci \
    -DWITH_SYSTEMD=yes \
    -DINSTALL_SYSTEMD_UNITDIR=/usr/lib/systemd/system \
    -DWITH_SSL=system \
    -DCONNECT_WITH_MYSQL=1 \
    -DWITH_DEBUG=no \
    -DPLUGIN_TOKUDB=NO \
    -DWITH_MARIABACKUP=OFF \
    -DWITH_UNIT_TESTS=OFF \
    -DWITH_UNITTEST=OFF \
    -DINSTALL_MYSQLTESTDIR=''
    
    make -j5
    make install
    ln -s /data/lnmp/mariadb/bin/* /usr/local/bin/
    chown mysql:mysql /data/lnmp/mariadb/data -R
    cp support-files/my-huge.cnf /data/lnmp/mariadb/my.cnf
    sed -i "s/\$MYSQLD_OPTS \$_WSREP_NEW_CLUSTER \$_WSREP_START_POSITION/--defaults-file=\/data\/lnmp\/mariadb\/my.cnf/" /usr/lib/systemd/system/mariadb.service
    cd /data/lnmp/mariadb
    scripts/mysql_install_db --user=mysql --defaults-file=/data/lnmp/mariadb/my.cnf --datadir=/data/lnmp/mariadb/data/
    systemctl start mariadb
    /data/lnmp/mariadb/bin/mysqladmin -u root password 'password'
    #更新或重新编译后:
    sed -i "s/\$MYSQLD_OPTS \$_WSREP_NEW_CLUSTER \$_WSREP_START_POSITION/--defaults-file=\/data\/lnmp\/mariadb\/my.cnf/" /usr/lib/systemd/system/mariadb.service
    rm -rf /data/lnmp/mariadb/data/test
    systemctl daemon-reload
    systemctl restart mariadb
    

    返回首页

    版权所有 © 2016-2019 清风的个人笔记