CentOS 7部署laravel

目录

 

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
发布了107 篇原创文章 · 获赞 18 · 访问量 6327

猜你喜欢

转载自blog.csdn.net/qq_43109978/article/details/100114505