說在前面
俗話說好記性不如爛筆頭,考慮到每次安裝部署都要各種查閱資料,很是不便,故決定重頭開始安裝一遍常用服務,作為以后的參照。
第一步:確定發行版本,安裝系統
首先明確自己需要的版本,本人不習慣桌面版(作為服務器,推薦熟悉命令行系統,畢竟效率上不是一個量級的),而且也不喜歡集成好的第三方鏡像,故直接在官網下載最小化版本Minimal ISO。這里我們以目前最新版本CentOS7 64位系統為例進行安裝(具體安裝過程不在敘述,大家肯定可以的)。
第二步:root 密碼重置
首次安裝, root 賬號密碼默認為空(當然也可以在安裝過程中設置),但本人經常忘記密碼,所以難免有要重置密碼的時候。
-
重啟系統,開機過程中,出現下圖畫面時,通過快速按下
↑
和↓
來暫停引導程序(對手速自信的同學請無視),如圖:
系統啟動界面 使用
↑
和↓
選擇第一行(背景高亮即為選中),按下鍵盤上的e,進入編輯模式;-
將光標一直移動到 LANG=en_US.UTF-8 后面,空格,再追加init=/bin/sh。這里特別注意,需要寫在UTF-8后,保持在同一行,并注意空格。由于屏幕太小,會自動添加\換行,這個是正常的。如圖:
編輯模式 按下
CTRL+X
進行引導啟動,成功后進入該界面,如圖:
- 接下來逐步輸入以下命令:
- 掛載根目錄
mount -o remount, rw /
- 選擇要修改密碼的用戶名,這里選擇root用戶進行修改,可以更換為你要修改的用戶
passwd root
- 輸入2次一樣的新密碼,注意輸入密碼的時候屏幕上不會有字符出現。
如果輸入的密碼太簡單,會提示警告(BAD PASSWORD:The password fails the dictionary check - it is too simplistic/systematic),可以無視它,繼續輸入密碼,不過建議還是設置比較復雜一些的密碼,以保證安全性 - 如果已經開啟了SElinux(這個后面會講),則需要輸入以下命令
touch /.autorelabel
- 最后輸入以下命令重啟系統即可
exec /sbin/init
或exec /sbin/reboot
- 掛載根目錄
第三步:開啟網卡
因為最小化安裝以后,centos 默認未開啟網卡,所以首先需要開啟網卡:
- 執行命令
cd /etc/sysconfig/network-scripts
,看到下圖:
網卡配置目錄 - 執行命令
vi ifcfg-ens33
(vi/vim編輯器用法相信小伙伴都很熟悉了,這里不再涉及),將ONBOOT=no
改為ONBOOT=yes
,如圖:
- 由于我是在虛擬機里安裝的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服務為例:
- 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
可以看到目前系統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版本。
這里我們安裝mariadb
與mariadb-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",大家知道這個事情就好,再根據項目需要進行選擇。
臨時修改(重啟后失效)
字符集
– 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 php
及yum 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),雖然收費,但是基礎功能免費,足夠了。
嗯,待續吧。。。**