0
点赞
收藏
分享

微信扫一扫

可能是目前最详细简明的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等信息进行配置,如图:

然后执行systemctl restart network,重启网络服务


测试网络是否连通:ping www.baidu.com


出现以下信息,说明可以正常访问互联网了(至于上图为什么画风变了,额,这个纯属个人喜好,小伙伴可以自己选择喜欢的终端工具以及主题配色)

第四步:关闭 SELinux

但是,很多服务都有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

简单说就是:systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。在系统服务管理中推荐使用systemctl来管理。

下面以firewalld服务为例:

  1. firewalld服务启用/停用

2.配置firewalld-cmd

3.端口管理:

正式环境下,看需要选择是否使用防火墙,这里为了方便后续配置,就先将其关闭:

关闭防火墙 systemctl stop firewalld
禁止开机自启systemctl disable firewalld
查看防火墙状态systemctl status firewalld

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

linux下软件安装方式有很多,比如RMP、YUM、源代码安装等。其中CentOS 内置的yum命令安装非常的简单实用,能自动帮助我们解决依赖,在此推荐yum方式安装软件应用,但CentOS 最小化安装后,内置的yum源可用的软件偏少或者版本过低,通常我们需要使用一些第三方的yum源,这里向大家推荐两个比较常用和权威的yum源,EPEL和REMI。
EPEL

REMI

首先查看目前系统中已存在的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 makecache 把服务器的包信息下载到本地电脑缓存起来,以提高搜索 、安装软件的速度,如图:

第七步:软件应用安装与配置

首先我们从常规的LMAP套装开始:

1. MariaDB:

在这里先介绍下常用的RPM命令:

1.1 安装

首先查看系统是否安装过mariadb:rpm -qa | grep mariadb

先卸载系统中的mariadb:rpm -e --nodeps mariadb-libs-****.x86_64

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

这里要说明一下:

所以,为了更好的兼容已有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%";

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

为了保证统一,避免出现编码不一致导致的乱码问题,我们统一设置成 UTF-8:

这里不得不再次强调一下:

查看数据库支持字符集:
执行 SHOW CHARSET;
可以看到当前版本的 MariaDB 是支持 "utf8mb4" 的。由于个人需要,为了节省空间,我们接下来还是设置成 "utf8",大家知道这个事情就好,再根据项目需要进行选择。

临时修改(重启后失效)

这里对mysql中的排序规则utf8_unicode_ci、utf8_general_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';

为用户设置权限:

注意:上述命令中@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:
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

安装:yum install -y phpmyadmin

修改配置:
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
链接:https://www.jianshu.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

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

启动tomcat:
systemctl start tomcat
开机启动:
systemctl enable 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

我们安装当前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 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安装node模块包了。
如:npm install -g npm-check yarn serve pm2 typescript

7. MongoDB:
安装 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:

开启认证也很简单,在配置文件(默认是/etc/mongod.conf)里面进行配置即可:

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

重启数据库后,再次进入数据库进行插入等操作,就会提示错误了。这说明权限认证生效了,未认证通过的用户再也不能使用数据库了(即使能进mongo shell)。

这时我们需要一个“超级管理员”来创建、分配管理员给指定数据库。

--进入admin数据库
use admin;
--运行db.createUser方法新建用户
db.createUser({user: '超级管理员用户名', pwd: '密码', roles: [{role: 'userAdminAnyDatabase', db: 'admin'}]})

MongoDB内置角色:

十分复杂,为了简单起见,就讲其中两个:read、readWrite也就是常用的读数据库和读写数据库。

建立了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),虽然收费,但是基础功能免费,足够了。

嗯,待续吧。。。**

举报

相关推荐

0 条评论