操作系统的源自带 nginx 和 apache httpd,但都不是最新版本。

先安装几个源:

IUS 第三方综合软件扩展,在 https://ius.io/GettingStarted/ 找到系统对应的地址

rpm -Uvh https://centos7.iuscommunity.org/ius-release.rpm

Nginx官方源,在 http://nginx.org/en/linux_packages.html 按照说明手动编辑源repo文件,或者在 http://nginx.org/packages/centos/ 按照目录结构找到对应的地址

rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

安装 Apache Httpd

yum install httpd24u

安装完成后,系统服务名为httpd

# 启动httpd
systemctl start httpd
# 随系统启动httpd
systemctl enable httpd

配置文件在 /etc/httpd 下面

其中 conf 目录下为主配置文件, conf.d 目录下为扩展配置文件。

conf/httpd.conf 里比较重要的配置参数:

# 默认监听端口
Listen 80
# 网站文件路径
DocumentRoot "/var/www/html"

其他网站和权限等属性设置 请另行了解 。

安装 Nginx

yum install nginx

安装完成后,系统服务名为nginx

# 启动nginx
systemctl start nginx
# 随系统启动nginx
systemctl enable nginx

配置文件在 /etc/nginx 下面

主配置文件为 nginx.conf ,扩展配置文件在 conf.d 目录下

可以配置多个 server,每个 server 单独监听一个端口,为了方便可以将 server 放在一个单独的配置文件里,配置文件以 .conf 作为扩展名,将被设置引用。

默认配置在 default.conf 里,这里单独新建一个网站的配置文件 site.conf

# 把旗下所有的域名都跳转到主域名上
server {
        listen      2000;
        server_name site1.com site2.com site2.net www.site2.com www.site2.net;
        return 301 $scheme://www.site1.com$request_uri;
}

server {
        listen      2000;
        server_name www.site1.com;

        location / {
                root   /home/site;
                index  index.html index.htm;
                # 目录浏览功能
                autoindex off;
                # 目录浏览文件大小精确显示,关闭后大文件将显示KB MB GB等
                autoindex_exact_size off;
                # 目录浏览文件时间显示,打开显示本地时区时间,关闭显示GMT时间
                autoindex_localtime on;
        }
}

后面主要就使用nginx作为网站的WEB服务器了。

开始之前先关闭SELINUX。

这是一个Linux下的访问控制系统,主要进行安全策略和权限控制的管理,对很多涉及目录和文件的操作都会产生影响,个人用户建议关闭,如有兴趣了解可以单独进行学习。

vim /etc/selinux/config

将 SELINUX=enforcing 修改为 SELINUX=disabled

然后重启系统

reboot

网络防火墙FirewallD简单讲解。

FirewallD就是Linux下的防火墙,这里介绍一些常用的命令来应对后面搭建WEB服务器的需要。

首先是防火墙的开关命令,如果不想要防火墙可以直接关闭并取消开机启动。

# 启动FirewallD
systemctl start firewalld
# 关闭 FirewallD
systemctl start firewalld
# 设置开机启动(当前如果没启动并不会启动)
systemctl enable firewalld
# 取消开机启动(并不会关闭启动中的防火墙)
systemctl disable firewalld
# 查看防火墙运行状态
systemctl status firewalld
# 查看所有防火墙规则
firewall-cmd --list-all
# 重新加载防火墙
firewall-cmd --reload

服务的管理,FirewallD的服务配置文件在/usr/lib/firewalld/services/下,可以理解成一个批量包,如果防火墙允许某个service,那么该service下的所有规则将全被允许。如果修改了系统服务的默认端口,这里也要修改对应的端口,比如SSH服务默认端口为22,如果修改了SSH服务的端口,那么这里也要修改ssh.xml里的端口,或者在防火墙里单独设置一条端口允许也是可以的。

# 查看所有可以设置的服务
firewall-cmd --get-services
# 查看当前允许的服务
firewall-cmd --list-services
# 查询一个服务的状态
firewall-cmd --query-service http
# 允许一个服务
firewall-cmd --add-service=http
# 禁止一个服务
firewall-cmd --remove-service=http
# 允许一个服务多少秒
firewall-cmd --add-service=http --timeout=60

注意:这些设置在重新加载防火墙或者重启系统后将会失效,如果想要让设置永久生效,需要添加–permanent参数

例如:

firewall-cmd --permanent --add-service=http

但是这样设置并不会立即生效,需要重新加载防火墙使其生效。同样,删除服务包括后面的端口管理要永久生效都要添加该参数。

端口的管理,如果有一些软件不在常用服务列表里,或者把系统服务的默认端口更改了,可以直接添加一个允许访问的端口。

# 查看当前允许的端口
firewall-cmd --list-ports
# 添加一个允许的端口
firewall-cmd --add-port=8080/tcp
# 删除一个允许的端口
firewall-cmd --remove-port=8080/tcp
# 添加一个允许的端口多少秒
firewall-cmd --add-port=8080/tcp --timeout=60

同样,要使其永久生效需要添加参数permanent,后面将不再赘述。

防火墙还有一个小功能,可以进行端口转发,Linux不允许root以外的用户使用1024以下的端口,我们举例设置一个1024以上的端口转发到80端口。

firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080

这样访问该机的80端口将被转发到8080端口,这里转发的目标地址需要添加防火墙允许,也就是要允许8080端口访问,而指向端口不用在防火墙里设置允许,这里是80端口。

防火墙的设置就简单介绍到这里,如需要更加详细的学习请查询专业资料,其中比较重要的是防火墙的filter功能。

安装MySQL

参考文章: https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/

CentOS7的默认源中采用的是MariaDB

我们这里来安装MySQL

首先到 https://dev.mysql.com/downloads/repo/yum/

这个网站去找到Linux 7对应版本的rpm源

当前是MySQL 8.0

rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
yum makecache

这时候就可以通过源安装mysql了

yum -y install mysql-community-server

修改mysql配置文件,让其支持简单密码,否则密码必须包含大写小写数字和符号

vim /etc/my.cnf
[mysqld]
# 在原有配置后面添加如下内容
# 服务器默认字符集
character-set-server=utf8
# 表名默认都是小写
lower_case_table_names=1
# 监听的端口默认3306
port=3306
# SQL执行模式
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
# 是否校验密码,旧版本5.7以前采用
# validate-password=OFF

启动并初始化mysql

systemctl start mysqld

如果在修改配置文件之前启动初始化过mysql的话可能会启动报错:

[ERROR] [MY-011087] [Server] Different lower_case_table_names settings for server ('1') and data dictionary ('0').

目前来看是8.0的一个问题,没有好的解决办法,重装mysql是一个办法。

mysql日志里找到root初始密码

grep 'temporary password' /var/log/mysqld.log

登陆mysql

mysql -uroot -p

8.0版设置允许简单密码(不然密码强制要求大写小写数字和符号)

set global validate_password.policy=0;
set global validate_password.length=4;

输入前面找到的密码,然后修改默认密码(不修改密码不能进行操作)

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

如果想要远程使用root用户进行登陆,还需要更改root用户的Host

use mysql;
update user set host='%' where user='root';
flush privileges;

这时候搭建就完成了。

查看当前mysql版本

mysql -V

或者登陆到mysql里

select version();

这个命令可以进行一些简单的安全设置,有兴趣的可以了解一下。

mysql_secure_installation

安装MariaDB

CentOS7的默认源中的MariaDB版本为5.5

先添加最新版本的repo

首先到 https://downloads.mariadb.org/mariadb/repositories/

这个网站去找到Linux 7对应版本源,要求我们自行录入

其中的源调整为清华大学的镜像,提高国内访问速度

vim /etc/yum.repos.d/MariaDB.repo
# MariaDB 10.4 CentOS repository list - created 2019-07-12 06:52 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = https://mirrors.tuna.tsinghua.edu.cn/mariadb/yum/10.4/centos7-amd64
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1

然后安装MariaDB

yum -y install MariaDB-server MariaDB-client

修改配置文件,同mysql的设置,注意路径不同

vim /etc/my.cnf.d/server.cnf
[mysqld]
# 在mysqld下面添加如下内容
character-set-server=utf8
lower_case_table_names=1
port=3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

启动并初始化mariadb,mariadb的服务名同样可以使用mysqld,比如下面两条命令相同

systemctl start mariadb
systemctl start mysqld

后面均使用mariadb作为服务名

登陆本地mariadb,同样可以使用mysql作为命令,下面两条命令相同

mariadb
mysql

修改默认密码

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

如果想要远程使用root用户进行登陆,还需要更改root用户的Host

use mysql;
update user set host='%' where user='root';
flush privileges;

这时候搭建就完成了。

查看当前mariadb版本

mariadb -V

或者登陆到mariadb里

select version();

mysql安全设置的命令同样可以使用。

后面均使用mariadb作为运行环境。

系统环境包

# C运行库,默认已经安装
sudo yum -y install glibc
# 下载工具
sudo yum -y install wget
# 标准化包
sudo yum -y install redhat-release
sudo yum -y install redhat-lsb
# 第三方源
sudo yum -y install epel-release
# 文本编辑工具升级版
sudo yum -y install vim
# 文件互传工具
sudo yum -y install lrzsz
# 多屏工具
sudo yum -y install screen
# 旧网络工具(不推荐安装,系统自带iproute2)
sudo yum -y install net-tools

运行环境

# GCC编译器
sudo yum -y install gcc
# ICU库
sudo yum -y install icu
# UNWIND库
sudo yum -y install libunwind

查看系统版本

lsb_release -a