CentOS 7服务器搭建A

一、介绍

          很久没有写过了,这回重新的把服务器重装系统了,本次不安装lamp环境包,不配做tomcat,也不用宝塔管理面板,就是简简单单的使用iptables防火墙和apache的httpd安装一个服务器环境,其实现在大部分都是使用它来做内部端口映射,我本人不是专做运维的,只懂一点点。感觉各种http服务器折腾下来就这个直接了当。本次也不安装mysql,装在一个主机上没有意义,感觉。而且我的vps太low了。

二、iptables情况

      1.更新

                        不管怎么样先更新一下再说。

yum update

      2.检查是否已经安装iptables

service iptables status

      3.如果没有就安装

yum install -y iptables
yum install iptables-services

# 如果需要安装就需要禁用原来的,我本次安装版本自带

# 停止firewalld服务
systemctl stop firewalld
# 禁用firewalld服务
systemctl mask firewalld

       4.配置iptables

#查看iptables现有规则
iptables -L -n
#先允许所有,不然有可能会杯具
iptables -P INPUT ACCEPT
#清空所有默认规则
iptables -F
#清空所有自定义规则
iptables -X
#所有计数器归0
iptables -Z
#允许来自于lo接口的数据包(本地访问)
iptables -A INPUT -i lo -j ACCEPT
#开放22端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
#开放21端口(FTP)
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
#开放80端口(HTTP)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#开放443端口(HTTPS)
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
#允许ping
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
#允许接受本机请求之后的返回数据 RELATED,是为FTP设置的
iptables -A INPUT -m state --state  RELATED,ESTABLISHED -j ACCEPT
#其他入站一律丢弃
iptables -P INPUT DROP
#所有出站一律绿灯
iptables -P OUTPUT ACCEPT
#所有转发一律丢弃
iptables -P FORWARD DROP

#如果要添加内网ip信任(接受其所有TCP请求)
iptables -A INPUT -p tcp -s 45.96.174.68 -j ACCEPT
#过滤所有非以上规则的请求
iptables -P INPUT DROP
#要封停一个IP,使用下面这条命令:
iptables -I INPUT -s ***.***.***.*** -j DROP
#要解封一个IP,使用下面这条命令:
iptables -D INPUT -s ***.***.***.*** -j DROP

#保存上述规则
service iptables save

#注册iptables服务
#相当于以前的chkconfig iptables on
systemctl enable iptables.service
#开启服务
systemctl start iptables.service
#查看状态
systemctl status iptables.service

简易脚本

#!/bin/sh
iptables -P INPUT ACCEPT
iptables -F
iptables -X
iptables -Z
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
service iptables save
systemctl restart iptables.service

三、安装httpd

      1.安装

yum install -y httpd
yum install -y httpd-devel

# 启动和设置开机启动
systemctl start httpd
systemctl enable httpd

# 查看状态
systemctl status httpd

这个时候在你的浏览器上输入你的服务器IP地址就能看到这个了

四、MySQL安装MySQL

添加mysql源

1

# rpm -Uvh http://repo.mysql.com//mysql57-community-release-el7-7.noarch.rpm

安装mysql

1

# yum -y install mysql-community-server

扫描二维码关注公众号,回复: 9179618 查看本文章

启动mysql并设置为开机自启动服务

1

2

# chkconfig mysqld on

# service mysqld start

检查mysql服务状态

1

# service mysqld status

第一次启动mysql,会在日志文件中生成root用户的一个随机密码,使用下面命令查看该密码

1

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

修改root用户密码

1

2

3

4

# mysql -u root -p -h localhost

Enter password:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Mysql-2016';

查看当前已有用户

select host,user,authentication_string from mysql.user;

新建用户

格式:create user "username"@"host" identified by "password";
create user 'test'@'localhost' identified by '123';
create user 'test'@'192.168.7.22' identified by '123';
create user 'test'@'%' identified by '123';
    /*host="localhost"为本地登录用户,host="ip"为ip地址登录,host="%",为外网ip登录*/

删除用户

格式:drop user 'username'@'host';

授权给用户

 格式:grant privileges on databasename.tablename to 'username'@'host' IDENTIFIED BY 'PASSWORD';

   1. GRANT命令说明:
        priveleges(权限列表),可以是all priveleges, 表示所有权限,也可以是select、update等权限,多个权限的名词,相互之间用逗号分开。

        on用来指定权限针对哪些库和表。

        *.* 中前面的*号用来指定数据库名,后面的*号用来指定表名。

        to 表示将权限赋予某个用户, 如 jack@'localhost' 表示jack用户,@后面接限制的主机,可以是IP、IP段、域名以及%,%表示任何地方。注意:这里%有的版本不包括本地,以前碰到过给某个用户设置了%允许任何地方登录,但是                  在本地登录不了,这个和版本有关系,遇到这个问题再加一个localhost的用户就可以了。

            identified by指定用户的登录密码,该项可以省略。

             WITH GRANT OPTION 这个选项表示该用户可以将自己拥有的权限授权给别人。注意:经常有人在创建操作用户的时候不指定WITH GRANT OPTION选项导致后来该用户不能使用GRANT命令创建用户或者给其它用户授权。

                 备注:可以使用GRANT重复给用户添加权限,权限叠加,比如你先给用户添加一个select权限,然后又给用户添加一个insert权限,那么该用户就同时拥有了select和insert权限。

  2.授权原则说明:

    权限控制主要是出于安全因素,因此需要遵循一下几个经验原则:

       a、只授予能满足需要的最小权限,防止用户干坏事。比如用户只是需要查询,那就只给select权限就可以了,不要给用户赋予update、insert或者delete权限。

       b、创建用户的时候限制用户的登录主机,一般是限制成指定IP或者内网IP段。

       c、初始化数据库的时候删除没有密码的用户。安装完数据库的时候会自动创建一些用户,这些用户默认没有密码。

       d、为每个用户设置满足密码复杂度的密码。

       e、定期清理不需要的用户。回收权限或者删除用户。

/*授予用户通过外网IP对于该数据库的全部权限*/

  grant all privileges on `test`.* to 'test'@'%' ;

  /*授予用户在本地服务器对该数据库的全部权限*/

  grant all privileges on `test`.* to 'test'@'localhost';   

   grant select on test.* to 'user1'@'localhost';  /*给予查询权限*/

   grant insert on test.* to 'user1'@'localhost'; /*添加插入权限*/

   grant delete on test.* to 'user1'@'localhost'; /*添加删除权限*/

   grant update on test.* to 'user1'@'localhost'; /*添加权限*/

  flush privileges; /*刷新权限*/

查看当前已有权限 

show grants;
+---------------------------------------------------------------------+
| Grants for root@localhost                                           |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION        |
+---------------------------------------------------------------------+
rows in set (0.00 sec)

其它

(7)删除权限

  revoke privileges on databasename.tablename from 'username'@'host';

revoke delete on test.* from 'jack'@'localhost';
(8)更改用户名

  mysql> rename user 'jack'@'%' to 'jim'@'%';

(9)修改密码

1.用set password命令

  mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123456');

  Query OK, 0 rows affected (0.00 sec)

2.用mysqladmin [root@rhel5 ~]# mysqladmin -uroot -p123456 password 1234abcd

  备注: 格式:mysqladmin -u用户名 -p旧密码 password 新密码

3.用update直接编辑user表

(10)pycharm中python3.6+pymysql+mysql8.0.1连接报错 

pymysql.err.OperationalError: (1045, u"Access denied for user 'root'@'localhost' (using password: No)")

解决方法: 

在cmd命令行连接mysql, 通过mysql -u root -p dong1990

 

然后输入ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'dong1990';

数据库操作

一、创建数据库(默认字符集和排序规则)

    (1)创建数据库

CREATE DATABASE my_db1;  
Query OK, 1 row affected (0.00 sec)  

    (2)因为my_db1已经存在,再次创建会报错

CREATE DATABASE my_db1;  
ERROR 1007 (HY000): Can't create database 'my_db1'; database exists  

    (4)加上IF NOT EXISTS就算数据库已经存在,把原来的覆盖掉了

CREATE DATABASE IF NOT EXISTS my_db1;  
Query OK, 1 row affected, 1 warning (0.00 sec)

二、创建数据库包含字符集和排序规则

(1)查看mysql字符集

[sql] view plain copy

  1. mysql> SHOW CHARACTER SET;  
  2. +----------+-----------------------------+---------------------+--------+  
  3. | Charset  | Description                 | Default collation   | Maxlen |  
  4. +----------+-----------------------------+---------------------+--------+  
  5. | big5     | Big5 Traditional Chinese    | big5_chinese_ci     |      2 |  
  6. | dec8     | DEC West European           | dec8_swedish_ci     |      1 |  
  7. | cp850    | DOS West European           | cp850_general_ci    |      1 |  
  8. | hp8      | HP West European            | hp8_english_ci      |      1 |  
  9. | koi8r    | KOI8-R Relcom Russian       | koi8r_general_ci    |      1 |  
  10. | latin1   | cp1252 West European        | latin1_swedish_ci   |      1 |  
  11. .......  


(2)查看mysql排序规则

[sql] view plain copy

  1. mysql> SHOW COLLATION;  
  2. +--------------------------+----------+-----+---------+----------+---------+  
  3. | Collation                | Charset  | Id  | Default | Compiled | Sortlen |  
  4. +--------------------------+----------+-----+---------+----------+---------+  
  5. | big5_chinese_ci          | big5     |   1 | Yes     | Yes      |       1 |  
  6. | big5_bin                 | big5     |  84 |         | Yes      |       1 |  
  7. | dec8_swedish_ci          | dec8     |   3 | Yes     | Yes      |       1 |  
  8. | dec8_bin                 | dec8     |  69 |         | Yes      |       1 |  
  9. | cp850_general_ci         | cp850    |   4 | Yes     | Yes      |       1 |  
  10. | cp850_bin                | cp850    |  80 |         | Yes      |       1 |  
  11. | hp8_english_ci           | hp8      |   6 | Yes     | Yes      |       1 |  
  12. .................  


(3)创建数据库包括字符集和排序规则

[sql] view plain copy

  1. mysql> CREATE DATABASE IF NOT EXISTS hdu CHARACTER SET 'gbk' COLLATE 'gbk_chinese_ci';  
  2. Query OK, 1 row affected (0.00 sec)  


 

三、删除数据库

[sql] view plain copy

    1. mysql> DROP DATABASE my_db1;  
    2. Query OK, 0 rows affected (0.00 sec)  

 五、安装https证书

        域名是得要有的

      1.安装相关软件

# 扩展库
yum install epel-release
# 更新
yum update
# 安装
yum install httpd mod_ssl python-certbot-apache

添加虚拟主机 Apache vhost

我使用的域名是 deepppixel.com,域名要添加解析哦。

我创建的是基于域名的虚拟主机,就是多个域名指向同一个服务器地址。

还有两种方式是:基于 IP 地址 和基于端口。

先创建保存虚拟主机配置的文件夹

// 虚拟主机的配置文件
[root@~]# mkdir -p /etc/httpd/conf/vhost

然后创建域名网站的内容文件夹

// 使用域名方便以后添加新的域名,不会产生冲突,不要随意命名,你会后悔的
[root@~]# mkdir -p /var/www/deepppixel.com

添加域名的 log 日志文件

[root@~]# touch /etc/httpd/logs/deepppixel.com-error_log
[root@~]# touch /etc/httpd/logs/deepppixel.com-access_log

把上面创建的虚拟主机路径添加到 Apache 的配置文件中

[root@~]# vim /etc/httpd/conf/httpd.conf
......
# vhost
Include conf/vhost/*.conf

开始添加虚拟主机文件

[root@~]# vim /etc/httpd/conf/vhost/deepppixel.com.conf
<VirtualHost 私网 IP:80>
    ServerName deepppixel.com
    ServerAlias deepppixel.com *.deepppixel.com
    DocumentRoot "/www/deepppixel.com"
    ErrorLog "/logs/deepppixel.com-error_log"
    CustomLog "/logs/deepppixel.com-access_log"
    <Directory "/www/deepppixel.com">
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>
</VirtualHost>

检查 httpd.conf 是否有错

[root@~]# httpd -t
// 没有找到文件夹
AH00112: Warning: DocumentRoot [/www/deepppixel.com] does not exist 
// CustomLog 后面需要跟 两个或三个参数
AH00526: Syntax error on line 7 of /etc/httpd/conf/vhost/deepppixel.com.conf:
CustomLog takes two or three arguments, a file name, a custom log format string or format name, and an optional "env=" or "expr=" clause (see docs) 

出现了两个错误,修改如下

<VirtualHost 私网 IP:80>
    ServerName deepppixel.com
    ServerAlias deepppixel.com *.deepppixel.com
    DocumentRoot "/var/www/deepppixel.com"
    ErrorLog "logs/deepppixel.com-error_log"
    CustomLog "logs/deepppixel.com-access_log" "%h %l %u %t \"%r\" %>s %b"
    <Directory "/www/deepppixel.com">
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>
</VirtualHost>

重新检查即可

[root@~]# httpd -t
Syntax OK

重启 Apache 服务器

[root@~]# systemctl restart httpd.service

首先使用curl下载get-pip文件

curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"

使用Python来运行

python get-pip.py

安装完毕

方案一、更改库的默认字符集

创建库的时候指定默认字符集:

create database 库名 default charset=utf8;
1
或者修改现有库的字符集:

alter database 库名 character set utf8;
1
方案二、更改表的默认字符集,

创建表的时候指定默认字符集

create table 表名 (...) default charset=utf8;
1
或者修改现有表的字符集

alter table 表名 character set utf8;
1
方案三、修改配置文件(新创建的库和表会自动设置中文字符集)

修改配置文件详细步骤: (注意:为了防止把配置文件改错,修改之前先将其备份)

# 获取用户权限:
sudo -i
# 进入到mysql配置文件所在路径:
cd /etc/mysql/mysql.conf.d/ 
1
2
3
4
# 备份(-p选项会把原文件的权限也一起复制)
cp -p mysql.cnf mysql.cnf.bak #用vi打开配置文件mysqld.cnf并进行修改:
1
2
输入vi mysqld.cnf
找到 [mysqld],在 tmpdir =/tmp 后面按o键换行插入 character_set_server=utf8(如图所示):

按esc键 退出插入模式,按shift + : 进入命令行,输入wq保存并退出
输入 /etc/init.d/mysql restart 重启mysql服务
输入exit 退出超级用户模式

发布了24 篇原创文章 · 获赞 4 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_20081893/article/details/102130841