目录
LNMP环境安装
安装和配置 git
安装 Composer
安装 redis
Laravel 项目安装
拉取 github 上的 Laravel 项目代码
安装依赖
配置环境变量
数据配置
权限配置
Nginx 配置
elasticsearch
0.安装JDK11
1.下载Elasticsearch7
2.下载完了解压压缩包
3.移动目录
4.新建一个用户
5.修改elasticsearch.yml
5.启动
6.检查状态
7.安装 中文分词插件IK
启动elasticsearch出现的问题:
https://blog.csdn.net/qq_43109978/article/details/99402109
<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 上
cd /tmp
curl -sS https://getcomposer.org/installer | php
//让composer全局可用
mv composer.phar /usr/local/bin/composer
//安装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 已经可以连通
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
<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
在 /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
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 $?
直接去官网下载
tar -zxvf xxxx
mv elasticsearch-7.2.0 /usr/local/
es不让你用root启动
useradd es
passwd es
chown -R es elasticsearch-7.2.0
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"]
./elasticsearch
$ ps aux|grep elasticsearch
$ curl 127.0.0.1:9200
第一个命令是查看是否有 Elasticsearch 进程,第二个命令是尝试调用 Elasticsearch 的接口
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
<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:+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