目录
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 "youremail@yourdomain.com"
//查看配置
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 root@106.12.187.172:/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:+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