CentOS 7部署laravel_centos 7 laravel框架的.env-程序员宅基地

技术标签: laravel  linux  

目录

 

LNMP环境安装

安装和配置 git

安装 Composer

安装 redis

Laravel 项目安装

拉取 github 上的 Laravel 项目代码

安装依赖

配置环境变量

数据配置

权限配置

Nginx 配置

elasticsearch

0.安装JDK11

1.下载Elasticsearch7

2.下载完了解压压缩包

3.移动目录

4.新建一个用户

5.修改elasticsearch.yml

5.启动

6.检查状态

7.安装 中文分词插件IK

启动elasticsearch出现的问题:


LNMP环境安装

https://blog.csdn.net/qq_43109978/article/details/99402109

安装和配置 git

<1>安装 git

yum install git

查看版本号

git --version

<2>配置 git

//因为Git是分布式版本控制系统,所以,每个机器都必须自报家门
git config --global user.name "Your Name"
git config --global user.email "[email protected]"
//查看配置
git config -l

<3>生成密钥对

默认情况下,用户的 SSH 密钥存储在其 ~/.ssh 目录下。 进入该目录并列出其中内容,你便可以快速确认自己是否已拥有密钥

我们需要寻找一对以 id_dsa 或 id_rsa 命名的文件,其中一个带有 .pub 扩展名。 .pub 文件是你的公钥,另一个则是私钥。 如果找不到这样的文件(或者根本没有 .ssh 目录),你可以通过运行 ssh-keygen程序来创建它们。

[root@instance-qj33vwh4 conf.d]# cd ~/.ssh
[root@instance-qj33vwh4 .ssh]# ls
authorized_keys
//输入ssh-keygen,ssh-keygen后会确认密钥的存储位置(默认是 .ssh/id_rsa),然后它会要求你输入两次密钥口令。如果你不想在使用密钥时输入口令,将其留空即可
[root@instance-qj33vwh4 .ssh]# ls
authorized_keys  id_rsa  id_rsa.pub

密钥对生成后,将公钥 id_rsa.pub 的内容拷贝添加到你的 github 上

 

安装 Composer

cd /tmp
curl -sS https://getcomposer.org/installer | php
//让composer全局可用
mv composer.phar /usr/local/bin/composer

安装 redis

//安装epel源,安装完成之后就可以直接使用yum来安装额外的软件包
yum install epel-release

yum install redis -y

//启动redis服务
systemctl start redis.service

//redis服务加入开机启动
systemctl enable redis

//检查运行状态
systemctl status redis.service

//测试 redis
redis-cli ping
如输出 PONG,则表示 redis 已经可以连通

Laravel 项目安装

拉取 github 上的 Laravel 项目代码

cd /www/wwwroot
git clone 项目地址

安装依赖

cd project
composer install 

安装过程中,如果缺少相关 php 扩展,会有报错。从报错信息中,将所有缺少的扩展记录下来,逐个安装。
如,缺少 pdo 扩展,则运行 yum -y install php72w-pdo,依此类推,安装 xxx 扩展,则运行 yum -y install php72w-xxx 。
安装后重启 nginx 和 php-fpm,依次运行:systemctl restart nginx 和 systemctl restart php-fpm

 

配置环境变量

在项目目录 下复制 .env.example 为 .env

 

生成 APP_KEY

php artisan key:generate

 

.env 配置

APP_NAME=你的APP名字
APP_ENV=production # 这里设为生成环境
APP_KEY=base64:前面生成的key不用改
APP_DEBUG=false # 关闭调试模式
APP_URL=你的主机地址
LOG_CHANNEL=stack
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=你的数据库密码
BROADCAST_DRIVER=log
CACHE_DRIVER=redis  # 这里使用redis
SESSION_DRIVER=file
SESSION_LIFETIME=120
QUEUE_DRIVER=redis # 这里使用redis
.
.
.
MAIL_DRIVER=smtp
MAIL_HOST=smtp.qq.com
MAIL_PORT=25
MAIL_USERNAME=你的QQ邮箱
MAIL_PASSWORD=你的smtp服务的密码
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=你的邮箱地址
MAIL_FROM_NAME=你的APP名字

ES_HOSTS=127.0.0.1:9200

数据配置

数据库创建:

CREATE DATABASE laravel;

数据表迁移:

php artisan migrate

如出现这样的报错:could not find driver ...,可能缺少了 pdo_mysql 扩展,运行 yum -y install php72w-pdo_mysql 安装。安装后同样重启 nginx 和 php-fpm 

 

数据迁移:

通过mysqldump备份,传到服务器上,然后进行数据恢复

mysqldump -u root -p shop > all.sql
 scp all.sql [email protected]:/home
mysql -uroot -p laravel <all.sql

权限配置

<1>注意nginx.conf中user为nginx

<2>将laravel项目的权限设置为nginx

 chown nginx:nginx -Rf 文件夹名

<3>修改php-fpm的用户及用户组,否则会出现 Permission denied错误(/etc/php-fpm.d/www.conf )

更改user = apache与 group = pache 为 user = nginx group = nginx ,如下:

; RPM: apache Choosed to be able to access some dir as httpd
user = nginx 
; RPM: Keep a group allowed to write in log dir.
group = nginx

 

Nginx 配置

在 /etc/nginx/conf.d 下面新建 laravel.conf配置文件,输入下列内容:

server {
    listen 80;
    server_name localhost;
    //注意这里,否则找不到静态资源
    root /www/wwwroot/laravel/public;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";

    index index.php index.html index.htm;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    error_page 404 /index.php;

    location ~ \.php$ {
        //项目的入口文件为public下的index.php
        root /www/wwwroot/laravel/public;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
}

参数详见:https://mp.csdn.net/postedit/100134587

 

elasticsearch

 

0.安装JDK11

wget https://download.java.net/java/GA/jdk11/13/GPL/openjdk-11.0.1_linux-x64_bin.tar.gz

解压到指定目录

tar -zxvf openjdk-11.0.1_linux-x64_bin.tar.gz /opt/

 由于我们日常的代码开发都是使用的JDK1.8,所以这里不会把JAVA_HOME配置成JDK11,我们只需更改Elasticsearch的启动文件,使它指向我们下载的JDK11

修改配置文件
[root@localhost bin]# pwd
/usr/local/src/elasticsearch/bin
[root@localhost bin]# vi elasticsearch
添加一下几行内容

#配置自己的jdk11
export JAVA_HOME=/opt/jdk-11.0.1
export PATH=$JAVA_HOME/bin:$PATH


#添加jdk判断
if [ -x "$JAVA_HOME/bin/java" ]; then
        JAVA="/opt/jdk-11.0.1/bin/java"
else
        JAVA=`which java`
fi

完整的配置文件

#!/bin/bash

# CONTROLLING STARTUP:
#
# This script relies on a few environment variables to determine startup
# behavior, those variables are:
#
#   ES_PATH_CONF -- Path to config directory
#   ES_JAVA_OPTS -- External Java Opts on top of the defaults set
#
# Optionally, exact memory values can be set using the `ES_JAVA_OPTS`. Note that
# the Xms and Xmx lines in the JVM options file must be commented out. Example
# values are "512m", and "10g".
#
#   ES_JAVA_OPTS="-Xms8g -Xmx8g" ./bin/elasticsearch

#配置自己的jdk11
export JAVA_HOME=/opt/jdk-11.0.1
export PATH=$JAVA_HOME/bin:$PATH

source "`dirname "$0"`"/elasticsearch-env

if [ -z "$ES_TMPDIR" ]; then
  ES_TMPDIR=`"$JAVA" -cp "$ES_CLASSPATH" org.elasticsearch.tools.launchers.TempDirectory`
fi

ES_JVM_OPTIONS="$ES_PATH_CONF"/jvm.options
JVM_OPTIONS=`"$JAVA" -cp "$ES_CLASSPATH" org.elasticsearch.tools.launchers.JvmOptionsParser "$ES_JVM_OPTIONS"`
ES_JAVA_OPTS="${JVM_OPTIONS//\$\{ES_TMPDIR\}/$ES_TMPDIR}"

#添加jdk判断
if [ -x "$JAVA_HOME/bin/java" ]; then
        JAVA="/opt/jdk-11.0.1/bin/java"
else
        JAVA=`which java`
fi

# manual parsing to find out, if process should be detached
if ! echo $* | grep -E '(^-d |-d$| -d |--daemonize$|--daemonize )' > /dev/null; then
  exec \
    "$JAVA" \
    $ES_JAVA_OPTS \
    -Des.path.home="$ES_HOME" \
    -Des.path.conf="$ES_PATH_CONF" \
    -Des.distribution.flavor="$ES_DISTRIBUTION_FLAVOR" \
    -Des.distribution.type="$ES_DISTRIBUTION_TYPE" \
    -Des.bundled_jdk="$ES_BUNDLED_JDK" \
    -cp "$ES_CLASSPATH" \
    org.elasticsearch.bootstrap.Elasticsearch \
    "$@"
else
  exec \
    "$JAVA" \
    $ES_JAVA_OPTS \
    -Des.path.home="$ES_HOME" \
    -Des.path.conf="$ES_PATH_CONF" \
    -Des.distribution.flavor="$ES_DISTRIBUTION_FLAVOR" \
    -Des.distribution.type="$ES_DISTRIBUTION_TYPE" \
    -Des.bundled_jdk="$ES_BUNDLED_JDK" \
    -cp "$ES_CLASSPATH" \
    org.elasticsearch.bootstrap.Elasticsearch \
    "$@" \
    <&- &
  retval=$?
  pid=$!
  [ $retval -eq 0 ] || exit $retval
  if [ ! -z "$ES_STARTUP_SLEEP_TIME" ]; then
    sleep $ES_STARTUP_SLEEP_TIME
  fi
  if ! ps -p $pid > /dev/null ; then
    exit 1
  fi
  exit 0
fi

exit $?

 

 

1.下载Elasticsearch7

   直接去官网下载

2.下载完了解压压缩包

tar -zxvf xxxx

3.移动目录

mv elasticsearch-7.2.0   /usr/local/

4.新建一个用户

es不让你用root启动

useradd  es
passwd es 
chown -R  es elasticsearch-7.2.0

5.修改elasticsearch.yml

 1 cluster.name: my-application #集群名称
 2 node.name: node-1 #节点名称
 3 #数据和日志的存储目录
 4 path.data: /usr/local/elasticsearch-7.2.1/data
 5 path.logs: /usr/local/elasticsearch-7.2.1/logs
 6 #设置绑定的ip,设置为0.0.0.0以后就可以让任何计算机节点访问到了
 7 network.host: 0.0.0.0
 8 http.port: 9200 #端口
 9 #设置在集群中的所有节点名称,这个节点名称就是之前所修改的,当然你也可以采用默认的也行,目前是单机,放入一个节点即可
10 cluster.initial_master_nodes: ["node-1"]

 

5.启动

./elasticsearch

6.检查状态

$ ps aux|grep elasticsearch
$ curl 127.0.0.1:9200

第一个命令是查看是否有 Elasticsearch 进程,第二个命令是尝试调用 Elasticsearch 的接口

 

7.安装 中文分词插件IK

ik插件地址: https://github.com/medcl/elasticsearch-analysis-ik

我使用了方法1 进行下载安装;

#下载与你的es版本想对应的版本 

wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.4.1/elasticsearch-analysis-ik-6.4.1.zip



#解压

unzip elasticsearch-analysis-ik-6.4.1.zip 


#完成后重启es

 

 

 

启动elasticsearch出现的问题:

<1>OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release

这是提醒你 cms 垃圾收集器在 jdk9 就开始被标注为 @deprecated

看下JDK11支持的垃圾回收器
HotSpot Virtual Machine Garbage Collection Tuning Guide

 

修改jvm.options
将 : -XX:+UseConcMarkSweepGC
改为:-XX:+UseG1GC

 

<2>org.elasticsearch.bootstrap.BootstrapException: java.nio.file.AccessDeniedException

原因:elasticsearch.keystore文件没有权限

解决办法:切换到root用户修改文件elasticsearch.keystore权限

su - es
chmod -R es elasticsearch.keystore

 

<3>java.net.BindException: Cannot assign requested address 

检查服务器IP,发现配置的不对

ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:0c:29:c6:e7:c7  
          inet addr:192.168.15.134  Bcast:192.168.0.4  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fec6:e7c7/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:163 errors:0 dropped:0 overruns:0 frame:0
          TX packets:180 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:11179 (11.1 KB)  TX bytes:17535 (17.5 KB)

更新ElasticSearch 的配置文件config/elasticsearch.yml, 重新运行服务成功.

# ---------------------------------- Network -----------------------------------
#
# Set the bind address to a specific IP (IPv4 or IPv6):
network.host: 192.168.0.4
http.port: 9200

 

<4>main ERROR No Log4j 2 configuration file found

原因:elasticsearch.yml中的配置项的格式有问题
解决方案:请尽量保持冒号前面没空格,后面一个空格,不要用tab键

 

<5>max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

sudo vi /etc/sysctl.conf 文件最后添加一行

vm.max_map_count=262144

加载设置好的系统参数

sudo sysctl -p

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_43109978/article/details/100114505

智能推荐

JQuery的table2excel.js导出到Excel导致科学计数法问题的解决方法-程序员宅基地

文章浏览阅读1.2k次,点赞2次,收藏2次。打开table2excel.js文件,找到Plugin.prototype节点,修改mid节点内容,原始样式如下mid: "</x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body>",现在我们给它加上样式,解决科学计数问题。mid: "</x:ExcelWorksheets></x:ExcelWorkbook><_table2excel.js

bzoj 1220-程序员宅基地

文章浏览阅读71次。裴蜀定理两个数之间:假设两个数a,b,gcd(a,b)=c1>证ax+by=d,则c|d,因为c|a&&c|b,所以c|(ax+by),所以c|d.2>证对于k取任何整数值,总存在x,y使得ax+by=kc,根据扩展欧几里得可以得到这个结论。3>证根据扩展欧几里得得到的基本解,x1,y1,那么解的范围是x1-kb/c,y1+k..._class hastatic

AndroidStudio 代码报错(引入红色),但可正常运行解决方法(4种方式)_androidstudio 代码报错(报红色),但可正常运行解决方法-程序员宅基地

文章浏览阅读681次。一、自带清除缓存点击AndroidStudio菜单File -> Invalidate Caches/Restar… ,在弹出的对话框中点击Invalidate and Restar。等待AS清理并自动重启。二、删除user目录下.AndroidStudio中的文件关闭AndroidStudio,进入C:\Users\xUser.AndroidStudio3.1(3.1为..._androidstudio 代码报错(报红色),但可正常运行解决方法

Java: 理解异常/错误(Error和Exception)_java 错误和异常-程序员宅基地

文章浏览阅读2.1k次。一、Throwable结构在Java中,Throwable是所有错误与异常的超类。Throwable包含两个子类:Error(错误)和Exception(异常)异常和错误的区别是:异常能被程序本身可以处理,错误是无法处理Error: 是程序无法处理的错误,表示运行应用程序中较严重问题. 大多数错误与代码编写者执行的操作无关,而表示代码运行时 JVM(Java 虚拟机)出现的问题。(如Java虚拟机运行错误(Virtual MachineError)、类定义错误(NoClassDefF.._java 错误和异常

【算法】数据结构:跳表_跳表level怎么计算-程序员宅基地

文章浏览阅读229次。一、引言在排好顺序的数组中,要查找某个元素,我们可以通过二分法来快速查找,这其实依赖的是数组的随机访问的特性,我可以通过arr[6],来访问数组中的第七个元素(因为第一个元素下标是0),因此我就可以跳跃着访问数组中任意一个元素。但如果是普通的链表,第七个元素的地址,我只能通过第六个元素知道,第六个元素的地址我只能通过第五个元素知道,以此类推,我如果要查找链表中的任意一个元素,我都需要从头遍历,就使用不了二分法查找,那么对于链表这样的数据结构的快速查询,是否有合理的解决方案?有的,把链表变为跳表!_跳表level怎么计算

投光灯高可靠低THD高压线性恒流芯片:SM2255EH-程序员宅基地

文章浏览阅读223次,点赞5次,收藏3次。SM2255EH是一款应用于投光灯、工矿灯、LED照明灯等多种灯具中五段低THD、高功率因数LED线性恒流控制芯片,芯片集成了700V高压MOSFET,采用独特创新的器件工艺技术,具有优越的抗雪崩击穿及浪涌能力,在外围无保护器件时可通过600V雷击浪涌测试,内置过温保护功能,提升系统应用可靠性。其次,这种芯片集成了700V高压MOS管和JFET高压供电功能,能够轻松通过440Vac高压和4kV雷击。高可靠低THD高压线性恒流芯片是一种特殊的电子芯片,主要用于驱动高电压、低电流的LED灯串。

随便推点

webservice接口调用报错 org.apache.cxf.service.factory.ServiceConstructionException: Failed to create servi-程序员宅基地

文章浏览阅读4.4w次。org.apache.cxf.service.factory.ServiceConstructionException: Failed to create service. at org.apache.cxf.wsdl11.WSDLServiceFactory.&lt;init&gt;(WSDLServiceFactory.java:76) at org.apach..._org.apache.cxf.service.factory.serviceconstructionexception: failed to creat

LeGO-LOAM 源码阅读笔记(imageProjecion.cpp)_lego_loam full_cloud_info-程序员宅基地

文章浏览阅读6.7k次,点赞21次,收藏89次。LeGO-LOAM是一种在LOAM之上进行改进的激光雷达建图方法,建图效果比LOAM要好,但是建图较为稀疏,计算量也更小了。本文原地址:wykxwyc的博客github注释后LeGO-LOAM源码:LeGO-LOAM_NOTED关于代码的详细理解,建议阅读:1.地图优化代码理解2.图像重投影代码理解3.特征关联代码理解4.LeGO-LOAM中的数学公式推导以上博客会随时更新,如果..._lego_loam full_cloud_info

36: ansible基础 、 Ansible ad-hoc 、 总结和答疑_unsupported parameters for (file) module: register-程序员宅基地

文章浏览阅读695次。CASE Top NSD AUTOMATION DAY01 案例1:部署Ansible 案例2:Ansible ad-hoc应用一 案例3:Ansible ad-hoc应用二 ..._unsupported parameters for (file) module: register. supported parameters inc

Xj123.biz 新疆维文网址导航站正式开通了!-程序员宅基地

文章浏览阅读1k次。为什么80%的码农都做不了架构师?>>> ..._维文网址

YUV颜色编码解析 ---- Good_16位yuv色彩-程序员宅基地

文章浏览阅读352次。come from :https://www.jianshu.com/p/a91502c00fb0YUVYUV是一种颜色空间,基于YUV的颜色编码是流媒体的常用编码方式。Y表示流明,U、V表示色度、浓度,这种表达方式起初是为了彩色电视与黑白电视之间的信号兼容。 对于图像每一点,Y确定其亮度,UV确认其彩度。Y'CbCr也称为YUV,是YUV的压缩版本,不同之处在于Y'CbCr用于数字..._16位yuv色彩

动态相对定位差分关键技术_动态差分算法-程序员宅基地

文章浏览阅读403次。卫星导航差分定位,动态相对定位关键技术_动态差分算法

推荐文章

热门文章

相关标签