CentOS8安装redis、mysql、nginx、nodejs、pm2

【总结】CentOS8安装redis、mysql、nginx、nodejs、PM2

一、服务器准备就绪

我是在华为云上买的“HECS(云耀云服务器)” 
接下来就是购买域名、域名备案、SSL证书等等这些动作配置,就不一一介绍了,我均 是用的华为云的。

准备工具:

  • Xshell

一款强大的安全终端模拟软件。可在windows界面下访问不同 系统下的远程终端服务器,并且进行操作控制。

  • XFtp

灵活、轻便的SFTP/FTP客户端。可在网络中安全传输软件, 实现多窗口编辑,进行文件同步。

  • Navicat

一套数据库开发工具,让你从单一应用程序中同时连接 MySQL、MariaDB、MongoDB、SQL Server、Oracle、 PostgreSQL 和 SQLite 数据库。可以快速轻松地创建、管理和维 护数据库。

二、服务器安装相关依赖和配置

安装Reids

Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编 写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库。

下载Redis

进入官网找到下载地址 https://redis.io/download

001.png

上图中右键Download按钮,选择复制链接。 进入到Xshell控制台(默认当前是root根目录),输入wget 将上面复制的下载链接粘贴上,
输入(使用Xshell工具连接服务器)

wget http://download.redis.io/releases/redis‐5.0.7.tar.gz

执行后如下图:


10651D967BE.jpeg

等待下载完成。

解压并安装Redis

解压

下载完成后需要将压缩文件解压,输入以下命令解压到当前目录

tar -zvxf redis-5.0.7.tar.gz

解压后在根目录上输入ls 列出所有目录会发现与下载redis之前多了一个redis-5.0.7.tar.gz文件和

redis-5.0.7的目录。


002.jpeg
移动redis目录

一般都会将redis目录放置到 /usr/local/redis目录,所以这里输入下面命令将目前在/root目录下的redis-5.0.7文件夹更改目录,同时更改文件夹名称为redis。

mv /root/redis-5.0.7 /usr/local/redis

cd 到/usr/local目录下输入ls命令可以查询到当前目录已经多了一个redis子目录,同时/root目录下已经没有redis-5.0.7文件夹


001.jpeg
编译

cd到/usr/local/redis目录,输入命令make执行编译命令,接下来控制台会输出各种编译过程中输出的内容。

make

最终运行结果如下:

003.jpeg
安装
make PREFIX=/usr/local/redis install

这里多了一个关键字 <font color="#dd0000">PREFIX=</font> 这个关键字的作用是编译的时候用于指定程序存放的路径。比如我们现在就是指定了redis必须存放在/usr/local/redis目录。假设不添加该关键字Linux会将可执行文件存放在/usr/local/bin目录,

库文件会存放在/usr/local/lib目录。配置文件会存放在/usr/local/etc目录。其他的资源文件会存放在usr/local/share目录。这里指定号目录也方便后续的卸载,后续直接rm -rf /usr/local/redis 即可删除redis。

执行结果如下图:</br>


004.jpeg
启动redis

根据上面的操作已经将redis安装完成了。在目录/usr/local/redis 输入下面命令启动redis

./bin/redis-server& ./redis.conf
005.jpeg

上面的启动方式是采取后台进程方式,下面是采取显示启动方式(如在配置文件设置了daemonize属性为yes则跟后台进程方式启动其实一样)。

./bin/redis-server ./redis.conf

两种方式区别无非是有无带符号&的区别。 redis-server 后面是配置文件,目的是根据该配置文件的配置启动redis服务。redis.conf配置文件允许自定义多个配置文件,通过启动时指定读取哪个即可。

redis.conf配置文件

在目录/usr/local/redis下有一个redis.conf的配置文件。我们上面启动方式就是执行了该配置文件的配置运行的。我么可以通过cat、vim、less等Linux内置的读取命令读取该文件。

也可以通过redis-cli命令进入redis控制台后通过CONFIG GET * 的方式读取所有配置项。 如下:

redis-cli
CONFIG GET *
006.jpeg

回车确认后会将所有配置项读取出来,如下图


007.jpeg

这里列举下比较重要的配置项


021.png

这里我要将daemonize改为yes,不然我每次启动都得在redis-server命令后面加符号&,不这样操作则只要回到Linux控制台则redis服务会自动关闭,同时也将bind注释,将protected-mode设置为no。

这样启动后我就可以在外网访问了。

更改方式:

vim /usr/local/redis/redis.conf

通过 /daemonize 查找到属性,默认是no,更改为yes即可。 (通过/关键字查找出现多个结果则使用 n字符切换到下一个即可,查找到结果后输入:noh退回到正常模式)

如下图:

008.jpeg

其他两个属性也是同样方式查找和编辑即可。

至此,redis安装配置完成。可执行netstat -lanp | grep 6379查看redis端口

redis-cli说明

redis-cli是连接本地redis服务的一个命令,通过该命令后可以既然怒redis的脚本控制台。如下图


010.jpeg

输入exit可以退出redis脚本控制台

输入redis-cli 进入控制台后输入命令shutdown即可关闭运行中的Redis服务了。如下图:


011.jpeg

安装mysql

1.输入

wget https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm
012.jpeg

2、安装数据源

yum install mysql80-community-release-el8-1.noarch.rpm
013.jpeg

3、检查数据源

查看mysql源是否安装成功:

yum repolist enabled | grep "mysql.*-community.*"
014.jpeg

4、配置数据源(可不配置)

修改yum源,可不配置。
配置yum源:cat /etc/yum.repos.d/mysql-community.repo

015.jpeg

5、禁用CentOS8自带mysql模块

禁用CentOS8自带的mysql模块

yum module disable mysql
016.jpeg

6、安装数据库

真正安装mysql,安装语句:

yum install mysql-community-server
017.jpeg

Is this ok [y/Y] 一路 y到底

7、启动mysql

service mysqld start
service mysqld status
018.jpeg

8、显示mysql的随机密码/修改密码

grep 'temporary password' /var/log/mysqld.log
019.jpeg

修改密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root_21root';

020.jpeg

查看密码策略:SHOW VARIABLES LIKE 'validate_password%';

022.jpeg

修改密码长度:(长度)set global validate_password.length=1;

修改密码等级:(等级)set global validate_password.policy=0;

修改后再次查看

023.jpeg

设置自己想要的密码ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

024.jpeg

9、设置mysql可以远程访问

默认情况下,我们的mysql只可以在服务器的本地访问,远程是没法访问的,今天就来教大家如何设置mysql的远程访问。

  1. 同样还是先登陆mysql,这时登陆记得用我们新设置的密码。 如我们的mysql -uroot -p'Qc123456!'; 这里的Qc123456!就是我的新密码
  2. 登陆成功后用 show databases; 来显示所有的数据库
  3. use mysql; 来更改管理员信息
  4. select user,host from user; 查询所有的管理员
  5. update user set host = '%' where user = 'root'; 更新root用户的本地访问为% ,即代表可以远程访问。通常情况下我们的root用户应该只能本地访问,但是我们今天是为了学习方便,所以就设置root可以远程访问了。
  6. 设置完,一定要记得 flush privileges;刷新下权限。
  7. 再来看user表,root后面的信息就改变了。

10、添加mysql数据库的子管理员

我们上面直接用root来操作数据库,有些危险,所以我们再来教大家添加一个子管理员。</br>
如上图所示:

  1. 添加用户名为xiaoshitou,密码为Xiaoshitou123!的子用户create user 'lhy'@'%' identified with mysql_native_password by 'lhy123!';
  2. 设置xiaoshitou这个用户可供远程访问grant all privileges on *.* to 'lhy'@'%' with grant option;
  3. 刷新权限flush privileges;可以看到我们的xiaoshitou用户的host也变成了 %
  4. 可以看到我们的xiaoshitou子用户也可以供远程访问了(远程访问前,要记得设置下服务器的安全组)
  5. 后面的生产环境里我们也可以给这个xiaoshitou用户设置一些权限,比如只可以增加和修改mysql数据库,不可以删除数据...

11、设置完以后不要忘记设置你服务器的安全组

出站和入站规则都要设置3306端口

12、idea远程访问服务数据库。

  1. 进入mysql链接
  2. 输入信息链接服务器mysql数据库
  3. 查看链接效果</br>


    025.jpeg

到这里我们就完整的在linux服务器里安装好mysql了,并且可以通过远程访问到。

安装nginx

1、安装各种依赖

#gcc安装,nginx源码编译需要
yum install -y gcc-c++

#PCRE pcre-devel 安装,nginx 的 http 模块使用 pcre 来解析正则表达式
yum install -y pcre pcre-devel

#zlib安装,nginx 使用zlib对http包的内容进行gzip
yum install -y zlib zlib-devel

#OpenSSL 安装,强大的安全套接字层密码库,nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http)
yum install -y openssl openssl-devel

2、下载nginx

使用 wget 命令下载:官网地址

wget -c https://nginx.org/download/nginx-1.20.0.tar.gz

3、安装

#根目录使用ls命令可以看到下载的nginx压缩包,然后解压
tar -zxvf nginx-1.20.0.tar.gz

#解压后进入目录
cd nginx-1.20.0

#使用默认配置
./configure

#编译安装
make
make install

#查找安装路径,默认都是这个路径
[root@VM_0_12_centos ~]# whereis nginx
nginx: /usr/local/nginx

#启动、停止nginx
cd /usr/local/nginx/sbin/
./nginx     #启动
./nginx -s stop  #停止,直接查找nginx进程id再使用kill命令强制杀掉进程
./nginx -s quit  #退出停止,等待nginx进程处理完任务再进行停止
./nginx -s reload  #重新加载配置文件,修改nginx.conf后使用该命令,新配置即可生效

#重启nginx,建议先停止,再启动
./nginx -s stop
./nginx

#查看nginx进程,如下返回,即为成功
[root@VM_0_12_centos ~]# ps aux|grep nginx
root      5984  0.0  0.0 112708   976 pts/1    R+   14:41   0:00 grep --color=auto nginx
root     18198  0.0  0.0  20552   612 ?        Ss   11:28   0:00 nginx: master process ./nginx
nobody   18199  0.0  0.0  23088  1632 ?        S    11:28   0:00 nginx: worker process

4、开机自启动

#在rc.local增加启动代码即可
vi /etc/rc.local
#增加一行 /usr/local/nginx/sbin/nginx,增加后保存
#设置执行权限
cd /etc

5、配置域名映射

#进入nginx配置文件目录,找到nginx的配置文件nginx.conf
cd /usr/local/nginx/conf/

下面是我的配置,有普通 web 和 nodejs


#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    server_names_hash_bucket_size 64;#这个需要配置,否则启动不起来
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
    limit_conn_log_level error;
    limit_conn_status 503;
    limit_conn_zone $binary_remote_addr zone=one:10m;#one=one或allips 表示设置了名为“one”或“allips”的存储区,大小为10兆字节
    limit_conn_zone $server_name zone=perserver:10m;
    limit_req_zone $binary_remote_addr zone=allips:100m   rate=10r/s;#rate=10r/s 的意思是允许1秒钟不超过10个请求。其中$binary_remote_addr有时需要根据自己已有的log_format变量配置进行替换

    server {
        listen 80;
        server_name localhost;   #将localhost修改为您证书绑定的域名,例如:www.example.com。
        rewrite ^(.*)$ https://$host$1 permanent;   #将所有http请求通过rewrite重定向到https。
        # location / {
        #  root html;
        #  index index.html index.htm;
        # }
    }
    server {
        listen          443 ssl; #配置HTTPS的默认访问端口为443。如果在此处未配置HTTPS的默认访问端口,可能会导致Nginx无法启动。
        server_name     localhost; #localhost修改为您证书绑定的域名。
        ssl_certificate      cert/server.crt; #替换成您的证书文件的路径。
        ssl_certificate_key  cert/server.key; #替换成您的私钥文件的路径。
        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;
        ssl_ciphers  HIGH:!aNULL:!MD5; #加密套件。
        ssl_prefer_server_ciphers  on;
        charset utf8;

        #access_log  logs/host.access.log  main;

        location / {
            root   html/coolyiman-fe/dist;
            index  index.html index.htm;
        }
        #后端服务接口代理
        location ^~/apis/ {
            proxy_pass   http://127.0.0.1:8099/;

            limit_conn  one  100; #limit_conn one 100表示最大并发连接数100
            limit_conn perserver 1000;#limit_conn perserver 1000表示该服务提供的总连接数不得超过1000,超过请求的会被拒绝
            limit_req   zone=allips  burst=50  nodelay; #burst=50 表示最大延迟请求数量不大于50。 如果太过多的请求被限制延迟是不需要的 ,这时需要使用nodelay参数,服务器会立刻返回503状态码。

            # limit_conn one 40;          #连接数限制
            #带宽限制,对单个连接限数,如果一个ip两个连接,就是500x2k
            #limit_rate 500k;
        }


        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

修改完成后,重新加载配置文件

cd /usr/local/nginx/sbin/
./nginx -s reload

安装nodejs

  1. 安装必要的编译软件包
sudo yum install gcc gcc-c++
  1. 从源码下载 Nodejs(安装 12.X,确保 forever 可以运行)
cd /usr/local/src
wget https://npm.taobao.org/mirrors/node/latest-v12.x/node-v12.8.0-linux-x64.tar.gz
  1. 解压
tar xvf node-v12.8.0-linux-x64.tar.gz
  1. 移动并改名文件夹(规范点)
cd /usr/local/
mv /var/ftp/pub/node-v12.8.0-linux-x64 . //后面的.表示移动到当前目录
mv node-v12.8.0-linux-x64/ nodejs
  1. 让 npm 和 node 命令全局生效
    环境变量方式:
  • 加入环境变量,在 /etc/profile 文件末尾增加配置
vi /etc/profile
export PATH=$PATH:/usr/local/nodejs/bin
  • 执行命令使配置文件生效
source /etc/profile
  1. 查看 nodejs 是否安装成功
node -v
npm -v

安装PM2

  1. PM2(Process Manager 2 )是具有内置负载均衡器的Node.js应用程序的生产运行时和进程管理器。 它允许您永久保持应用程序活跃,无需停机即可重新加载它们,并促进常见的Devops任务。

  2. linux安装cnpm

npm install -g cnpm --registry=https://registry.npm.taobao.org
  1. 安装pm2
cnpm install pm2 -g // 或者就用npm install pm2 -g
  1. 启动服务
pm2 start app.js //启动app.js应用
pm2 start app.js --name demo //启动应用并设置name
  1. 创建开机自启动
pm2 startup
  1. 保存当前应用列表
pm2 save
  1. 查看是否启动项目在列表中
pm2 list
  1. 其他pm2的使用
  • 停止服务
pm2 stop all //停止所有应用
pm2 stop [AppName] //根据应用名停止指定应用
pm2 stop [ID]
  • 删除应用
pm2 delete all / /关闭并删除应用
pm2 delete [AppName] //根据应用名关闭并删除应用
pm2 delete [ID] //根据应用ID关闭并删除应用
  • 更新PM2
pm2 updatePM2
pm2 update
  • 监听模式
pm2 start app.js --watch //当文件发生变化,自动重启
  • 静态服务器
pm2 serve ./dist 9090 / /将目录dist作为静态服务器根目录,端口为9090
  • 启用群集模式(自动负载均衡)
pm2 start app.js -i max
  • 重新启动pm2
pm2 restart app.js
  • 0秒停机重新加载
pm2 reload app.js //重新启动所有进程,始终保持至少一个进程在运行
pm2 gracefulReload all //优雅地以群集模式重新加载所有应用程序
  • 日志查看
m2 logs / /查看所有应用日志
pm2 logs [Name] //根据指定应用名查看应用日志
pm2 logs [ID] //根据指定应用ID查看应用日志
  • 重启保存的应用列表
pm2 resurrect
  • 清除保存的应用列表
pm2 cleardump
linux 开机启动:
  1. 输入pm2 start 启动名称 (启动名称如www、app.js) (启动项目)

  2. 输入pm2 save (保存启动服务)

  3. 输入pm2 startup (设置开机启动)

  4. 输入pm2 save (保存启动服务)

  5. 可输入pm2 list 查看是否启动项目在列表中

  6. 可输入reboot重启后netstat -ntlp查看你的nodejs项目端口是否开启启动成功

注意:pm2 startup之后可能会在/etc/systemd/system中生成一个pm2-root.service文件,而不是在/etc/init.d中生成pm2-root.sh文件。可以在/etc/init.d中README中查看详情

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

推荐阅读更多精彩内容