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

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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,569评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,499评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,271评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,087评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,474评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,670评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,911评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,636评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,397评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,607评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,093评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,418评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,074评论 3 237
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,092评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,865评论 0 196
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,726评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,627评论 2 270

推荐阅读更多精彩内容