打造Linux部署環(huán)境

簡介

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

通過學(xué)習(xí)本篇教程,相信你應(yīng)該對Linux操作系統(tǒng)有一定了解,并可以獨(dú)立部署項目

本篇采用CentOS 7x64-Minimal-1810

所涉及的軟件包:

完整zip包

軟件包

本篇教程涉及到的命令:

cd 、tar、unzip、cp、touch、vim 簡單用法、find、

ps、yum、choun、password、useradd、配置service服務(wù)、

cmake、make、npm、yarn

chkconfig --add、systemctl enable...

所包含的安裝項目

[圖片上傳失敗...(image-131037-1563686730613)]

1. 靜態(tài)網(wǎng)絡(luò)配置

在CentOS-Minimal 安裝后,ping www.baidu.com ping 不通,則需要配置網(wǎng)絡(luò)

  • 首先進(jìn)入cd /etc/sysconfig/network-scripts/ 目錄找到ifcfg-enpxx 文件,可以用ls命令來查看當(dāng)前目錄有哪些文件,該文件xx為隨機(jī),如果發(fā)現(xiàn)沒有該文件,則說明你電腦的網(wǎng)卡沒有被識別上,需要自行裝網(wǎng)卡驅(qū)動,一般都是能夠識別
5d32bb04d031729092
  • 使用 vi 命令 編輯改文件

使用說明

Linux是一個權(quán)限操作系統(tǒng),CentOS默認(rèn)為root的最高權(quán)限,其它操作系統(tǒng)則是以用戶的方式去登陸并不是以root最高權(quán)限登錄,當(dāng)你進(jìn)行寫的操作時,請加上sudo以獲取最高權(quán)限

5d32bcd5e991f23951

linux一共有7種文件類型,分別如下:

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

l: 軟鏈接(類似Windows的快捷方式)
(下面四種是特殊文件)
        b:塊設(shè)備文件(例如硬盤、光驅(qū)等)
        p:管道文件
        c:字符設(shè)備文件(例如貓等串口設(shè)備)
        s:套接口文件/數(shù)據(jù)接口文件(例如啟動一個MySql服務(wù)器時會產(chǎn)生一個mysql.sock文件)

文件權(quán)限對應(yīng)關(guān)系:

權(quán)限 對應(yīng)數(shù)字 意義
r 4 可讀
w 2 可寫
x 1 可執(zhí)行
rwx:代表文件所有者(u表示)權(quán)限,這里是root,root對該文件擁有讀寫執(zhí)行權(quán)限。
r-x :  代表所屬組(g表示)的權(quán)限,這里所屬組擁有對該文件讀和執(zhí)行的權(quán)限。
r-x :  代表其他人(o表示)的權(quán)限,這里和上面權(quán)限一樣。

具體權(quán)限可以參考這篇文章

  • 使用 vi 或 vim 配置網(wǎng)絡(luò)
5d32c01e9e46b82076
5d32c11080ed559038

配置說明:

請注意帶紅框的代碼!?。?
請將改為靜態(tài) BOOTPROTO=static
請將改為ONBOOT=yes

IPADDR=                  根據(jù)網(wǎng)關(guān)設(shè)置你自己想要的靜態(tài)ip地址
GATEWAY=                 網(wǎng)關(guān)
NETMASK=                 子網(wǎng)掩碼
DNS1=114.114.114.114     DNS

vim 使用說明:
    請使用最高權(quán)限編輯,在Linux下是嚴(yán)格區(qū)分大小寫的?。?!
鍵盤輸入:
    i:代表編輯
    w: 代表保存
    q:代表退出
    !: 代表取反
    怎么退出 ?  esc=>Shift+:=> wq
    怎么不保存退出 ? esc=>Shift+:=> q!

更多詳情使用請查閱相關(guān)資料?。?!
  • 重啟網(wǎng)絡(luò)
5d32cf4d30b1681467
service network restart

注意:
    如果你完成以上配置,ping 不通外網(wǎng),可以ping 通網(wǎng)關(guān),那么請你將DNS改為靜態(tài)
5d32d003cb76e70605

2. 源碼方式安裝 MySQL

  • 下載MySQL源碼
5d32d1311cf7569013
5d32d1c455c0f10026
5d32d2ab6fc5084761
  • 將下載好的源碼上傳至服務(wù)器
安裝包上傳  /usr/local/src 目錄下
5d32d38d7082b33325
  • 編譯并安裝

安裝編譯所需要的工具

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

說明:
    yum install '軟件名字' (Ubuntu 一般是 sudo apt-get install '軟件名字')
    參數(shù):
    -y  默認(rèn)yes

進(jìn)入剛剛上傳文件的目錄

cd /usr/local/src

解壓命令:
    tar 
    參數(shù):
        -z, --gzip, --gunzip, --ungzip    使用gzip命令處理備份文件
        -x, --extract, --get    從歸檔文件中解析文件
        -v, --verbose    顯示命令的執(zhí)行過程
        -f file, --file=file    指定備份文件,或設(shè)備,例如磁帶機(jī)/dev/st0
        -c, --create    創(chuàng)建新的歸檔文件

其他解壓命令:
    unzip 
    參數(shù):
        -v 執(zhí)行是時顯示詳細(xì)的信息。
        -C 壓縮文件中的文件名稱區(qū)分大小寫。
        -P< 密碼 > 使用 zip 的密碼選項。
        -d< 目錄 > 指定文件解壓縮后所要存儲的目錄。

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

MySQL5.7在安裝時需要boost庫,在這里也需要安裝,只需解壓即可。但是要注意boost軟件的版本,不要選錯版本。與MySQL5.7相對應(yīng)的版本是boost_1_59_0。

  • 創(chuàng)建運(yùn)行用戶
useradd -M -s /sbin/nologin mysql  //創(chuàng)建用戶mysql,不創(chuàng)建家目錄,不允許登陸系統(tǒng)
  • MySQL 配置
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \                       //指定mysql數(shù)據(jù)庫安裝目錄
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \                 //連接文件位置
-DSYSCONFDIR=/etc \                                             //指定配置文件目錄
-DSYSTEMD_PID_DIR=/usr/local/mysql \                            //進(jìn)程文件目錄
-DDEFAULT_CHARSET=utf8  \                                       //指定默認(rèn)使用的字符集編碼
-DDEFAULT_COLLATION=utf8_general_ci \                           //指定默認(rèn)使用的字符集校對規(guī)則
-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 \                         //數(shù)據(jù)庫文件
-DWITH_BOOST=/usr/local/boost-1.59.0 \                          //指定Boost庫的位置,mysql5.7必須添加該參數(shù)
-DWITH_SYSTEMD=1                                                //使系統(tǒng)支持MySQL數(shù)據(jù)庫

注意:如果在CMAKE的過程中有報錯(報錯多是環(huán)境包安裝錯誤),當(dāng)報錯解決后,需要把源碼目錄(/usr/local/mysql-5.7.26/)中的CMakeCache.txt文件刪除,然后再重新CMAKE,否則錯誤依舊

5d32d928b399478328
  • 編譯并安裝

make過程非常耗時,如果是用虛擬機(jī)做實驗,建議調(diào)整配置,添加處理器數(shù)量,make速度會快一點

make && make install
5d32d9f67562881635
  • 安裝完成后的調(diào)整
chown -R mysql:mysql /usr/local/mysql/
  • 修改配置文件

      mysql 5.7 版本和以前的有所不同,如果配置文件不做修改,則服務(wù)啟動失敗
    
5d32e4c0eaf0737708
如果沒有安裝vim
請運(yùn)行此命令: 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   //修改配置文件的權(quán)限

[圖片上傳失敗...(image-3ad981-1563686730614)]

  • 設(shè)置環(huán)境變量
echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
echo 'export PATH' >> /etc/profile
source /etc/profile   //使寫入生效
  • 初始化數(shù)據(jù)庫
cd /usr/local/mysql/
bin/mysqld \
--initialize-insecure \         //生成初始化密碼(5.7版本才有),實際會生成空密碼
--user=mysql \                  //指定管理用戶
--basedir=/usr/local/mysql \    //指定工作目錄
--datadir=/usr/local/mysql/data //指定數(shù)據(jù)文件目錄


如果執(zhí)行上面命令報錯!請將安裝好的MySQL刪除并重新安裝即可

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

# 再次運(yùn)行上面的命令
5d32ea5f7dde710110
  • 添加系統(tǒng)服務(wù)
cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
systemctl daemon-reload    //刷新識別mysqld.service服務(wù)
systemctl enable mysqld    //加入系統(tǒng)自啟動
systemctl start mysqld     //啟動服務(wù)
netstat -anpt | grep 3306  

如果 netstat 命令沒裝,請執(zhí)行下面這句話
yum -y install net-tools

ps -ef | grep mysql 該命令也能查詢出來
5d32ed0339ce648729
  • 修改數(shù)據(jù)庫密碼
mysqladmin -u root -p password "123456"  //-u 指定登陸用戶為root ,密碼為123456
5d32ee4052e7d41677
  • 使用新密碼登陸系統(tǒng)
mysql -u root -p
show databases;     //查看數(shù)據(jù)庫信息
  • 授權(quán)遠(yuǎn)程登陸數(shù)據(jù)庫

使用grant提升root權(quán)限,在mysql數(shù)據(jù)庫中進(jìn)行操作

grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
//第一個“*”代表所有數(shù)據(jù)庫,第二“*”代表所有表,賦予root權(quán)限 “%”代表所有服務(wù)器終端,可設(shè)為IP地址 密碼為“123456”

[圖片上傳失敗...(image-2751ea-1563686730614)]

  • 關(guān)閉防火墻
systemctl disable firewalld.service 
systemctl stop firewalld.service
setenforce 0
  • 使用navicat終端軟件遠(yuǎn)程登陸(windows端)
5d32efad36de976731

3. JDK 安裝

  • 將JDK文件上傳至/usr/local/src

  • 解壓文件

# 進(jìn)入目錄
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

  • 解壓文件&修改文件夾名字

# 進(jìn)入目錄
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

# 設(shè)置淘寶鏡像
npm config set registry https://registry.npm.taobao.org
# 查看鏡像是否設(shè)置成功
npm config get registry

# 安裝 docsify 該工具是一個優(yōu)秀編寫文檔的工具
npm i docsify-cli -g

5. Redis 安裝

將Redis安裝包文件上傳至/usr/local/src

解壓文件&修改文件夾名字

# 安裝編譯依賴
yum -y install gcc
# 進(jìn)入目錄
cd /usr/local/src
# 解壓文件
tar -zxvf ./redis-5.0.4.tar.gz -C ./..
# 退回上一級目錄
cd ..
# 進(jìn)入 redis源碼包
cd ./redis-5.0.4/
# 編譯 make 并 install
make install PREFIX=/usr/local/redis

配置Redis環(huán)境變量/etc/profile文件

# 配置Redis環(huán)境變量
echo "export PATH=$PATH:/usr/local/redis/bin" >>/etc/profile
# 生效配置
source /etc/profile
# 啟動redis
redis-server

設(shè)置 Redis 開機(jī)啟動

# 創(chuàng)建redis服務(wù)
vim /usr/lib/systemd/system/redis.service
# 增加一下內(nèi)容  注意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服務(wù)添加到開啟啟動項
sudo systemctl enable redis.service

6. Zookeeper 安裝

將Zookeeper安裝包文件上傳至/usr/local/src

解壓文件&修改文件夾名字

# 進(jìn)入目錄
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/
# 進(jìn)入zookeeper安裝目錄
cd ./zookeeper-3.5.5/
# 修改 /usr/local/zookeeper-3.5.5/conf/zoo_sample.cfg  =>zoo.cfg
mv ./zoo_sample.cfg ./zoo.cfg

# 創(chuàng)建 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環(huán)境變量/etc/profile文件

# 進(jìn)入 bin 目錄
cd ./bin/
# 配置環(huán)境變量 set Zookeeper

export ZOOKEEPER_HOME=/usr/local/zookeeper-3.5.5/
export PATH=$ZOOKEEPER_HOME/bin:$PATH
# 生效文件
source /etc/profile
# 啟動服務(wù)
zkServer.sh start
# 查看服務(wù)
ps -ef | grep zookeeper

設(shè)置 zookeeper開機(jī)啟動

# 在/etc/rc.d/init.d目錄新建zookeeper文件
touch /etc/init.d/zookeeper
# 設(shè)置權(quán)限
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"

# 設(shè)置開機(jī)啟動
chkconfig --add zookeeper

7. Nginx 安裝

# 添加Nginx存儲庫
sudo yum -y install epel-release
# 安裝Nginx
sudo yum -y install nginx
# 啟動Nginx
sudo systemctl start nginx
# 如果您正在運(yùn)行防火墻,請運(yùn)行以下命令以允許HTTP和HTTPS通信:(如果防火墻關(guān)了,可直接跳過)
# 允許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端口 有歡迎提示說明安裝成功?。。?# 設(shè)置Nginx 開機(jī)啟動
sudo systemctl enable nginx

# 使用find命令查詢nginx安裝目錄
find / -name "*nginx*"
  • 簡單部署
# 創(chuàng)建目錄
mkdir -p /usr/local/src/project
# 進(jìn)入目錄
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啟動服務(wù)文件 /usr/lib/systemd/system/nginx.service
# 重點關(guān)注 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf  這行配置
# 進(jìn)入/etc/nginx/nginx.conf配置  重點關(guān)注最后一行

# 進(jìn)入nginx 安裝目錄
cd /etc/nginx

# 將剛剛打包好的dist文件拷貝到 當(dāng)前目錄下modules文件夾下
cp -r /usr/local/src/project/interest/interest-web/dist/ ./modules/

 cp命令:進(jìn)行路徑拷貝時請加 -r 參數(shù)

# 編輯/conf.d/default.conf 文件
vim ./conf.d/default.conf

# 重啟nginx 服務(wù)
service nginx restart

# 測試
ip:端口  訪問測試

# 下面是具體的配置圖
5d33d4e3799bf50304
5d33d56ca446576642

[圖片上傳失敗...(image-77f83b-1563686730614)]

  • 部署效果圖
5d33d763d1f3b81109
  • yarn 安裝
1.在 CentOS, Fedora 和 RHEL 操作系統(tǒng)上,你可以通過我們的 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

解壓文件&修改文件夾名字

# 進(jìn)入目錄
cd /usr/local/src/

# 解壓
tar -zxvf ./kafka_2.12-2.3.0.tgz -C ./..
# 返回上一級目錄
cd ..
# 進(jìn)入kafka安裝目錄
cd ./kafka_2.12-2.3.0/
# 創(chuàng)建 logs文件夾
mkdir -p ./logs
# 修改配置文件
vim config/server.properties
# kafka是依賴于zookeeper 如果沒配置Linux服務(wù)請手動進(jìn)入安裝目錄啟動
service zookeeper status 查看啟動狀態(tài)
service zookeeper start
# 啟動 kafka
bin/kafka-server-start.sh config/server.properties &

# 如果報以下錯誤 請從bin目錄上一級運(yùn)行,否則找不到config下的配置
java.nio.file.NoSuchFileException: config/server.properties
5d33c059d223c58468
5d33c05f9e63a11566
  • 啟動兩個客戶端測試通訊是否正常
# 創(chuàng)建 TOPIC:使用 kafka-topics.sh 創(chuàng)建單分區(qū)單副本的 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
# 啟動消息生產(chǎn)者服務(wù)(需要保證kafka服務(wù)運(yùn)行環(huán)境所在主機(jī)運(yùn)行9092端口進(jìn)行連接訪問,否則服務(wù)啟動)
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
# 啟動kafka服務(wù)消費(fèi)者客戶端進(jìn)行監(jiān)聽消息的接收
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

解壓文件&修改文件夾名字

# 創(chuàng)建 git 用戶
sudo adduser git
# 切換到 git 用戶
su git
# 進(jìn)入目錄
cd /usr/local/src
# 解壓文件
tar -zxvf ./linux_amd64.tar.gz -C /home/git/
# 切換到 /home/git/gogs/scripts 目錄 執(zhí)行SQL腳本
mysql -u root -p
# 執(zhí)行SQL腳本
source mysql.sql
# 查看gogs數(shù)據(jù)庫
show databases;

# 進(jìn)入gogs目錄
cd /home/git/gogs/
# 進(jìn)行首次配置
./gogs web

設(shè)置 Gogs開機(jī)啟動

# 切換到 root 賬戶
su root
# 將 gogs 文件復(fù)制到 /etc/init.d 目錄下
sudo cp /home/git/gogs/scripts/init/centos/gogs /etc/init.d/
# 增加執(zhí)行權(quán)限
sudo chmod +x /etc/init.d/gogs
# 復(fù)制 service
cp /home/git/gogs/scripts/systemd/gogs.service /etc/systemd/system/
# 開啟 gogs 服務(wù)
service gogs start

# 設(shè)置開機(jī)啟動
systemctl enable gogs.service

添加git用戶出現(xiàn)不在 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

檢驗開機(jī)啟動是否成功

ps -ef | grep 服務(wù)名
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容