美文网首页LNMP集合
LNMP 安装手册

LNMP 安装手册

作者: _给我一支烟_ | 来源:发表于2019-06-18 18:59 被阅读1次

    centos6.8下 LNMP (nginx1.10.2 + php7.1.27 + mysql5.6.42) - 安装手册

    一、nginx安装

    1.yum -y install nginx

    安装完成之后会显示 Complete!,可以通过如下命令检查 Nginx 是否安装成功:
    nginx -v
    显示
    nginx version: nginx/1.10.2

    2.配置服务

    在 /etc/nginx/conf.d 目录,可以创建多个不同服务的配置

    配置一个web服务:新建一个 mw.conf 文件
    下面是我的《唐诗宋词元曲鉴赏》微信小程序的服务器nginx配置实例

    server {
        listen      443;
        server_name mw.hupeng.cn;
        index  index.php index.html index.htm;  
        root /usr/share/nginx/mwServer/web;
        ssl on;
     
        ssl_certificate           /data/release/nginx/2010350_mw.hupeng.cn.pem;
        ssl_certificate_key       /data/release/nginx/2010350_mw.hupeng.cn.key;
        ssl_session_timeout       5m;
        ssl_protocols             TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers               ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA;
        ssl_session_cache         shared:SSL:50m;
        ssl_prefer_server_ciphers on;
     
        location ~ \.php$ {
            root   /usr/share/nginx/mwServer/web;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
    }
    

    配置既提供http请求的web服务又支持tcp请求的服务:新建一个 pk24.conf 文件
    此时客户端发起tcp请求不需要知道tcp服务器的监听端口了,因为在该配置中已经配置好了,外部只需要从443端口到进来,nginx会根据配置转到相应的监听端口上。
    下面是我的《约战24点》微信小游戏的服务器nginx配置实例

    upstream websocket {
        server localhost:9901; #本地websocket反向代理地址
    }
    
    upstream webhttp {
        server localhost:9902; #本地web http反向代理地址
    }
    
    server {
        listen      443;
        server_name www.hupeng.cn;
     
        ssl on;
        ssl_certificate           /data/release/nginx/cert-1541664018962_www.hupeng.cn.crt;
        ssl_certificate_key       /data/release/nginx/cert-1541664018962_www.hupeng.cn.key;
        ssl_session_timeout       5m;
        ssl_protocols             TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers               ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA;
        ssl_session_cache         shared:SSL:50m;
        ssl_prefer_server_ciphers on;
     
        #小程序http访问:https://www.hupeng.cn/hs
        location /hs {
            proxy_pass http://webhttp;
            proxy_http_version 1.1;
            proxy_set_header X-real-ip $remote_addr;
            proxy_set_header Host $http_host;
        }
    
        #小程序websocket访问:wss://www.hupeng.cn/ws
        location /ws {
            proxy_pass http://websocket;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;
        }
    }
    
    3.nginx常用命令

    nginx -t #测试配置是否有语法错误
    nginx -s reload #重新加载配置
    nginx -s reopen #重启
    nginx -s stop #停止
    nginx -s quit #退出

    可以使用 netstat -ntpl 查看下 nginx的https监听是否启动(443端口)

    二、mysql安装

    1.查看已安装的软件

    rpm -qa|grep mysql

    2.停止MySQL服务

    service mysqld stop

    3 卸载旧版MySQL

    yum remove mysql mysql-*
    看看是否有残余的mysql,输入命令:
    yum list installed | grep mysql

    4.下载安装最新的rpm文件

    rpm -Uvh http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm

    5. 安装MySQL,输入命令(过程中问询是否yes,一路y下去):

    yum install mysql-community-server

    6.解决root 密码问题

    mysqladmin -u root password 'root'

    7.MySQL的相关操作

    修改密码
    格式:mysqladmin -u用户名 -p旧密码 password 新密码
    例子:mysqladmin -uroot -proot password 123456
    重启mysql服务
    service mysqld restart
    查看MySQL状态
    service mysqld status
    netstat -na | grep 3306,如果看到有监听说明服务启动了
    登录 mysql -u root -p

    显示有哪些数据库 show databases;
    创建名称为rewin的数据库 CREATE DATABASE rewin;
    删除名称为rewin的数据库 DROP DATABASE rewin;
    选择rewin数据库 USE rewin;

    8.使用时遇到的问题及解决方法

    远程用navicat 工具连接拒绝
    mysql -u root -p
    mysql>use mysql;
    mysql>update user set host ='%' where user ='root';
    mysql>flush privileges;
    可能会报错 ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY' 退出MySQL重启就好了

    可能会导致Linux上面无法登录了
    解决:
    1.修改/etc/my.cnf 文件 加入 skip-grant-tables
    2.重启 MySQL
    service mysqld restart
    3.进入:mysql -u root -p就可以不用密码登录了
    mysql> use mysql;
    4.给root用户设置新密码
    mysql> update user set password=password("新密码root") where user="root";
    5.刷新数据库
    mysql> flush privileges;
    6.退出mysql
    mysql> quit;
    7.改好之后,再修改一下/etc/my.cnf这个文件,把我们刚才加入的 "skip-grant-tables"这行删除,保存退出再重启mysql就可以了。

    远程登录的时候出错,提示:Host 'xxx' is not allowed to connect to this MySQL server
    是mysql未开启mysql远程访问权限导致
    1.登录到mysql
    mysql -uroot -ppwd
    2.查看user表
    mysql> use mysql
    Database changed
    mysql> select host,user,password from user;

    +------+------+-------------------------------------------+
    | host | user | password |
    +------+------+-------------------------------------------+
    | localhost    | root | *826960FA9CC8A87953B3156951F3634A80BF9853 |
    +------+------+-------------------------------------------+
    1 row in set (0.00 sec)
    

    表中host、user字段标识了可以访问数据库的主机和用户。例如上面的数据就表示只能本地主机通过root用户访问。原来如此,难怪远程连接死活连不上。
    为了让数据库支持远程主机访问
    修改host字段的值,将localhost修改成需要远程连接数据库的ip地址。或者直接修改成%。
    修改成%表示,所有主机都可以通过root用户访问数据库。为了方便,直接修改成%。
    命令:mysql> update user set host = '%' where user = 'root' and password != '';
    再次查看user表

    +------+------+-------------------------------------------+
    | host | user | password |
    +------+------+-------------------------------------------+
    | % | root | *826960FA9CC8A87953B3156951F3634A80BF9853 |
    +------+------+-------------------------------------------+
    1 row in set (0.00 sec)
    

    修改成功,输入命令mysql> flush privileges;
    回车使刚才的修改生效,再次远程连接数据库成功。

    三、php安装

    使用源码安装php

    1.安装依赖包
    yum install 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
    
    2.php官网下载 https://www.php.net/releases/

    php-7.1.27.tar.gz

    3.解压

    tar -zxvf php-7.1.27.tar.gz

    4.编译
    ./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-mcrypt \
    --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-native-ttf \
    --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
    

    编译安装:make && make install

    5.配置环境变量

    vi /etc/profile
    在末尾追加
    PATH=$PATH:/usr/local/php/bin
    export PATH
    执行命令使得改动立即生效
    source /etc/profile

    6.查看是否安装成功

    php -v
    显示版本
    PHP 7.1.27 (cli) (built: Apr 4 2019 16:55:03) ( NTS )
    Copyright (c) 1997-2018 The PHP Group
    Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
    查看安装目录
    whereis php
    显示 php: /usr/local/php

    7.php和php-fpm相关配置文件

    cp php.ini-production /etc/php.ini #php的配置文件拷贝到/etc下面
    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
    配置php
    vim /etc/php.ini
    expose_php = Off #禁止显示php版本的信息
    配置php-fpm
    vim /usr/local/php/etc/php-fpm.d/www.conf
    user = nginx
    group = nginx

    8.启动php-fpm

    cp /usr/local/php/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
    chmod +x /etc/init.d/php-fpm
    /etc/init.d/php-fpm start

    四、测试

    1. 新建一个项目目录 /usr/share/nginx/mwServer/web
    2. cd /usr/share/nginx/mwServer/web
      创建一个 index.php 加入
    <?php
       phpinfo();
    ?>
    

    3.在浏览器里面输入 https://mw.hupeng.cn/
    如果显示php的信息了,表示php和nginx安装以及配置成功(nginx使用的上文中的mw.conf配置)

    如果显示 502 Bad Gateway 错误
    解决:用 netstat -ntpl 命令查看发现 php-fpm 没有启动
    service php-fpm start
    出错后看nginx错误日志 /var/log/nignx/error.log

    五、备注

    nginx 默认配置文件 :/etc/nginx/conf.d/default.conf
    nginx 默认站点目录是:/usr/share/nginx/html/
    权限设置:chown nginx.nginx /usr/share/nginx/html/ -R

    MySQL数据库目录是:/var/lib/mysql
    权限设置:chown mysql.mysql -R /var/lib/mysql

    php 默认按照路径:/usr/local/php
    php 配置文件路径:/etc/php.ini (修改后的)
    php-fpm 配置文件:/usr/local/php/etc/php-fpm.d/www.conf

    一个干净的Linux环境上安装 LNMP 经常会碰到一些坑,这里总结和整理下自己在阿里云服务器上的安装全部过程。
    如果不想这么麻烦的安装环境,推荐大家可以试试 宝塔
    宝塔linux面板命令大全 http://www.bt.cn/btcode.html

    相关文章

      网友评论

        本文标题:LNMP 安装手册

        本文链接:https://www.haomeiwen.com/subject/kcifqctx.html