绝对不能不知道的LNMP的安装与配置

    科技2024-07-01  70

    什么是NGINX

    Nginx是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。 优点: (1)更快 (2)高扩展性,跨平台 (3)高可靠性:用于反向代理,宕机的概率微乎其微 (4)低内存消耗 (5)单机支持10万以上的并发连接 (6)热部署 (7)最自由的BSD许可协议 缺点: (1)相对于apache rewrite没有Apache强大 (2)模块比Apache要少 (3)相对于Apache的bug多点 (4)没有apache稳定 (5)对PHP的支持需要配置其他后端

    实验 安装nginx

    yum -y install gcc gcc-c++ make pcre-devel expat-devel perl zlib-devel tar xzvf nginx-1.15.9.tar.gz useradd -s /sbin/nologin -M nginx cd /opt/nginx-1.15.9/ ./configure \ --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module make && make install ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ ls -l /usr/local/sbin/nginx nginx -t nginx netstat -anpt | grep nginx yum -y install lynx lynx 127.0.0.1 killall -s QUIT nginx vim /lib/systemd/system/nginx.service [Unit] Description=nginx After=network.target [Service] Type=forking PIDFile=/usr/local/nginx/logs/nginx.pid ExecStart=/usr/local/nginx/sbin/nginx ExecReload=/usr/bin/kill -s HUP $MAINPID ExecStop=/usr/bin/kill -s QUIT $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target chmod 754 /lib/systemd/system/nginx.service systemctl enable nginx.service systemctl start nginx netstat -anutp |grep nginx

    安装MySQL

    useradd -s /sbin/nologin mysql tar xf mysql-boost-5.7.20.tar.gz yum -y install \ ncurses \ ###字符终端处理工具 ncurses-devel \ ###字符终端处理工具 bison \ ###语法分析器,用于分析MySQL的语法是否正确 cmake cd /opt/mysql-5.7.20 cmake \ ##mysql需要用到cmake安装 -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ ##指定安装目录 -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ ##指定数据库连接文件,改文件不影响数据库的允许,但是会影响用户连接到数据库 -DSYSCONFDIR=/etc \ ##指定配置文件存放位置 -DSYSTEMD_PID_DIR=/usr/local/mysql \ ##指定PID号文件存放目录,该文件与sock文件相似,当数据库关闭时文件消失,而且不能同时存在两个PID文件,否则会故障,因此若数据库关闭后PID文件还存在,那么就会和开启后生成的新PID文件冲突 -DDEFAULT_CHARSET=utf8 \ ##指定字符集 -DDEFAULT_COLLATION=utf8_general_ci \ ##字符集 -DWITH_INNOBASE_STORAGE_ENGINE=1 \ ##下面四条都是存储引擎 -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \ -DMYSQL_DATADIR=/usr/local/mysql/data \ ##数据存放位置 -DWITH_BOOST=boost \ ##加载底层一个支持C++的运行库 -DWITH_SYSTEMD=1 ##设置的主从ID make -j3 && make install chown -R mysql:mysql /usr/local/mysql/ vi /etc/my.cnf [client] port = 3306 default-character-set=utf8 socket = /usr/local/mysql/mysql.sock [mysql] port = 3306 default-character-set=utf8 socket = /usr/local/mysql/mysql.sock [mysqld] user = mysql basedir = /usr/local/mysql datadir = /usr/local/mysql/data port = 3306 character_set_server=utf8 pid-file = /usr/local/mysql/mysqld.pid socket = /usr/local/mysql/mysql.sock server-id = 1 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES chown mysql:mysql /etc/my.cnf echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile echo 'export PATH' >> /etc/profile source /etc/profile cd /usr/local/mysql/ bin/mysqld \ --initialize-insecure \ ##初始化的命令 --user=mysql \ ##指明用户 --basedir=/usr/local/mysql \ ##指定了工作目录 --datadir=/usr/local/mysql/data cp usr/lib/systemd/system/mysqld.service /lib/systemd/system/ ##优化执行服务 systemctl enable mysqld systemctl start mysqld systemctl status mysqld netstat -ntap|grep 3306 mysqladmin -u root -p password "abc123" mysql -u root -p

    安装PHP

    tar xf php-7.1.10.tar.bz2 yum -y install \ libjpeg \ libjpeg-devel \ libpng \ libpng-devel \ freetype \ freetype-devel \ libxml2 \ libxml2-devel \ zlib \ zlib-devel \ curl \ curl-devel \ openssl \ openssl-devel cd php-7.1.10 ./configure \ --prefix=/usr/local/php \ --with-apxs2=/usr/local/httpd/bin/apxs \ --with-mysql-sock=/usr/local/mysql/mysql.sock \ --with-mysqli \ --with-zlib \ --with-curl \ --with-gd \ --with-jpeg-dir \ --with-png-dir \ --with-freetype-dir \ --with-openssl \ --enable-mbstring \ --enable-xml \ --enable-session \ --enable-ftp \ --enable-pdo \ --enable-tokenizer \ --enable-zip make && make install cp php.ini-development /usr/local/php/lib/php vi /usr/local/php/lib/php.ini ……省略部分 mysqli.default_socket = /usr/local/mysql/mysql.sock //后面填入连接文件路径 ……省略部分 date.timezone = Asia/Shanghai 后面写入上海时区(注意前面的”;”分号要删去) ……省略部分 cd /usr/local/php/etc/ cp php-fpm.conf.default php-fpm.conf vi php-fpm.conf [global] ; Pid file ; Note: the default prefix is /usr/local/php/var ; Default Value: none pid = run/php-fpm.pid ##去掉前面的注释符号 ……省略部分 cd php-fpm.d/ cp www.conf.default www.conf /usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini ##启动PHP进程,-c指向工作目录/usr/local/php/下lib/目录中的php.ini配置文件 /usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini -y /usr/local/php/etc/php-fpm.conf -t ##用于测试PHP配置是否正确 /usr/local/php/sbin/php-fpm -t ##用于测试PHP配置是否正确 netstat -anupt | grep 9000 ln -s /usr/local/php/bin/* /usr/local/bin/ cd /usr/local/nginx/conf/ vi nginx.conf location ~ \.php$ { root html; ##指定站点目录,即网页目录 fastcgi_pass 127.0.0.1:9000; ##指定fpm模块所在的位置,即自己ip的9000端口 fastcgi_index index.php; ###指定默认的首页类型 fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name; ##指定加载的脚本文件,即站点目录中的文件 include fastcgi_params; ##将nginx中的变量转化成PHP中能识别的变量 } systemctl stop nginx.service systemctl start nginx.service ##重启加载配置 cd /usr/local/nginx/html/ mv index.html index.php ##将html结尾的文件改为php结尾 vim index.php ##删去原本内容,换成PHP的基本结构语言 <?php phpinfo(); ?>

    访问http://20.0.0.114/index.php

    常见问题: 这时候解决办法 vi /usr/local/nginx/conf/nginx.conf

    Processed: 0.011, SQL: 8