打造Linux部署环境

简介

本篇教程,就地取材,拿来即用

通过学习本篇教程,相信你应该对Linux操作系统有一定了解,并可以独立部署项目

本篇采用CentOS 7x64-Minimal-1810

所涉及的软件包:

完整zip包

软件包

本篇教程涉及到的命令:

cd 、tar、unzip、cp、touch、vim 简单用法、find、

ps、yum、choun、password、useradd、配置service服务、

cmake、make、npm、yarn

chkconfig --add、systemctl enable...

所包含的安装项目

[图片上传失败...(image-131037-1563686730613)]

1. 静态网络配置

在CentOS-Minimal 安装后,ping www.baidu.com ping 不通,则需要配置网络

  • 首先进入cd /etc/sysconfig/network-scripts/ 目录找到ifcfg-enpxx 文件,可以用ls命令来查看当前目录有哪些文件,该文件xx为随机,如果发现没有该文件,则说明你电脑的网卡没有被识别上,需要自行装网卡驱动,一般都是能够识别
5d32bb04d031729092
  • 使用 vi 命令 编辑改文件

使用说明

Linux是一个权限操作系统,CentOS默认为root的最高权限,其它操作系统则是以用户的方式去登陆并不是以root最高权限登录,当你进行写的操作时,请加上sudo以获取最高权限

5d32bcd5e991f23951

linux一共有7种文件类型,分别如下:

-:普通文件
d:目录文件

l: 软链接(类似Windows的快捷方式)
(下面四种是特殊文件)
        b:块设备文件(例如硬盘、光驱等)
        p:管道文件
        c:字符设备文件(例如猫等串口设备)
        s:套接口文件/数据接口文件(例如启动一个MySql服务器时会产生一个mysql.sock文件)

文件权限对应关系:

权限 对应数字 意义
r 4 可读
w 2 可写
x 1 可执行
rwx:代表文件所有者(u表示)权限,这里是root,root对该文件拥有读写执行权限。
r-x :  代表所属组(g表示)的权限,这里所属组拥有对该文件读和执行的权限。
r-x :  代表其他人(o表示)的权限,这里和上面权限一样。

具体权限可以参考这篇文章

  • 使用 vi 或 vim 配置网络
5d32c01e9e46b82076
5d32c11080ed559038

配置说明:

请注意带红框的代码!!!

请将改为静态 BOOTPROTO=static
请将改为ONBOOT=yes

IPADDR=                  根据网关设置你自己想要的静态ip地址
GATEWAY=                 网关
NETMASK=                 子网掩码
DNS1=114.114.114.114     DNS

vim 使用说明:
    请使用最高权限编辑,在Linux下是严格区分大小写的!!!
键盘输入:
    i:代表编辑
    w: 代表保存
    q:代表退出
    !: 代表取反
    怎么退出 ?  esc=>Shift+:=> wq
    怎么不保存退出 ? esc=>Shift+:=> q!

更多详情使用请查阅相关资料!!!
  • 重启网络
5d32cf4d30b1681467
service network restart

注意:
    如果你完成以上配置,ping 不通外网,可以ping 通网关,那么请你将DNS改为静态
5d32d003cb76e70605

2. 源码方式安装 MySQL

  • 下载MySQL源码
5d32d1311cf7569013
5d32d1c455c0f10026
5d32d2ab6fc5084761
  • 将下载好的源码上传至服务器
安装包上传  /usr/local/src 目录下
5d32d38d7082b33325
  • 编译并安装

安装编译所需要的工具

yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake make

说明:
    yum install '软件名字' (Ubuntu 一般是 sudo apt-get install '软件名字')
    参数:
    -y  默认yes

进入刚刚上传文件的目录

cd /usr/local/src

解压命令:
    tar 
    参数:
        -z, --gzip, --gunzip, --ungzip    使用gzip命令处理备份文件
        -x, --extract, --get    从归档文件中解析文件
        -v, --verbose    显示命令的执行过程
        -f file, --file=file    指定备份文件,或设备,例如磁带机/dev/st0
        -c, --create    创建新的归档文件

其他解压命令:
    unzip 
    参数:
        -v 执行是时显示详细的信息。
        -C 压缩文件中的文件名称区分大小写。
        -P< 密码 > 使用 zip 的密码选项。
        -d< 目录 > 指定文件解压缩后所要存储的目录。

移动命令:
    mv
5d32d51fab67779291
5d32d597aff3c83935
5d32d79ae6c4514398

MySQL5.7在安装时需要boost库,在这里也需要安装,只需解压即可。但是要注意boost软件的版本,不要选错版本。与MySQL5.7相对应的版本是boost_1_59_0。

  • 创建运行用户
useradd -M -s /sbin/nologin mysql  //创建用户mysql,不创建家目录,不允许登陆系统
  • MySQL 配置
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \                       //指定mysql数据库安装目录
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \                 //连接文件位置
-DSYSCONFDIR=/etc \                                             //指定配置文件目录
-DSYSTEMD_PID_DIR=/usr/local/mysql \                            //进程文件目录
-DDEFAULT_CHARSET=utf8  \                                       //指定默认使用的字符集编码
-DDEFAULT_COLLATION=utf8_general_ci \                           //指定默认使用的字符集校对规则
-DWITH_INNOBASE_STORAGE_ENGINE=1 \                              //存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \                               //存储引擎
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \                             //存储引擎
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \                            //存储引擎
-DMYSQL_DATADIR=/usr/local/mysql/data \                         //数据库文件
-DWITH_BOOST=/usr/local/boost-1.59.0 \                          //指定Boost库的位置,mysql5.7必须添加该参数
-DWITH_SYSTEMD=1                                                //使系统支持MySQL数据库

注意:如果在CMAKE的过程中有报错(报错多是环境包安装错误),当报错解决后,需要把源码目录(/usr/local/mysql-5.7.26/)中的CMakeCache.txt文件删除,然后再重新CMAKE,否则错误依旧

5d32d928b399478328
  • 编译并安装

make过程非常耗时,如果是用虚拟机做实验,建议调整配置,添加处理器数量,make速度会快一点

make && make install
5d32d9f67562881635
  • 安装完成后的调整
chown -R mysql:mysql /usr/local/mysql/
  • 修改配置文件

      mysql 5.7 版本和以前的有所不同,如果配置文件不做修改,则服务启动失败
    
5d32e4c0eaf0737708
如果没有安装vim
请运行此命令: yum -y install vim

vim /etc/my.cnf

[client]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock
[mysql]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock
[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES

chown mysql:mysql /etc/my.cnf   //修改配置文件的权限

[图片上传失败...(image-3ad981-1563686730614)]

  • 设置环境变量
echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
echo 'export PATH' >> /etc/profile
source /etc/profile   //使写入生效
  • 初始化数据库
cd /usr/local/mysql/
bin/mysqld \
--initialize-insecure \         //生成初始化密码(5.7版本才有),实际会生成空密码
--user=mysql \                  //指定管理用户
--basedir=/usr/local/mysql \    //指定工作目录
--datadir=/usr/local/mysql/data //指定数据文件目录


如果执行上面命令报错!请将安装好的MySQL删除并重新安装即可

# 删除
rm -rf /usr/local/mysql
# 重新安装
cd /usr/local/mysql-5.7.26
make install

# 再次运行上面的命令
5d32ea5f7dde710110
  • 添加系统服务
cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
systemctl daemon-reload    //刷新识别mysqld.service服务
systemctl enable mysqld    //加入系统自启动
systemctl start mysqld     //启动服务
netstat -anpt | grep 3306  

如果 netstat 命令没装,请执行下面这句话
yum -y install net-tools

ps -ef | grep mysql 该命令也能查询出来
5d32ed0339ce648729
  • 修改数据库密码
mysqladmin -u root -p password "123456"  //-u 指定登陆用户为root ,密码为123456
5d32ee4052e7d41677
  • 使用新密码登陆系统
mysql -u root -p
show databases;     //查看数据库信息
  • 授权远程登陆数据库

使用grant提升root权限,在mysql数据库中进行操作

grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
//第一个“*”代表所有数据库,第二“*”代表所有表,赋予root权限 “%”代表所有服务器终端,可设为IP地址 密码为“123456”

[图片上传失败...(image-2751ea-1563686730614)]

  • 关闭防火墙
systemctl disable firewalld.service 
systemctl stop firewalld.service
setenforce 0
  • 使用navicat终端软件远程登陆(windows端)
5d32efad36de976731

3. JDK 安装

  • 将JDK文件上传至/usr/local/src

  • 解压文件

# 进入目录
cd /usr/local/src
# 解压文件
tar -zxvf ./jdk-8u211-linux-x64.tar.gz -C ./..
  • 配置profile文件
vim /etc/profile

# 在其末尾加上 set JDK

export JAVA_HOME=/usr/local/jdk1.8.0_211
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH

# 使配置文件生效
source /etc/profile

# 查看JDK 版本
java -version

注意: 请注意JDK安装目录!!!

4. Node 安装

  • 将Node安装包文件上传至/usr/local/src

  • 解压文件&修改文件夹名字

# 进入目录
cd /usr/local/src
# 解压文件
tar -zxvf ./node-v12.6.0-linux-x64.tar.gz -C ./..
# 退回上一级目录
cd ..
# 修改文件名
mv ./node-v12.6.0-linux-x64/ ./node-v12.6.0
  • 配置Node
ln -s /usr/local/node-v12.6.0/bin/node /usr/bin/node
ln -s /usr/local/node-v12.6.0/bin/npm /usr/bin/npm
# 检查 Node是否安装成功
 node -v
 npm -v

# 设置淘宝镜像
npm config set registry https://registry.npm.taobao.org
# 查看镜像是否设置成功
npm config get registry

# 安装 docsify 该工具是一个优秀编写文档的工具
npm i docsify-cli -g

5. Redis 安装

将Redis安装包文件上传至/usr/local/src

解压文件&修改文件夹名字

# 安装编译依赖
yum -y install gcc
# 进入目录
cd /usr/local/src
# 解压文件
tar -zxvf ./redis-5.0.4.tar.gz -C ./..
# 退回上一级目录
cd ..
# 进入 redis源码包
cd ./redis-5.0.4/
# 编译 make 并 install
make install PREFIX=/usr/local/redis

配置Redis环境变量/etc/profile文件

# 配置Redis环境变量
echo "export PATH=$PATH:/usr/local/redis/bin" >>/etc/profile
# 生效配置
source /etc/profile
# 启动redis
redis-server

设置 Redis 开机启动

# 创建redis服务
vim /usr/lib/systemd/system/redis.service
# 增加一下内容  注意redis安装目录和配置文件目录
[Unit]
Description=The redis-server Process Manager
After=syslog.target network.target

[Service]
Type=forking
PIDFile=/var/run/redis_6379.pid
ExecStart=/usr/local/redis/bin/redis-server
ExecReload=/bin/kill -USR2 $MAINPID
ExecStop=/bin/kill -SIGINT $MAINPID

[Install]
WantedBy=multi-user.target

# 将 redis服务添加到开启启动项
sudo systemctl enable redis.service

6. Zookeeper 安装

将Zookeeper安装包文件上传至/usr/local/src

解压文件&修改文件夹名字

# 进入目录
cd /usr/local/src
# 解压文件
tar -zxvf ./apache-zookeeper-3.5.5-bin.tar.gz -C ./..
# 退回上一级目录
cd ..
# 修改文件夹名字
mv ./apache-zookeeper-3.5.5-bin/ ./zookeeper-3.5.5/
# 进入zookeeper安装目录
cd ./zookeeper-3.5.5/
# 修改 /usr/local/zookeeper-3.5.5/conf/zoo_sample.cfg  =>zoo.cfg
mv ./zoo_sample.cfg ./zoo.cfg

# 创建 data和log目录
mkdir -p ./data
mkdir -p ./log
# 修改 zoo.cfg 配置
dataDir=/usr/local/zookeeper-3.5.5/data
dataLogDir=/usr/local/zookeeper-3.5.5/logs

配置Zookeeper环境变量/etc/profile文件

# 进入 bin 目录
cd ./bin/
# 配置环境变量 set Zookeeper

export ZOOKEEPER_HOME=/usr/local/zookeeper-3.5.5/
export PATH=$ZOOKEEPER_HOME/bin:$PATH
# 生效文件
source /etc/profile
# 启动服务
zkServer.sh start
# 查看服务
ps -ef | grep zookeeper

设置 zookeeper开机启动

# 在/etc/rc.d/init.d目录新建zookeeper文件
touch /etc/init.d/zookeeper
# 设置权限
chmod +x /etc/init.d/zookeeper
# 编辑zookeeper

#!/bin/bash
#chkconfig: 2345 10 90
#description: service zookeeper
export JAVA_HOME=/usr/local/jdk1.8.0_211
export ZOO_LOG_DIR=/usr/local/zookeeper-3.5.5/logs
ZOOKEEPER_HOME=/usr/local/zookeeper-3.5.5/
su root ${ZOOKEEPER_HOME}/bin/zkServer.sh "$1"

# 设置开机启动
chkconfig --add zookeeper

7. Nginx 安装

# 添加Nginx存储库
sudo yum -y install epel-release
# 安装Nginx
sudo yum -y install nginx
# 启动Nginx
sudo systemctl start nginx
# 如果您正在运行防火墙,请运行以下命令以允许HTTP和HTTPS通信:(如果防火墙关了,可直接跳过)
# 允许http通信
sudo firewall-cmd --permanent --zone=public --add-service=http
# 允许https通信
sudo firewall-cmd --permanent --zone=public --add-service=https
# 重启防火墙
sudo firewall-cmd --reload
# 测试
浏览器访问  ip:80端口 有欢迎提示说明安装成功!!!
# 设置Nginx 开机启动
sudo systemctl enable nginx

# 使用find命令查询nginx安装目录
find / -name "*nginx*"
  • 简单部署
# 创建目录
mkdir -p /usr/local/src/project
# 进入目录
cd /usr/local/src/project
# git clone 克隆项目
git clone https://github.com/Big-Chinese-Cabbage/interest.git
# 本次只部署web前端页面,有兴趣可以研究这位GitHub的项目
cd ./interest/interest-web/
# 安装启动依赖
yarn install
# 启动项目
npm run serve

# 打包命令 得到 dist文件
npm run build

###### 下面开始 Nginx 部署
# 使用 find 查找 nginx安装目录
find / -name "*nginx*"

# 我们先来查看一下nginx启动服务文件 /usr/lib/systemd/system/nginx.service
# 重点关注 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf  这行配置
# 进入/etc/nginx/nginx.conf配置  重点关注最后一行

# 进入nginx 安装目录
cd /etc/nginx

# 将刚刚打包好的dist文件拷贝到 当前目录下modules文件夹下
cp -r /usr/local/src/project/interest/interest-web/dist/ ./modules/

 cp命令:进行路径拷贝时请加 -r 参数

# 编辑/conf.d/default.conf 文件
vim ./conf.d/default.conf

# 重启nginx 服务
service nginx restart

# 测试
ip:端口  访问测试

# 下面是具体的配置图
5d33d4e3799bf50304
5d33d56ca446576642

[图片上传失败...(image-77f83b-1563686730614)]

  • 部署效果图
5d33d763d1f3b81109
  • yarn 安装
1.在 CentOS, Fedora 和 RHEL 操作系统上,你可以通过我们的 RPM 包仓库来安装 Yarn。
sudo wget https://dl.yarnpkg.com/rpm/yarn.repo -O /etc/yum.repos.d/yarn.repo
2.配置 Node 源仓库
curl --silent --location https://rpm.nodesource.com/setup_6.x | bash -
# 安装 yarn
sudo yum install yarn
# 查看版本
yarn --version
5d33c81f52a1256046

8. Kafka 安装&简单使用

将kafak安装包文件上传至/usr/local/src

解压文件&修改文件夹名字

# 进入目录
cd /usr/local/src/

# 解压
tar -zxvf ./kafka_2.12-2.3.0.tgz -C ./..
# 返回上一级目录
cd ..
# 进入kafka安装目录
cd ./kafka_2.12-2.3.0/
# 创建 logs文件夹
mkdir -p ./logs
# 修改配置文件
vim config/server.properties
# kafka是依赖于zookeeper 如果没配置Linux服务请手动进入安装目录启动
service zookeeper status 查看启动状态
service zookeeper start
# 启动 kafka
bin/kafka-server-start.sh config/server.properties &

# 如果报以下错误 请从bin目录上一级运行,否则找不到config下的配置
java.nio.file.NoSuchFileException: config/server.properties
5d33c059d223c58468
5d33c05f9e63a11566
  • 启动两个客户端测试通讯是否正常
# 创建 TOPIC:使用 kafka-topics.sh 创建单分区单副本的 topic test:
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
# 查看 topic 列表:
bin/kafka-topics.sh --list --zookeeper localhost:2181
# 启动消息生产者服务(需要保证kafka服务运行环境所在主机运行9092端口进行连接访问,否则服务启动)
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
# 启动kafka服务消费者客户端进行监听消息的接收
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning

注意以上操作:请注意目录!!!
5d33c20aab5a747797

[图片上传失败...(image-7bdc16-1563686730614)]

5d33c2b8eb9c683347

9. 私有Git仓库之 Gogs安装

将Gogs安装包文件上传至/usr/local/src

解压文件&修改文件夹名字

# 创建 git 用户
sudo adduser git
# 切换到 git 用户
su git
# 进入目录
cd /usr/local/src
# 解压文件
tar -zxvf ./linux_amd64.tar.gz -C /home/git/
# 切换到 /home/git/gogs/scripts 目录 执行SQL脚本
mysql -u root -p
# 执行SQL脚本
source mysql.sql
# 查看gogs数据库
show databases;

# 进入gogs目录
cd /home/git/gogs/
# 进行首次配置
./gogs web

设置 Gogs开机启动

# 切换到 root 账户
su root
# 将 gogs 文件复制到 /etc/init.d 目录下
sudo cp /home/git/gogs/scripts/init/centos/gogs /etc/init.d/
# 增加执行权限
sudo chmod +x /etc/init.d/gogs
# 复制 service
cp /home/git/gogs/scripts/systemd/gogs.service /etc/systemd/system/
# 开启 gogs 服务
service gogs start

# 设置开机启动
systemctl enable gogs.service

添加git用户出现不在 sudoers 文件中问题

百度云-Web 安装

# 一键部署脚本
wget -N --no-check-certificate "https://raw.githubusercontent.com/user1121114685/baidupcsweb/master/BDW.sh" && chmod +x BDW.sh && bash BDW.sh
# 按照提交既可以部署了
# 建议使用BDUSS来登录,获取BDUSS登录方式可以百度一下
  • 效果图

[图片上传失败...(image-74d176-1563686730614)]

5d33e3962a8b935615

检验开机启动是否成功

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