美文网首页
Vagrant安装Lnmp一键安装包环境配置

Vagrant安装Lnmp一键安装包环境配置

作者: Super三脚猫 | 来源:发表于2018-05-12 14:59 被阅读0次

    Lnmp.org访问Laravel5.5 + 配置

    timg.jpg

    1.首先说一下,Lnmp包里需要自己的是CentOS7.1.1503,断点需要自己安装Xdebug,如果访问Laravel框架或者ThinkPHP主流框架,需要自己再配置一些东西,因为包内遵循的是.user.ini访问规范,直接访问/public/index.php是访问不到的!
    2.下载安装包网址 lnmp.org-download 官方有wget安装命令
    3.github地址 github - licess/lnmp 文档写的很直观

    【安装LNMP1.4稳定版】
    wget -c http://soft.vpser.net/lnmp/lnmp1.4.tar.gz && tar zxf lnmp1.4.tar.gz && cd lnmp1.4 && ./install.sh lnmp
    【安装LNMP1.5稳定版】
    wget http://soft.vpser.net/lnmp/lnmp1.5beta.tar.gz -cO lnmp1.5beta.tar.gz && tar zxf lnmp1.5beta.tar.gz && cd lnmp1.5 && ./install.sh lnmp
    【PHP7.2,Mysql5.7】
    wget http://soft.vpser.net/lnmp/lnmp1.5.tar.gz -cO lnmp1.5.tar.gz && tar zxf lnmp1.5.tar.gz && cd lnmp1.5 && LNMP_Auto="y" DBSelect="4" DB_Root_Password="123456" InstallInnodb="y" PHPSelect="8" SelectMalloc="1" ./install.sh lnmp
    
    lnmp.org.png
    安装步骤解释请阅读官方网址的安装,这里就不废话了
    【查看lnmp内置命令】sudo lnmp -list
    【删除.user.ini命令】chattr -i ./.user.*
    +-------------------------------------------+
    |    Manager for LNMP, Written by Licess    |
    +-------------------------------------------+
    |              https://lnmp.org             |
    +-------------------------------------------+
    Usage: lnmp {start|stop|reload|restart|kill|status}
    Usage: lnmp {nginx|mysql|mariadb|php-fpm|pureftpd} {start|stop|reload|restart|kill|status}
    Usage: lnmp vhost {add|list|del}
    Usage: lnmp database {add|list|edit|del}
    Usage: lnmp ftp {add|list|edit|del|show}
    Usage: lnmp ssl add
    

    安装完我们先生成vhost.conf域名访问文件

    [vagrant@localhost] sudo lnmp vhost add
    
    • 解决.user.ini的问题
    [vagrant@localhost] sudo chattr -i ./.user.*
    [vagrant@localhost] sudo rm -rf .user.ini
    [vagrant@localhost] sudo lnmp restart
    

    我们进入PHP目录/usr/local/php/etc,找到php.ini文件,先把错误提示打开

    [vagrant@localhost] sudo vi /usr/local/php/etc/php.ini   修改 display_errors = On;
    

    保存退出后,重启下lnmp

    [vagrant@localhost] sudo lnmp restart
    

    再次访问的时候,没有500错误了,显示了另外一个错误提示:

    Warning: require(): open_basedir restriction in effect. File(/home/wwwroot/sfabric.nginx/bootstrap/autoload.php) is not within the allowed path(s): (/home/wwwroot/sfabric.nginx/public/:/tmp/:/proc/) in /home/wwwroot/sfabric.nginx/public/index.php on line 21
    Warning: require(/home/wwwroot/sfabric.nginx/bootstrap/autoload.php): failed to open stream: Operation not permitted in /home/wwwroot/sfabric.nginx/public/index.php on line 21
    Fatal error: require(): Failed opening required '/home/wwwroot/sfabric.nginx/public/../bootstrap/autoload.php' (include_path='.:/usr/local/php/lib/php') in /home/wwwroot/sfabric.nginx/public/index.php on line 21
    

    这个错误提示是php执行权限的问题:
    我们先找到在哪个文件设置了open_basedir
    进入到/usr/local/nginx/conf目录下,打开fastcgi.conf文件,在这个文件里面最后一行设置了open_basedir:

    [vagrant@localhost] sudo vi /usr/local/nginx/conf/fastcgi.conf
    
    注释open_basedir.png

    保存退出,重启

    [vagrant@localhost] sudo lnmp restart
    

    你发现项目还是打不开,500未找到。需要你去vhost配置域名的地方加下面代码

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    这是nginx的原因
    
    开始对项目调试:

    当你开心的打开看到Laravel的画面是,别鸡冻。
    1.composer的时候还是会报错的
    2.项目权限用户属租也会报错的
    这里线上服务器需要修改下用户属组 chown -R www:www laravel55/
    (
    如果是laravel.log日志报错执行sudo chmod -R 777 storage)

    composer.png

    打开php配置文件

    [vagrant@localhost] sudo vi /usr/local/php/etc/php.ini
    
    disable_functions.png

    如果还报错Laravel 致命错误:找不到Class'Illuminate \ Foundation \ Application'
    运行一下 composer update 即可解决
    什么?还不行? emmmmm ~
    运行一下 php artisan key:generate 重新生成项目的key一下

    下面的这个报错,我解决了好久。一开始没看仔细以为是文件权限属组问题
    其实是 php-fpm以root身份运行感谢CSDN解决我的疑惑
    查看权限ps aux | grep php-fpm
    修改/usr/local/php/etc/php-fpm.conf文件给vagrnat的属组

    cache缓存获取不到.png php-fpm组.png

    CentOS.7 安装 Xdebug

    下载Xdebug网址 xdebug.org-download

    安装到/usr/local:用户级的程序目录
    cd到/usr/local 执行 sudo mkdir ./xdebug
    【-p指定安装下载】sudo wget http://xdebug.org/files/xdebug-2.6.0.tgz -p /usr/local/xdebug/
    【进入下载后的文件】cd /usr/local/xdebug/xdebug.org/files/
    【拷贝到创建的目录】sudo cp xdebug-2.6.0.tgz /usr/local/xdebug/
    【解压文件】sudo tar -xzf xdebug-2.6.0.tgz
    【进入文件】cd xdebug-2.6.0
    【执行】sudo /usr/local/php/bin/phpize
    【配置】sudo ./configure --with-php-config=/usr/local/php/bin/php-config
    【开始编译】sudo make install
    成功后,会提示你:Installing shared extensions: /usr/local/php/lib/php/extensions... ...
    【查询下xdebug.so路径】sudo find / -name xdebug.so
    【打开php.ini】sudo vi /usr/local/php/etc/php.ini
    【末尾添加代码】
    [xDebug]
    zend_extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so
    【重启lnmp】lnmp restart
    【检测是否安装成功Xdebug】php -m | grep xdebug
    
    Xdebug.png

    安装 fileinfo 上传文件扩展

    • 检测PHP是否安装
    php -i|grep fileinfo // 看是否已安装fileinfo扩展,若没有,则进行下一步
    
    • 安装到PHP目录
    cd /usr/local/php && php -v
    
    • 对应自己的 PHP版本 下载扩展
    wget -O php-7.1.18.tar.gz http://cn2.php.net/get/php-7.1.18.tar.gz/from/this/mirror
    tar -zxvf php-7.1.18.tar.gz
    
    • 执行安装 和 编译
    // >[执行phpize命令]注意,该命令一定要在上面说到的fileinfo目录下执行
    cd /usr/local/php/php-7.1.18/ext/fileinfo && /usr/local/php/bin/phpize
    # 如果执行成功,会有类似下面的信息
    # Configuring for:
    # PHP Api Version:         20160303
    # Zend Module Api No:      20160303
    # Zend Extension Api No:   320160303
    
    // 配置php-config路径,以自己服务器的实际路径为准
    ./configure --with-php-config=/usr/local/php7/bin/php-config
    
    // 编译安装
    make && make install
    
    • 最后 php.ini 添加以下代码并重启 lnmp
    extension=fileinfo.so
    // 记得 lnmp restart
    
    fileinfo.png

    安装 Redis

    整理的内容借鉴博客 Redis安装与卸载

    • 下载并编译(手动启动)
    cd /usr/local && mkdir redis && cd /usr/local/redis
    wget http://download.redis.io/releases/redis-4.0.10.tar.gz
    tar xzf redis-4.0.10.tar.gz
    cd redis-4.0.10
    make
    make install
    redis-server # 看到这个界面的话,就表示安装成功了
    
    • 配置redis后台启动
    cd /usr/local/redis/redis-4.0.10 && vim redis.conf
    
    daemonize no
    修改为:
    daemonize yes
    
    • 设置redis服务器开机自动启动:
    cd utils/
    
    将 utils/redis_init_script 复制到 /etc/init.d目录下 并 命名为redis
    cp redis_init_script /etc/init.d/redis && ll /etc/init.d/redis
    
    • 继续编辑启动文件,修改其中指定的pid和配置文件
    vim /etc/init.d/redis
    
    PIDFILE=/var/run/redis_${REDISPORT}.pid
    CONF="/etc/redis/${REDISPORT}.conf"
    修改为
    PIDFILE=/var/redis/run/redis_${REDISPORT}.pid
    CONF="/etc/redis/redis.conf"
    
    • 创建存放pid的目录为/var/redis/run
    cd /var/ && mkdir redis && cd redis && mkdir run && ls -al
    
    • 接下来,我们需要把配置文件复制一份到/etc/redis这个目录下面去
    cd /etc && mkdir redis && cd redis && cp /usr/local/redis/redis-4.0.10/redis.conf ./ && ls -al && pwd
    # (如果报错,检测一下 `/etc/` 目录下有没有叫 `redis` 的这个文件目录)
    
    • 修改配置文件中的pid为前面配置的pid
    vim redis.conf
    
    pidfile /var/run/redis_6379.pid
    修改为
    pidfile /var/redis/run/redis_6379.pid
    
    • 至此为止,我们已经可以通过service redis start/stop来启动和关闭redis服务了

    最后只需要通过chkconfig redis on命令来设置开机启动即可。如果提示 redis 服务不支持 chkconfig的话,只需要在/etc/init.d/redis这个启动脚本的第二行后面加上下面的内容即可。

    [root@localhost ~]chkconfig redis on
    redis 服务不支持 chkconfig
    只需要在`/etc/init.d/redis`这个启动脚本的第二行后面加上下面的内容即可:
    
    # chkconfig:2345 90 10
    #
    # description:Redis is a persistent key-value database
    
    • 然后再设置开机启动
    [root@localhost ~]chkconfig redis on
    
    • 查看redis是否启动
    ps aux | grep redis
    
    root      9495  0.0  0.7  41672  7572 ?        Ssl  12:08   0:00 /usr/local/bin/redis-server 127.0.0.1:6379
    
    Lnmp - Redis 自动安装

    好了,上面是讲的手动安装,什么?有手动安装肯定有自动安装?Oh!Sorry,下面说一条命令全自动安装,作者不是故意坏,是让小伙伴们过一下流程然后再用傻瓜式自动安装/坏笑/斜眼笑

    扩展插件 (去lnmp安装目录下执行):
    【安装redis】./addons.sh install redis
    【配置全局redis-cli】cp /usr/local/redis/bin/redis-cli /usr/local/bin/
    ./addons.sh {install|uninstall} {eaccelerator|xcache|memcached|opcache|redis|apcu|imagemagick|ioncube}
    
    Redis报错(丢失文件)
    [root@localhost ~]# redis-cli
    Could not connect to Redis at 127.0.0.1:6379: Connection refused
    Could not connect to Redis at 127.0.0.1:6379: Connection refused
    not connected>
    

    【解决】: 删除 rm -rf /var/redis/ (为了清除前期配置过的文件)
    执行 cd /var/ && mkdir redis && cd redis && mkdir run && ls -al (重新创建目录)
    运行一遍 service redis start (启动)
    查看进程是否启动:ps aux | grep redis

    linux下切换用户出现This account is currently not available

    【查看所有用户】cat /etc/passwd
    【启动www】将/sbin /nologin 改成 /bin/bash
    

    修改默认ssh 22端口

    注意:别忘了去安全组添加自己想要修改的端口号

    【打开ssh配置文件】vim /etc/ssh/sshd_config
    修改 Post 22值 或者添加再添加一个 Post xxxx
    【重启ssh】systemctl restart sshd.service
    【查看ssh状态】systemctl status sshd.service
    

    lnmp1.5 开启extension=php_fileinfo.dll 报错处理方法

    CSDN-php_fileinfo.dll 报错处理

    配置域名转发端口

    vhost创建一个文件touch http.conf

    server {
            listen  80;
            server_name  xxxx.com www.xxxx.art;
    location / {
            proxy_pass         http://127.0.0.1:8082;
            proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forward-For    $proxy_add_x_forwarded_for;
            proxy_set_header Access-Control-Allow-Origin *;
            proxy_next_upstream http_502 http_504 error timeout invalid_header;
    }}
    
    
    server {
            listen  80;
            server_name  api.xxxx.com;
    location / {
            proxy_pass         http://127.0.0.1:8081;
            proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forward-For    $proxy_add_x_forwarded_for;
            proxy_set_header Access-Control-Allow-Origin *;
            proxy_next_upstream http_502 http_504 error timeout invalid_header;
    }}
    
    
    server {
            listen  80;
            server_name  web.xxxx.com;
    location / {
            proxy_pass         http://127.0.0.1:8083;
            proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forward-For    $proxy_add_x_forwarded_for;
            proxy_set_header Access-Control-Allow-Origin *;
            proxy_next_upstream http_502 http_504 error timeout invalid_header;
    }}
    

    *附 CentOS7防火墙命令操作

    【查看防火墙是否开启 dead是没开启】systemctl status firewalld
    【查看9000端口是否开启】firewall-cmd --permanent --query-port=9000/tcp
    【查看端口的监听】netstat -aptn
    【重启防火墙】firewall-cmd --reload
    【临时关闭】systemctl stop firewalld
    【禁止开机启动】systemctl disable firewalld
    【添加9000端口写入配置文件】
    firewall-cmd --zone=public --add-port=9000/tcp --permanent
    【命令含义:】
    --zone #作用域
    --add-port=80/tcp #添加端口,格式为:端口/通讯协议
    --permanent #永久生效,没有此参数重启后失效
    

    *附解释 虚拟主机配置文件内容

    server
     {
      #监听端口
      listen 80;
      #域名可以有多个,用空格隔开
      server_name [www.ha97.com](http://www.ha97.com/) ha97.com;
      index index.html index.htm index.php;
      root /data/www/ha97;
    
      location ~ .*\.(php|php5)?$
      {
       fastcgi_pass 127.0.0.1:9000;
       fastcgi_index index.php;
       include fastcgi.conf;
      }
    
      #图片缓存时间设置
      location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
      {
       expires 10d;
      }
    
      #JS和CSS缓存时间设置
      location ~ .*\.(js|css)?$
      {
       expires 1h;
      }
    
      #日志格式设定
      log_format access '$remote_addr - $remote_user [$time_local] "$request" '
      '$status $body_bytes_sent "$http_referer" '
      '"$http_user_agent" $http_x_forwarded_for';
    
      #定义本虚拟主机的访问日志
      access_log /var/log/nginx/ha97access.log access;
    
      #对 "/" 启用反向代理
      location / {
       proxy_pass [http://127.0.0.1:88](http://127.0.0.1:88/);
       proxy_redirect off;
       proxy_set_header X-Real-IP $remote_addr;
       #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       #以下是一些反向代理的配置,可选。
       proxy_set_header Host $host;
       client_max_body_size 10m; #允许客户端请求的最大单文件字节数
       client_body_buffer_size 128k; #缓冲区代理缓冲用户端请求的最大字节数,
       proxy_connect_timeout 90; #nginx跟后端服务器连接超时时间(代理连接超时)
       proxy_send_timeout 90; #后端服务器数据回传时间(代理发送超时)
       proxy_read_timeout 90; #连接成功后,后端服务器响应时间(代理接收超时)
       proxy_buffer_size 4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小
       proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的设置
       proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)
       proxy_temp_file_write_size 64k;
       #设定缓存文件夹大小,大于这个值,将从upstream服务器传
      }
    
     #设定查看Nginx状态的地址
      location /NginxStatus {
       stub_status on;
       access_log on;
       auth_basic "NginxStatus";
       auth_basic_user_file conf/htpasswd;
       #htpasswd文件的内容可以用apache提供的htpasswd工具来产生。
      }
    
     #本地动静分离反向代理配置
     #所有jsp的页面均交由tomcat或resin处理
      location ~ .(jsp|jspx|do)?$ {
       proxy_set_header Host $host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_pass [http://127.0.0.1:8080](http://127.0.0.1:8080/);
      }
    
     #所有静态文件由nginx直接读取不经过tomcat或resin
      location ~ .*.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$
       {  expires 15d; }
      location ~ .*.(js|css)?$
       { expires 1h; }
     }
    }
    

    *服务器踩坑

    【first blood】安全用户组80端口
    
    提示我的PHP 7版本太高,不符合composer.json需要的版本,但是在PHP 7下应该也是可以运行的,composer可以设置忽略版本匹配,命令是:
    composer install --ignore-platform-reqs
    
    【DNS解析】Ping 不通 baidu.com
    sudo vim /etc/resolv.conf 修改成下面
    # Generated by NetworkManager
    nameserver 114.114.114.114
    

    相关文章

      网友评论

          本文标题:Vagrant安装Lnmp一键安装包环境配置

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