可能是目前最詳細簡明的CentOS7安裝與管理教程

說在前面

俗話說好記性不如爛筆頭,考慮到每次安裝部署都要各種查閱資料,很是不便,故決定重頭開始安裝一遍常用服務,作為以后的參照。


第一步:確定發行版本,安裝系統

首先明確自己需要的版本,本人不習慣桌面版(作為服務器,推薦熟悉命令行系統,畢竟效率上不是一個量級的),而且也不喜歡集成好的第三方鏡像,故直接在官網下載最小化版本Minimal ISO。這里我們以目前最新版本CentOS7 64位系統為例進行安裝(具體安裝過程不在敘述,大家肯定可以的)。

第二步:root 密碼重置

首次安裝, root 賬號密碼默認為空(當然也可以在安裝過程中設置),但本人經常忘記密碼,所以難免有要重置密碼的時候。

  1. 重啟系統,開機過程中,出現下圖畫面時,通過快速按下來暫停引導程序(對手速自信的同學請無視),如圖:

    系統啟動界面

  2. 使用選擇第一行(背景高亮即為選中),按下鍵盤上的e,進入編輯模式;

  3. 將光標一直移動到 LANG=en_US.UTF-8 后面,空格,再追加init=/bin/sh。這里特別注意,需要寫在UTF-8后,保持在同一行,并注意空格。由于屏幕太小,會自動添加\換行,這個是正常的。如圖:


    編輯模式
  4. 按下CTRL+X進行引導啟動,成功后進入該界面,如圖:

  1. 接下來逐步輸入以下命令:
    1. 掛載根目錄
      mount -o remount, rw /
    2. 選擇要修改密碼的用戶名,這里選擇root用戶進行修改,可以更換為你要修改的用戶
      passwd root
    3. 輸入2次一樣的新密碼,注意輸入密碼的時候屏幕上不會有字符出現。
      如果輸入的密碼太簡單,會提示警告(BAD PASSWORD:The password fails the dictionary check - it is too simplistic/systematic),可以無視它,繼續輸入密碼,不過建議還是設置比較復雜一些的密碼,以保證安全性
    4. 如果已經開啟了SElinux(這個后面會講),則需要輸入以下命令
      touch /.autorelabel
    5. 最后輸入以下命令重啟系統即可
      exec /sbin/initexec /sbin/reboot

第三步:開啟網卡

因為最小化安裝以后,centos 默認未開啟網卡,所以首先需要開啟網卡:

  1. 執行命令cd /etc/sysconfig/network-scripts,看到下圖:
    網卡配置目錄
  2. 執行命令vi ifcfg-ens33(vi/vim編輯器用法相信小伙伴都很熟悉了,這里不再涉及),將 ONBOOT=no 改為 ONBOOT=yes,如圖:
  3. 由于我是在虛擬機里安裝的centos,同時作為服務供給其他局域網用戶使用,所以選擇橋接模式,將centos的IP、網關、DNS等信息進行配置,如圖:

BOOTPROTO=dhcp -->BOOTPROTO=static IP獲取方式改為靜態獲取
ZONE=public firewalld zone=piblic(公共):在公共區域內使用,不能相信網絡內其他計算機不會對你造成危害,只能接受經過選取的連接。
PADDR=10.82.17.71 IP地址
ATEWAY=10.82.17.1 網關 ,與虛擬機虛擬網卡VMnet8中設置的網關保持一致
ETMASK=255.255.255.0 子網掩碼
DNS1=10.82.1.4
DNS2=10.82.1.6

然后執行systemctl restart network,重啟網絡服務


測試網絡是否連通:ping www.baidu.com

出現以下信息,說明可以正常訪問互聯網了(至于上圖為什么畫風變了,額,這個純屬個人喜好,小伙伴可以自己選擇喜歡的終端工具以及主題配色)

第四步:關閉 SELinux

SELinux(Security-Enhanced Linux) 是美國國家安全局(NSA)對于強制訪問控制的實現,是 Linux歷史上最杰出的新安全子系統。NSA是在Linux社區的幫助下開發了一種訪問控制體系,在這種訪問控制體系的限制下,進程只能訪問那些在他的任務中所需要文件。
SELinux是一種基于 域-類型 模型(domain-type)的強制訪問控制(MAC)安全系統,它由NSA編寫并設計成內核模塊包含到內核中,相應的某些安全相關的應用也被打了SELinux的補丁,最后還有一個相應的安全策略。任何程序對其資源享有完全的控制權。假設某個程序打算把含有潛在重要信息的文件扔到/tmp目錄下,那么在DAC情況下沒人能阻止他。SELinux提供了比傳統的UNIX權限更好的訪問控制。

但是,很多服務都有SELinux的限制,比如常見的/tmp文件夾無訪問權限,改起來頗為麻煩,個人使用還是關閉SELinux,省心。

查看SELinux狀態
執行命令:getenforce


如上圖顯示Enforcing,說明SELinux處于開啟狀態。

臨時關閉

##設置SELinux 成為permissive模式
##setenforce 1 設置SELinux 成為enforcing模式
setenforce 0

永久關閉
直接修改配置文件
執行命令:vi /etc/selinux/config

SELINUX=enforcing改為SELINUX=disabled
然后執行命令reboot重啟系統生效
再次查看,狀態已變為disabled

第五步:防火墻基礎配置

在centos7時代防火墻已由iptable轉向firewalld,既然本文講的是centos7,那么我們就直接接受并適應它。??
在此之前,要提一提systemctl

systemd 是一個 Linux 系統基礎組件的集合,提供了一個系統和服務管理器,運行為 PID 1 并負責啟動其它程序。功能包括:支持并行化任務;同時采用 socket 式與 D-Bus 總線式激活服務;按需啟動守護進程(daemon);利用 Linux 的 cgroups 監視進程;支持快照和系統恢復;維護掛載點和自動掛載點;各服務間基于依賴關系進行精密控制。systemd 支持 SysV 和 LSB 初始腳本,可以替代 sysvinit。除此之外,功能還包括日志進程、控制基礎系統配置,維護登陸用戶列表以及系統賬戶、運行時目錄和設置,可以運行容器和虛擬機,可以簡單的管理網絡配置、網絡時間同步、日志轉發和名稱解析等。

簡單說就是:systemctl是CentOS7的服務管理工具中主要的工具,它融合之前service和chkconfig的功能于一體。在系統服務管理中推薦使用systemctl來管理。

下面以firewalld服務為例:

  1. firewalld服務啟用/停用

啟動一個服務:systemctl start firewalld.service
關閉一個服務:systemctl stop firewalld.service
重啟一個服務:systemctl restart firewalld.service
顯示一個服務的狀態:systemctl status firewalld.service
在開機時啟用一個服務:systemctl enable firewalld.service
在開機時禁用一個服務:systemctl disable firewalld.service
查看服務是否開機啟動:systemctl is-enabled firewalld.service
查看已啟動的服務列表:systemctl list-unit-files|grep enabled
查看啟動失敗的服務列表:systemctl --failed

2.配置firewalld-cmd

查看版本: firewall-cmd –version
查看幫助: firewall-cmd –help
顯示狀態: firewall-cmd –state
查看所有打開的端口: firewall-cmd –zone=public –list-ports
更新防火墻規則: firewall-cmd –reload
查看區域信息: firewall-cmd –get-active-zones
查看指定接口所屬區域: firewall-cmd –get-zone-of-interface=eth0
拒絕所有包:firewall-cmd –panic-on
取消拒絕狀態: firewall-cmd –panic-off
查看是否拒絕: firewall-cmd –query-panic

3.端口管理:

添加: firewall-cmd --zone=public --add-port=80/tcp --permanent (--permanent 永久生效,沒有此參數重啟后失效)
重新載入:firewall-cmd --reload
查看:firewall-cmd --zone= public --query-port=80/tcp
刪除:firewall-cmd --zone= public --remove-port=80/tcp --permanent

正式環境下,看需要選擇是否使用防火墻,這里為了方便后續配置,就先將其關閉:

關閉防火墻 systemctl stop firewalld
禁止開機自啟systemctl disable firewalld
查看防火墻狀態systemctl status firewalld

防火墻狀態

第六步:添加常用yum源(軟件包)

linux下軟件安裝方式有很多,比如RMP、YUM、源代碼安裝等。其中CentOS 內置的yum命令安裝非常的簡單實用,能自動幫助我們解決依賴,在此推薦yum方式安裝軟件應用,但CentOS 最小化安裝后,內置的yum源可用的軟件偏少或者版本過低,通常我們需要使用一些第三方的yum源,這里向大家推薦兩個比較常用和權威的yum源,EPEL和REMI。
EPEL

EPEL 是 Extra Packages for Enterprise Linux 的縮寫(EPEL),是用于 Fedora-based Red Hat Enterprise Linux (RHEL) 的一個高質量軟件源,所以同時也適用于 CentOS 或者 Scientific Linux 等發行版。

REMI

Remi repository 是包含最新版本 PHP 和 MySQL 包的 Linux 源,由 Remi 提供維護。有個這個源之后,使用 YUM 安裝或更新 PHP、MySQL、phpMyAdmin 等服務器相關程序的時候就非常方便了。

首先查看目前系統中已存在的yum源:yum repolist

image

可以看到目前系統yum源有三個,接下來我們開始添加新的yum源。

由于現在安裝 REMI源的時候會自動安裝EPEL作為依賴包。所以我們只需要直接安裝REMI即可:yum install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm


然后確認,安裝完畢


再次查看yum repolist

可以看到,我們已經多出了兩個yum源(后續可繼續增加其他源,這里就不再補充了)。
可在cd /etc/yum.repos.d 中查看對應repo文件。

接下來在安裝軟件之前,我們先來熟悉下yum常用命令:

yum repolist all: 顯示所有倉庫
yum repolist 或 yum repolist enabled: 顯示可用倉庫
yum repolist disabled:顯示禁用倉庫
yum list 或 yum list all:顯示所有的程序包
yum list available:顯示可安裝的程序包
yum list updates:顯示可更新程序包
yum list installed:顯示已安裝程序包
yum list recent: 顯示最近新增的程序包
yum search xxx:搜索xxx程序包
yum install xxx :安裝xxx程序包
yum update xxx :升級xxx程序包
yum remove xxx 或 yum erase xxx:卸載xxx程序包
yum info xxx:查看程序包xxx信息
yum deplist xxx:查看程序包xxx依賴
yum clean all :清理本地緩存
yum clean plugins :清除插件緩存
yum makecache:構建緩存
yum history:查看yum事務歷史

我們先執行命令:yum makecache 把服務器的包信息下載到本地電腦緩存起來,以提高搜索 、安裝軟件的速度,如圖:

第七步:軟件應用安裝與配置

首先我們從常規的LMAP套裝開始:

1. MariaDB:

CentOS 6 或早期的版本中提供的是 MySQL 的服務器/客戶端安裝包,但 CentOS 7 已使用了 MariaDB 替代了默認的 MySQL。MariaDB數據庫管理系統是MySQL的一個分支,主要由開源社區在維護,采用GPL授權許可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能輕松成為MySQL的代替品。

在這里先介紹下常用的RPM命令:

查詢軟件包
rpm -q xxx
rpm -qp ***.rpm: 獲取當前目錄下的rpm包相關信息
rpm -qa | less :列出所有已安裝的軟件包
rpm -qa | grep xxx :列出所有被安裝的xxx
rpm -qf /usr/sbin/httpd :查看某個文件屬于哪個軟件包,可以是普通文件或可執行文件,跟文件的絕對路徑
rpm -qi xxx:列出已安裝的xxx包的標準詳細信息
rpm -ql xxx:列出rpm包xxx的文件內容

安裝軟件包
rpm -ivh ***.rpm:其中i表示安裝,v表示顯示安裝過程,h表示顯示進度

升級軟件包
rpm -Uvh ***.rpm

刪除軟件包
rpm -e xxx
rpm -e -–nodeps xxx:不考慮依賴包
rpm -e –-allmatches xxx:刪除所有跟xxx匹配的所有版本的包

1.1 安裝

首先查看系統是否安裝過mariadb:rpm -qa | grep mariadb

先卸載系統中的mariadb:rpm -e --nodeps mariadb-libs-****.x86_64

查看可安裝版本:yum list mariadb*

這里要說明一下:

出于實用的目的,MariaDB是同一MySQL版本的二進制替代品(例如MySQL 5.1->MariaDB 5.1, MariaDB5.2和MariaDB 5.3是兼容的。MySQL 5.5將會和MariaDB 5.5保持兼容)。簡單說5.x就是為了兼容MySQL5.x的,接口幾乎一致,體驗上幾乎無差別。
但是從2012年11月12日發布的mariadb10.0.0開始,不在依照MySQL的版本號,10.0.x版本是以5.5版為基礎,加入移植自MySQL5.6版的新功能和自行開發的新功能。

所以,為了更好的兼容已有MySQL(5.6以前)版本,這里我們不安裝最新版marisdb10,而是選擇5.5版本。

這里我們安裝mariadbmariadb-server即可。
執行命令yum install -y mariadb mariadb-server


程序會自動分析其需要的依賴并下載安裝,我們靜等完成就好。



到此,mariadb安裝結束。

1.2 啟動配置

啟動mariadb:systemctl start mariadb
查看運行狀態:systemctl status mariadb


設置開啟自啟:systemctl enable mariadb

1.3 密碼配置

登陸數據庫:mysql -u root -p


首次安裝后,root賬號默認密碼為空,下面我們為root賬號設置密碼
執行命令:mysql_secure_installation


使用剛設置的密碼登陸數據庫:
mysql -u root -p

1.4 字符集與排序規則

接下來,讓我么你看下mariadb數據庫字符集(Character set)和排序規則(Collation):
執行:show variables like "%character%";show variables like "%collation%";

這里再普及下字符集的概念:

character_set_client: 代表客戶端字符集,客戶端最簡單的來說,就是指命令行,或者其它操作數據庫的網頁,應用等等,客戶端字符集就代表了用戶輸入的字符,用什么字符集來編碼。
character_set_connection: 代表與服務器連接層的字符集,mysql是連接mysqld服務器的客戶端,兩者連接層,采用的字符集。
character_set_database: 數據庫采用的字符集。
character_set_filesystem: 文件采用的肯定是二進制最合適,不用修改。
character_set_result: 結果字符集,返回結果時采用的字符集。
character_set_server: mysql服務器采用的字符集,也就是操作默認的字符集。
character_set_system: 系統元數據(字段名等)字符集,比如我們輸入的命令'insert ...'這些語句字符串采用的字符集。
collation_類同

為了保證統一,避免出現編碼不一致導致的亂碼問題,我們統一設置成 UTF-8:

這里不得不再次強調一下:

MariaDB / MySQL中 的 "utf8" 并不是真正的UTF-8,其中的 "utf8mb4" 才是真正的UTF-8。"utf8" 只支持每個字符最多三個字節,而真正的 UTF-8 是每個字符最多四個字節。MySQL 在5.5.3之后增加了這個 "utf8mb4" 的編碼,mb4 就是 most bytes 4的意思,專門用來兼容四字節的 unicode。好在 "utf8mb4" 是 "utf8" 的超集,除了將編碼改為 "utf8mb4" 外不需要做其他轉換,如果要想完美兼容,或者想存儲 emoji 表情之類的,最好還是設置成 "utf8mb4" 當然,為了節省空間,一般情況下使用 "utf8' 也就夠了。所以,現在網絡上出現的設置"utf8' 的文章,可以說都多少有些過時了。

查看數據庫支持字符集:
執行 SHOW CHARSET;
可以看到當前版本的 MariaDB 是支持 "utf8mb4" 的。由于個人需要,為了節省空間,我們接下來還是設置成 "utf8",大家知道這個事情就好,再根據項目需要進行選擇。

Snipaste_2020-01-17_13-21-40.png

臨時修改(重啟后失效)

字符集
– mysql> SET character_set_client = utf8 ;
– mysql> SET character_set_connection = utf8 ;
mysql> SET character_set_database = utf8 ;
mysql> SET character_set_results = utf8 ;
mysql> SET character_set_server = utf8 ;

排序規則
– mysql> SET collation_connection = utf8_general_ci;
mysql> SET collation_database = utf8_general_ci;
mysql> SET collation_server = utf8_general_ci ;

這里對mysql中的排序規則utf8_unicode_ci、utf8_general_ci的區別總結:

ci是 case insensitive, 即 "大小寫不敏感"
utf8_general_ci 不區分大小寫
utf8_general_cs 區分大小寫
utf8_unicode_ci和utf8_general_ci對中、英文來說沒有實質的差別。
utf8_general_ci校對速度快,但準確度稍差。
utf8_unicode_ci準確度高,但校對速度稍慢。
tf8_unicode_ci比較準確,utf8_general_ci速度比較快。通常情況下 utf8_general_ci的準確性就夠我們用的了,如果你的應用有德語、法語或者俄語,請一定使用utf8_unicode_ci。

永久修改
首先修改my.cnf文件:vi /etc/my.cnf
在[mysqld]下添加

init_connect='SET collation_connection = utf8_general_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_general_ci
# To ignore client information and use the default server character set
# 忽略客戶端字符集信息,并使用服務器默認字符集
skip-character-set-client-handshake

重啟mariadb:systemctl restart mariadb
重新登錄,再次查看:show variables like "%character%";show variables like "%collation%";都已設置成utf8。

1.5 用戶與權限

創建用戶:CREATE USER username IDENTIFIED BY 'password';

為用戶設置權限:

授予username用戶在所有數據庫上的所有權限:
GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password';
撤銷username用戶在所有數據庫上的所有權限:
REVOKE ALL PRIVILEGES ON *.* FROM 'username'@'localhost';
授予username用戶在xxx數據庫上的所有權限:
GRANT ALL PRIVILEGES ON xxx.* TO 'username'@'localhost' IDENTIFIED BY 'password';
授予username用戶在xxx數據庫上的SELECT, UPDATE權限:
GRANT SELECT, UPDATE ON xxx.* TO 'username'@'localhost' IDENTIFIED BY 'password';

注意:上述命令中@localhost指的是本地,如果需要遠程登錄數據庫,則使用@'%'

刷新權限:
FLUSH PRIVILEGES;

刪除用戶:
DROP USER username@localhost;

2. Apache:

查看可安裝版本:yum list httpd


這里我們直接安裝最新版2.4.6:yum install -y httpd


安裝完畢,啟動Apache:systemctl start httpd


Apache默認端口80,所以在瀏覽器訪問http://localhost,出現以下界面,說明Apache啟動成功


設置開機自啟:systemctl enable httpd

3. PHP

查看可安裝版本:yum list php

顯示版本為5.4.16,想要使用php7的話,需要安裝升級PHP7的rpm源
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

查看php7安裝包
yum list phpyum list php*w,可以看到目前可以安裝的各版本

這里我們不是以PHP為主,就選系統默認版本5.4.16
yum install php

安裝完畢,查看php版本:php -v


重啟Apache:systemctl restart httpd
apache 默認根目錄/var/www/html,添加文件phpinfo.php,輸入以下內容:

<?php
    phpinfo();
?>

訪問http://localhost/phpinfo.php,查看php相關信息

3.1安裝PHP模塊

查看已安裝模塊:php -m

這里我們需要再安裝常用的一些模塊,推薦使用pecl安裝php擴展

PECL 的全稱是 The PHP Extension Community Library ,是一個開放的并通過 PEAR(PHP Extension and Application Repository,PHP 擴展和應用倉庫)打包格式來打包安裝的 PHP擴展庫倉庫。通過 PEAR 的 Package Manager 的安裝管理方式,可以對 PECL 模塊進行下載和安裝。

安裝pecl:
yum install php-pear php-devel

安裝模塊:
pecl install dom mbstring mcrypt mysql mysqli PDO pdo_mysql pdo_sqlite posix sqlite3 sysvmsg sysvsem sysvshm wddx xmlreader xmlwriter xsl

如遇到pecl找不到的擴展模塊,再嘗試yum安裝,如:
yum install php-gd php-mbstring php-mcrypt php-mysql php-mysqli php-pdo php-pdo_sqlite php-posix php-sqlite3 php-ldap

重啟Apache
systemctl restart httpd

查看新增php模塊

3.2安裝phpMyAdmin

phpMyAdmin 是一個以PHP為基礎,以Web-Base方式架構在網站主機上的MySQL的數據庫管理工具,讓管理者可用Web接口管理MySQL數據庫。借由此Web接口可以成為一個簡易方式輸入繁雜SQL語法的較佳途徑,尤其要處理大量資料的匯入及匯出更為方便。其中一個更大的優勢在于由于phpMyAdmin跟其他PHP程式一樣在網頁服務器上執行,但是您可以在任何地方使用這些程式產生的HTML頁面,也就是于遠端管理MySQL數據庫,方便的建立、修改、刪除數據庫及資料表。也可借由phpMyAdmin建立常用的php語法,方便編寫網頁時所需要的sql語法正確性。

安裝:yum install -y phpmyadmin

phpMyAdmin 的默認安裝目錄是 /usr/share/phpMyAdmin,同時會在 Apache 的配置文件目錄中自動創建虛擬主機配置文件 /etc/httpd/conf.d/phpMyAdmin.conf(區分大小寫)。默認情況下,CentOS 7上的phpMyAdmin只允許從回環地址(127.0.0.1)訪問。為了能遠程連接,你需要改動它的配置。

修改配置:
vi /etc/httpd/conf.d/phpMyAdmin.conf

<Directory /usr/share/phpMyAdmin/>
   AddDefaultCharset UTF-8

   <IfModule mod_authz_core.c>
     # Apache 2.4
     <RequireAny>
      # Require ip 127.0.0.1  #注釋掉
      # Require ip ::1   #注釋掉
      Require all granted   #新添加(允許所有請求訪問資源)
     </RequireAny>
 </IfModule>
 <IfModule !mod_authz_core.c>
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 127.0.0.1
     Allow from ::1
   </IfModule>
</Directory>

<Directory /usr/share/phpMyAdmin/setup/>
   <IfModule mod_authz_core.c>
     # Apache 2.4
     <RequireAny>
      #Require ip 127.0.0.1  #注釋掉
      #Require ip ::1   #注釋掉
      Require all granted   #新添加(允許所有請求訪問資源)
     </RequireAny>
   </IfModule>
   <IfModule !mod_authz_core.c>
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 127.0.0.1
     Allow from ::1
   </IfModule>
</Directory>

作者:TyiMan
鏈接:http://www.lxweimin.com/p/bc14ff0ab1c7
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

然后重啟Apache服務器:
systemctl restart httpd
訪問http://ip/phpmyadmin

開啟連接遠程服務器中數據庫功能:

執行命令 vi /usr/share/phpmyadmin/libraries/config.default.php,

$cfg['AllowArbitraryServer']值修改為true;

$cfg['AllowArbitraryServer'] = true;

然后重啟Apache服務器:
systemctl restart httpd

4. JDK:

查看可安裝JDK
yum search java|grep jdk

Linux發行版中用的多是OpenJDK(關于OpenJDK與Oracle JDK的區別這里不再贅述)。

我們選擇安裝OpenJDK1.8即可:
yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel

java -version

Linux 上使用 yum 命令后,會將 OpenSDK 安裝到 /usr/lib/jvm/ 目錄下。
設置 JAVA-HOME,讓系統上的所有用戶使用 java(OpenSDK )
vi /etc/profile
在末尾添加:

#set java environment
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64
JRE_HOME=$JAVA_HOME/jre  CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

export JAVA_HOME JRE_HOME CLASS_PATH PATH

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

驗證環境變量是否生效:
echo $PATH

5. Tomcat:

下載當前Tomcat8最新版的安裝文件apache-tomcat-8.0.27.tar.gz(https://tomcat.apache.org/download-80.cgi);

將apache-tomcat-8.0.28.tar.gz文件放到/usr/local目錄下,執行如下腳本:

cd /usr/local
tar -zxvf apache-tomcat-8.5.28.tar.gz 解壓壓縮包
rm -rf apache-tomcat-8.5.28.tar.gz 刪除壓縮包
mv apache-tomcat-8.5.28 tomcat 重命名

通過systemctl 管理tomcat:

1)首先,為tomcat 增加一個pid文件

在tomca/bin 目錄下面,增加 setenv.sh 配置,catalina.sh啟動的時候會調用,同時配置java內存參數;

vi setenv.sh

#add tomcat pid
CATALINA_PID="$CATALINA_BASE/tomcat.pid"
#add java opts
JAVA_OPTS="-server -XX:PermSize=256M -XX:MaxPermSize=1024m -Xms512M -Xmx1024M -XX:MaxNewSize=256m"

保存文件;
修改文件為可執行:
chmod a+x /usr/local/tomcat/bin/setenv.sh
2)增加tomcat.service

在/usr/lib/systemd/system目錄下增加tomcat.service,目錄必須是絕對目錄。
vi tomcat.service

[Unit]
Description=Tomcat
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/usr/local/tomcat/tomcat.pid
ExecStart=/usr/local/tomcat/bin/startup.sh 
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

[unit] 配置了服務的描述,規定了在network啟動之后執行。
[service] 配置服務的pid,服務的啟動,停止,重啟。
[install] 配置了使用用戶。

執行systemctl daemon-reload,使 tomcat.service生效

啟動tomcat:
systemctl start tomcat
開機啟動:
systemctl enable tomcat

tomcat啟動時會在tomcat的根目錄/usr/local/tomcat下生成pid文件tomcat.pid,停止后會刪除,用systemctl管理tomcat不會出現同時啟動多個tomcat,這樣可以保證始終只有一個tomcat在運行

訪問http://ip:8080/,出現以下界面說明啟動成功


但當我們點擊紅色框中按鈕,進入管理時,提示無訪問權限;

這時我們按提示,進入/usr/local/tomcat/conf,編輯 tomcat-users.xml,設置用戶:
<tomcat-users></tomcat-users>內部添加:

<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="用戶名" password="密碼" roles="manager-gui,admin-gui"/>

另外遠程登錄tomcat管理界面權限,注釋掉/usr/local/tomcat/webapps/manager/META-INF/context.xml和/usr/local/tomcat/webapps/host-manager/META-INF/context.xml中:


  <!--
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
  -->

再次使用剛設置的賬號密碼登陸即可成功登錄tomcat管理系統。

6. Node:
6.1 nvm

為了方便管理node,我們使用NVM(node版本管理器)
安裝(先確保安裝過curl /wget 工具,沒有就安裝下):
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
或者
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash

安裝完后,重新打開終端,查看安裝情況:
nvm --version

[root@localhost ~]# nvm --version
0.33.8

nvm常用命令:
vm install <version> ## 安裝指定版本,可模糊安裝,如:安裝v8.9.4,既可nvm install v8.9.4,又可nvm install 8.9.4
vm uninstall <version> ## 刪除已安裝的指定版本,語法與install類似
vm use <version> ## 切換使用指定的版本node
vm list ## 列出所有安裝的版本
vm list-remote ## 列出所有遠程服務器的版本(官方node version list)
vm current ## 顯示當前的版本
vm alias <name> <version> ## 給不同的版本號添加別名
vm unalias <name> ## 刪除已定義的別名
vm reinstall-packages <version> ## 在當前版本node環境下,重新全局安裝指定版本號的npm包

我們安裝當前LTS(長期穩定版)v8.9.4以及最新版
nvm install 8.9.4
nvm install 9.6.0

查看已安裝版本:

[root@localhost ~]# nvm list
         v8.9.4 *
->       v9.6.0 *
default -> 8.9.4 (-> v8.9.4 *)
node -> stable (-> v9.6.0 *) (default)
stable -> 9.6 (-> v9.6.0 *) (default)
iojs -> N/A (default)
lts/* -> lts/carbon (-> v8.9.4 *)
lts/argon -> v4.8.7 (-> N/A)
lts/boron -> v6.13.0 (-> N/A)
lts/carbon -> v8.9.4 *

然后使用8.9.4:
nvm use 8.9.4

[root@localhost ~]# nvm use 8.9.4
Now using node v8.9.4 (npm v5.6.0)

查看當前版本:
nvm current

[root@localhost ~]# nvm current
v8.9.4
6.2 nrm

接下來我們安裝nrm(管理npm源切換的利器)

安裝:
npm install -g nrm

nrm常用命令:

nrm ls : 顯示所有registry
rm current : 顯示當前registry
rm use xxx : 使用xxx registry

nrm ls

[root@localhost ~]# nrm ls

* npm ---- https://registry.npmjs.org/
  cnpm --- http://r.cnpmjs.org/
  taobao - https://registry.npm.taobao.org/
  nj ----- https://registry.nodejitsu.com/
  rednpm - http://registry.mirror.cqupt.edu.cn/
  npmMirror  https://skimdb.npmjs.com/registry/
  edunpm - http://registry.enpmjs.org/

nrm use taobao
再次查看,npm源已切換到taobao:

[root@localhost ~]# nrm ls

  npm ---- https://registry.npmjs.org/
  cnpm --- http://r.cnpmjs.org/
* taobao - https://registry.npm.taobao.org/
  nj ----- https://registry.nodejitsu.com/
  rednpm - http://registry.mirror.cqupt.edu.cn/
  npmMirror  https://skimdb.npmjs.com/registry/
  edunpm - http://registry.enpmjs.org/

淘寶 NPM 鏡像
是一個完整 npmjs.org 鏡像,你可以用此代替官方版本(只讀),同步頻率目前為 10分鐘 一次以保證盡量與官方服務同步。

接下來,就可以隨意使用npm安裝node模塊包了。
如:npm install -g npm-check yarn serve pm2 typescript

7. MongoDB:

MongoDB 是一個基于分布式文件存儲的數據庫。由C++語言編寫。旨在為WEB應用提供可擴展的高性能數據存儲解決方案。
MongoDB是一個介于關系數據庫和非關系數據庫之間的產品,是非關系數據庫當中功能最豐富,最像關系數據庫的。他支持的數據結構非常松散,是類似json格式,因此可以存儲比較復雜的數據類型。Mongo最大的特點是他支持的查詢語言非常強大,其語法有點類似于面向對象的查詢語言,幾乎可以實現類似關系數據庫單表查詢的絕大部分功能,而且還支持對數據建立索引。

安裝 MongoDB:

首先創建源,創建 repo文件,下面我們 官方安裝方法安裝:

# 在/etc/yum.repos.d/目錄下創建文件mongodb-org-3.6.repo,它包含MongoDB倉庫的配置信息,內容如下:
# 復制代碼, 代碼如下:
[mongodb-org-3.6]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/  
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc
# $releasever 為你的Linux發行版本

yum 安裝 MongoDB

yum install -y mongodb-org-3.6.3

啟動MongoDB
systemctl start mongod

設置開機自啟
systemctl enable mongod

配置MongoDB:

MongoDB默認是不開啟權限認證的,但自從上次MongoDB爆發了贖金門事件,還是很有開啟MongoDB的權限認證的必要。

開啟認證也很簡單,在配置文件(默認是/etc/mongod.conf)里面進行配置即可:

security:
  authorization: enabled
#2.6前的版本為auth = true

重啟數據庫后,再次進入數據庫進行插入等操作,就會提示錯誤了。這說明權限認證生效了,未認證通過的用戶再也不能使用數據庫了(即使能進mongo shell)。

這時我們需要一個“超級管理員”來創建、分配管理員給指定數據庫。

MongoDB的開發者早已經想到了這一步。MongoDB自帶一個數據庫叫admin,這個數據庫用來管理所有數據庫的,類似于MySQL的mysql數據庫。如果這個數據庫的管理員賬戶還沒有建立,那么任何人都可以在admin數據庫里面新建管理員賬戶。

--進入admin數據庫
use admin;
--運行db.createUser方法新建用戶
db.createUser({user: '超級管理員用戶名', pwd: '密碼', roles: [{role: 'userAdminAnyDatabase', db: 'admin'}]})

createUser方法必須傳入一個有user(用戶名)、pwd(密碼),roles(角色)三個屬性的JSON對象。不同roles擁有不同權限,比如:數據庫讀、數據庫寫、數據庫用戶管理等等,其中角色userAdminAnyDatabase 可以看做是“超級管理員”,我們建立該角色的用戶后,就可以用這個用戶來管理其他用戶了。

MongoDB內置角色:

(1).數據庫用戶角色
針對每一個數據庫進行控制。
read :提供了讀取所有非系統集合,以及系統集合中的system.indexes, system.js,system.namespaces
readWrite: 包含了所有read權限,以及修改所有非系統集合的和系統集合中的system.js的權限。
(2).數據庫管理角色
每一個數據庫包含了下面的數據庫管理角色。
dbOwner:該數據庫的所有者,具有該數據庫的全部權限。
dbAdmin:一些數據庫對象的管理操作,但是沒有數據庫的讀寫權限。(參考:http://docs.mongodb.org/manual/reference/built-in-roles/#dbAdmin
userAdmin:為當前用戶創建、修改用戶和角色。擁有userAdmin權限的用戶可以將該數據庫的任意權限賦予任意的用戶。
(3).集群管理權限
admin數據庫包含了下面的角色,用戶管理整個系統,而非單個數據庫。這些權限包含了復制集和共享集群的管理函數。
clusterAdmin:提供了最大的集群管理功能。相當于clusterManager, clusterMonitor, and hostManager和dropDatabase的權限組合。
clusterManager:提供了集群和復制集管理和監控操作。擁有該權限的用戶可以操作config和local數據庫(即分片和復制功能)。
clusterMonitor:僅僅監控集群和復制集。
hostManager:提供了監控和管理服務器的權限,包括shutdown節點,logrotate, repairDatabase等。
備份恢復權限:admin數據庫中包含了備份恢復數據的角色。包括backup、restore等等。
(4).所有數據庫角色
admin數據庫提供了一個mongod實例中所有數據庫的權限角色:
readAnyDatabase:具有read每一個數據庫權限。但是不包括應用到集群中的數據庫。
readWriteAnyDatabase:具有readWrite每一個數據庫權限。但是不包括應用到集群中的數據庫。
userAdminAnyDatabase:具有userAdmin每一個數據庫權限,但是不包括應用到集群中的數據庫。
dbAdminAnyDatabase:提供了dbAdmin每一個數據庫權限,但是不包括應用到集群中的數據庫。
(5). 超級管理員權限
root: dbadmin到admin數據庫、useradmin到admin數據庫以及UserAdminAnyDatabase。但它不具有備份恢復、直接操作system.*集合的權限,但是擁有root權限的超級用戶可以自己給自己賦予這些權限。
(6). 備份恢復角色:backup、restore。
(7). 內部角色:__system

十分復雜,為了簡單起見,就講其中兩個:read、readWrite也就是常用的讀數據庫和讀寫數據庫。

這里有一個不大不小的坑,就是你要給其他數據庫創建用戶,都必須先到admin數據庫,認證剛才新建的那個admin用戶,然后再切換到其他數據庫才能建立用戶。

建立了admin用戶之后,還必須先進入admin數據庫進行認證:

步驟如下:

use admin;
db.auth('超級管理員用戶名', '密碼')

然后切換到數據庫a,給數據庫a創建用戶

use 數據庫a;
db.createUser({user: '用戶a', pwd: '密碼', roles: [{role: 'readWrite', db: '數據庫a'}]})
db.auth('用戶a', '密碼')

現在,就可以使用用戶a管理數據庫a,進行正常的讀寫了。

開啟遠程登錄:

在配置文件(默認是/etc/mongod.conf)中,將 bindIp 127.0.0.1 改為 0.0.0.0

# network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0  # Listen to local interface only, comment to listen on all interfaces.

最后是MongoDB圖形化管理工具:

推薦使用Studio 3T(前身是robomongo),雖然收費,但是基礎功能免費,足夠了。

嗯,待續吧。。。**

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,702評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,143評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,553評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,620評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,416評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,940評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,024評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,170評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,709評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,597評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,784評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,291評論 5 357
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,029評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,407評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,663評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,403評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,746評論 2 370

推薦閱讀更多精彩內容