Monthly Archives: 十一月 2017

将 Google Fonts 替换到本地读取(转)

由于 Google Fonts 服务在国内被屏蔽了,所以导致很多引用了谷歌字体的网页在加载时打开十分缓慢。

解决方法也很简单,把网页中需要的字体下载到本地,并从本地加载字体文件即可。

不过有个小前提:需要先翻出去才能下载到所需要的谷歌字体文件哦。

  1. 翻出去
  2. 在网页的 html 源代码(假设为 index.html )中,找到引用了谷歌字体的部分,如:
    1
    <link href=”http://fonts.googleapis.com/css?family=Open+Sans:300,800″ rel=”stylesheet” type=”text/css” />
  3. 在网页浏览器中访问上面的地址 http://fonts.googleapis.com/css?family=Open+Sans:300,800 ,可以得到一个 css 文件,文件内容为:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    @font-face {
    font-family: ‘Open Sans’;
    font-style: normal;
    font-weight: 300;
    src: local(‘Open Sans Light’), local(‘OpenSans-Light’), url(https://themes.googleusercontent.com/static/fonts/opensans/v8/DXI1ORHCpsQm3Vp6mXoaTaRDOzjiPcYnFooOUGCOsRk.woff) format(‘woff’);
    }
    @font-face {
    font-family: ‘Open Sans’;
    font-style: normal;
    font-weight: 800;
    src: local(‘Open Sans Extrabold’), local(‘OpenSans-Extrabold’), url(https://themes.googleusercontent.com/static/fonts/opensans/v8/EInbV5DfGHOiMmvb1Xr-hqRDOzjiPcYnFooOUGCOsRk.woff) format(‘woff’);
    }

把它保存到本地,可命名为 OpenSans.css 。在 index.html 所在的位置新建一个目录,命名为 googlefonts ,将刚才得到的 OpenSans.css 文件放置在这个目录下。

  1. 在上面的 OpenSans.css 文件中,可以找到字体文件的地址,即:
    1
    https://themes.googleusercontent.com/static/fonts/opensans/v8/DXI1ORHCpsQm3Vp6mXoaTaRDOzjiPcYnFooOUGCOsRk.woff]]]

1
https://themes.googleusercontent.com/static/fonts/opensans/v8/EInbV5DfGHOiMmvb1Xr-hqRDOzjiPcYnFooOUGCOsRk.woff

将这两个文件下载到本地(不需修改文件名。以下的步骤假设保存时未修改文件名,若修改了文件名请自行修改以下步骤中的内容),并放置在 googlefonts 目录下。

  1. 修改 OpenSans.css 文件,将字体的地址改为本地地址,即将:
    1
    https://themes.googleusercontent.com/static/fonts/opensans/v8/DXI1ORHCpsQm3Vp6mXoaTaRDOzjiPcYnFooOUGCOsRk.woff

修改为:

1
DXI1ORHCpsQm3Vp6mXoaTaRDOzjiPcYnFooOUGCOsRk.woff

对另一个 woff 文件链接同样地做处理,即将:

1
https://themes.googleusercontent.com/static/fonts/opensans/v8/EInbV5DfGHOiMmvb1Xr-hqRDOzjiPcYnFooOUGCOsRk.woff

修改为:

1
DXI1ORHCpsQm3Vp6mXoaTaRDOzjiPcYnFooOUGCOsRk.woff
  1. 修改 index.html ,将 css 的地址改为本地地址,即将:
    1
    <link href=”http://fonts.googleapis.com/css?family=Open+Sans:300,800″ rel=”stylesheet” type=”text/css” />

修改为:

1
<link href=”googlefonts/OpenSans.css” rel=”stylesheet” type=”text/css” />

CentOS 7搭建LNMP教程(转)

Nginx (读“engine x”)是一款免费、开源、高性能的HTTP服务器。

Nginx 因性能稳定、功能丰富、配置简单、资源消耗低而著称。

本文介绍如何在Linux服务器(CentOS 7)上安装NginxMySQLPHP7(或者PHP5),这个环境也简称LNMPLEMP

其中,Nginx和PHP的采用PHP-FPM方式通信。

最新更新:Docker容器部署LNMP环境更加简单,推荐您尝试:Docker实现可一键部署的多域名LNMP环境

1 约定

本问中的测试主机名用本地IP地址:http://127.0.0.1,请根据具体情况替换。

教程中的命令都是在 root 权限下操作,请切换到 root 用户,命令:

su

输入密码后进入 root 用户控制台。

2 安装 MySQL5

与CentOS 6不同,CentOS 7服务器必须通过社区仓库来安装MySQL。

如果像CentOS 6中用:

yum install mysql

默认就会安装 MariaDB 数据库。

MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。

开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险。

因此,社区采用分支的方式来避开这个风险,目前来看没有太大必要。

MySQL的社区仓库:https://dev.mysql.com/downloads/repo/yum/

安装步骤:

wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum update
yum install mysql-server

在询问的时候键入y确定安装。

完成后,MySQL默认安装到/var/lib/mysql目录下。

然后启动MySQL,并设置开机启动:

systemctl start mysqld      # 启动 MySQL
systemctl enable mysqld     # 开机启动ySMySQL

MySQL安装后会绑定到地址 localhost127.0.0.1),默认用户名是root,密码为空。

使用下面的命令修改root密码:

mysql_secure_installation

MySQL5.7.6+版本修改root密码稍有不同,请看这里:MySQL5.7修改默认root密码

3 安装 Nginx

如果系统上有安装了Apache,先卸载。

service httpd stop
systemctl disable httpd
yum remove httpd

再安装 Nginx:

yum install epel-release
yum -y install nginx

启动 Nginx,并设置为开机启动:

systemctl start nginx
systemctl enable nginx

在浏览器中输入服务器的域名或IP地址(如:http://127.0.0.1 ),会看到如下的内容,说明安装成功:

Nginx 默认的HTML根目录是:/usr/share/nginx/html,可以修改其下的 index.html 的内容再看看效果。

为让web应用能读写HTML根目录下的目录和文件,需将其拥有者改为 nginx 用户:

chown -R nginx:nginx html/

4 安装 PHP-FPM

PHP 通过 PHP-FPM(FastCGI进程管理器)可以很好地与 Nginx 协同工作。

PHP-FPM 针对不同规模的网站功能和性能都非常优良,尤其是高并发大型网站。

如下,安装PHP5或PHP7都可以,两者安装其一即可。

PHP5安装步骤:

yum install php php-mysql php-fpm

PHP7安装步骤:

rpm -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-8.noarch.rpm   # 安装 EPEL 源
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm                      # 安装 Webstatic 源
yum install php71w php71w-common php71w-fpm php71w-opcache php71w-mysqlnd php71w-gd php71w-mbstring  # PHP 5.3.0以上推荐使用mysqlnd驱动,而不是msyql

这里,我们用webstatic源来安装PHP7。

webstatic源还有很多PHP7.1扩展,地址:https://webtatic.com/packages/php71/

PHP7.0版本把地址中的php71改成php70即可。

然后是配置。打开文件 /etc/php.ini,删除cgi.fix_pathinfo前面的;注释符,再赋值为0,如下:

[...]
cgi.fix_pathinfo=0
[...]

再配置PHP-FPM。打开文件 /etc/php-fpm.d/www.conf,

  1. 将 127.0.0.1:9000 改为 php-fpm.sock 文件
  2. 取消 listen.ownerlisten.group前面的注释
  3. usergroup的值由apache改为nginx

如下:

[...]
listen = /var/run/php-fpm/php-fpm.sock
[...]
listen.owner = nobody
listen.group = nobody
[...]
user = nginx
group = nginx
[...]

启动 PHP-FPM,并设置为开机启动:

systemctl start php-fpm
systemctl enable php-fpm

PHP-FPM 启动之后,会生成 socket 文件 /var/run/php-fpm/php-fpm.sock作为守护进程运行 FastCGI 服务。

 

如有老版本需要卸载PHP可用以下命令 (包括所有组件):

yum remove php-common

 

 

 

接下来配置 Nginx 的时候会用到这个 socket 文件。

5 配置 Nginx

Nginx 的配置文件是:/etc/nginx/nginx.conf,使用 vi 打开:

vi /etc/nginx/nginx.conf

配置项非常简单,如果需要了解详细内容,可看:https://www.nginx.com/resources/wiki/start/topics/examples/full/

下面介绍基本的配置。

首先,根据情况调整worker_processeskeepalive_timeout(可选):

[...]
worker_processes 4;
[...]
keepalive_timeout 2;
[...]

虚拟主机定义在 server{} 容器中,修改为如下内容:

[...]
    server {
        listen 80;
        listen [::]:80 default_server;
        server_name _;
        root /usr/share/nginx/html;

        # 设置默认主页
        index index.php index.html index.htm;
    
        location / {
            # First attempt to serve request as file, then
            # as directory, then fall back to displaying a 404.
            try_files $uri $uri/ =404;
        }

        # PHP脚本转发至PHP-FPM解析
        location ~ \.php$ {
            try_files $uri =404;
            fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_index index.php;
            include fastcgi_params;
        }
    }
[...]

关于配置的一些说明:

  • 首先,我们打开两个listen,让 Nginx 同时侦听 IPv4 和 IPv6 的80端口。
  • server_name _; 绑定所有的域名(可以指定主机名,如 www.example.com)。
  • 脚本根目录 root 不变,依然是 /usr/share/nginx/html 。
  • 索引首页文件 index 添加上 index.php
  • 其中针对 PHP 很重要的部分在location ~\.php$ {} 中。为防止零日攻击(详见:http://wiki.nginx.org/Pitfalls#Passing_Uncontrolled_Requests_to_PHP andhttp://forum.nginx.org/read.php?2,88845,page=3),该部分开头设置了try_files $uri =404;

保存配置文件后,检查配置文件的语法,再重新加载 Nginx:

nginx -t                       # 检查配置文件语法
systemctl reload nginx         # 重新加载nginx

在 /usr/share/nginx/html 目录下创建文件 index.php,内容为:

<?php
    phpinfo();

再次访问 http://127.0.0.1,如下:

可以看到,PHP5 已经工作,根据 Server API 行看出,是通过 FPM/FastCGI 方式工作的,往下拉会看到 PHP5 加载的其他模块,如MySQL、cURL、sqlite模块的支持。

6 PHP-FPM 使用 TCP 连接

默认情况下,PHP-FPM 通过 /var/run/php-fpm/php-fpm.sock 文件侦听 socket。

当然,也可以设置 PHP-FPM 使用 TCP 连接。

打开文件 /etc/php-fpm.d/www.conf,设置 listen 值如下:

[...]
;listen = /var/run/php-fpm/php-fpm.sock
listen = 127.0.0.1:9000
[...]

这样 PHP-FPM 会侦听地址 127.0.0.1(localhost)和端口9000,确保这个端口没有被其他程序占用。

然后重新加载 PHP-FPM:

systemctl reload php-fpm

接下来,编辑 /etc/nginx/nginx.conf 文件,修改如下一行:

[...]
#fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_pass 127.0.0.1:9000;
[...]

然后,重载 nginx 就可以了:

sysemctl reload nginx

这样,整个LNMP环境就搭好了。

linux常用命令

linux删除目录很简单,很多人还是习惯用rmdir,不过一旦目录非空,就陷入深深的苦恼之中,现在使用rm -rf命令即可。
直接rm就可以了,不过要加两个参数-rf 即:rm -rf 目录名字
-r 就是向下递归,不管有多少级目录,一并删除
-f 就是直接强行删除,不作任何提示的意思

 

 

使用CentOS运行网站的时候,因为需要把网站文件移动到新建文件夹中,要使用mv命令。有关mv命令的参数我们就不过多说了,今天就简单说一下如何把源文件夹下所有文件移动到新建文件夹中。

格式:mv 源文件夹/* 新建文件夹

实例:mv /home/wwwroot/www.vpsss.net/* /home/wwwroot/vpsss

上面就是把源文件夹下所有文件都移动到新建文件夹中。

完成之后我们用cd 新建文件夹 命令进入,然后使用ls命令查看一下是否全都移动过来了。

 

 

CentOS 7.x 安装drupal 8

CentOS 7.x 安装drupal 8

1.drupal 8.x 需求


类型 需求
Database 1.MySQL 5.5.3/MariaDB 5.5.20/Percona Server 5.5.8 or higher with PDO and an InnoDB-compatible primary storage engine,

2.PostgreSQL 9.1.2 or higher with PDO,

3.SQLite 3.6.8 or higher

PHP PHP 5.5.9 or higher

官方需求链接


2.部署LAMP(Linux+Apache+Mysql+PHP)


更新系统安装包(CentOS)[Option]

# yum update

安装Apache

# yum install httpd

apache设置默认启动[Option]

# systemctl start httpd
# systemctl enable httpd 

apache浏览器访问

在浏览器中输入网址后可以看到测试页面.  Testing…….

安装MariaDB

# yum install mariadb-server mariadb 

设置MariaDB自动运行

# systemctl start mariadb
# systemctl enable mariadb 

初始化MariaDB

# /usr/bin/mysql_secure_installation 

【以上参考:CentOS 7 install LAMP

安装PHP


drupal 8.x要求php在5.5.9以上,默认的centOS 7 安装5.4,5.5的版本放在webtatic上【referrence

安装扩展包

# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

安装php相关包

# yum install php55w php55w-opcache php55w-gd php55w-mbstring php55w-mysqlnd php55w-pdo php55w-opcache php55w-xml

上述为drupal必须安装的包:

类型 说明
php55w 必须,版本5.5.35
php55w-cli 必须
php55w-common 必须
php55w-gd 必须,drupal 8要求
php55w-mbstring 必须,drupal 8要求,处理unicode字符
php55w-mysqlnd 必须,drupal 8要求,链接mariadb
php55w-opcache 必须,缓存
php55w-pdo 必须,drupal 8要求,数据库
php55w-xml 必须

测试php安装

# php -v
PHP 5.5.35 (cli) (built: May  1 2016 11:44:25)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2015 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2015, by Zend Technologies

测试apache

##重启apache
# systemctl restart httpd

3.下载安装drupal 8.x


下载

## 1.wget下载
# wget https://ftp.drupal.org/files/projects/drupal-8.4.2.tar.gz
## 2.解压缩到apache
# tar xvfz drupal-8.4.2.tar.gz -C /var/www/html
### 3.重命名
# cd /var/www/html
# mv drupal-8.4.2 drupal
## 4.修改权限
# chown -R apache:apache /var/www/html/drupal/
## 5.复制配置文件
# cd /var/www/html/drupal/sites/default
# cp -p default.settings.php settings.php

新建数据库

# mysql -u root -p
>create database drupal_db;
>CREATE USER db_user@localhost IDENTIFIED BY 'Durpal@123#';
>GRANT ALL PRIVILEGES ON drupal_db.* TO db_user@localhost;
>FLUSH PRIVILEGES;
>exit;

打开浏览器http://your.ip/drupal

 

 

【Referrence】  1.http://www.linuxtechi.com/how-to-install-drupal-8-on-centos-7  2.https://www.linode.com/docs/websites/cms/install-and-configure-drupal-8


常见FAQ:


clean URL配置:

## 查看apache是否有rewrite_module
# apachectl -M |grep rewrite
>rewrite_module (shared)
## 配置 /etc/httpd/conf/httpd.conf
# vim /etc/httpd/conf/httpd.conf
## 在最后添加:
LoadModule rewrite_module modules/mod_rewrite.so
## 修改AllowOverride
<Directory "/var/www/html/drupal">   
    AllowOverride All
    Require all granted
</Directory>
##保存退出

重启apache服务:

systemctl restart httpd

Centos7安装vsftpd (FTP服务器)(转)

为什么还需要搭建FTP服务器呢?很简单,因为放在服务器中的网页文件需要不定期的更新,如果还是像之前博文中那样用touch创建、vim编辑内容,如果需要对网站进行一个大更新,那绝对是一个非常大的工程,如果有FTP服务的话,只需要用FTP工具连接到服务器,把需要更新的文件放到网站目录指定位置下覆盖更新就好了,非常简单。在CentOS下,搭建FTP服务器是使用vsftpd软件。

 

1.安装VSFTPD

老样子,先用XShell或者是别的SSH工具远程连接到服务器,用root用户登陆服务器。

然后键入以下命令以安装VSFTPD

yum install vsftpd

依旧会在检查依赖项目后要求用户确认,按y并回车即可。当提示“完成!”后即代表VSFTPD安装完毕。

 

然后我们需要将vsftpd启动并设置成开机自启动:

 

启动vsftpd:

systemctl start vsftpd.service

设置vsftpd开机自启动:

systemctl enable vsftpd.service

 

2.配置VSFTPD

完成第一步之后其实已经启动了ftp服务器,但我们并用不了,因为我们还没有对vsftpd进行一些必要的设置。

vsftpd的配置文件是/etc/vsftpd/vsftpd.conf,直接用vim打开编辑即可。

使用vim编辑器打开vsftpd配置文件:

vim /etc/vsftpd/vsftpd.conf

 

vsftpd的配置文件非常大,所以我就不截图展示和完整展示了,我们直接挑关键的地方进行一些简单的修改。

注:在vim中,非编辑状态下输入“/”+需要查找的内容 后按回车键可以快键查找指定字符串。

 

anonymous_enable=YES

是否允许匿名用户登陆FTP。

为了安全起见关闭这个功能(将等号后的YES改成NO即可)。

 

dirmessage_enable=YES

切换目录时,显示目录下.message文件中的内容

默认是开启的

 

local_umask=022

FTP上本地的文件权限,默认是077,不过vsftpd安装后的配置文件里默认是022.

没有什么特殊情况不用修改。

 

xferlog_enable=YES

启用上传和下载的日志功能,默认开启。

建议开启此功能,它可以对用户的操作进行日志记录,当出现问题的时候可以通过日志排查问题。

 

ftpd_banner=XXXX

FTP的欢迎信息。

在FTP登陆成功之后,服务器会往客户端发送一个欢迎消息以表示登陆成功。这是一个个性化的功能,您可以自由的设置其值,也可以在配置最前加上#注释本行。

 

data_connection_timeout=120

数据连接超时时间。

如果在使用vsftpd上传下载碎小文件的时候容易发生超时中断的问题,可以将本行前的#注释符去掉,然后将120改成5或者更小,然后重启vsftpd即可。

 

修改配置文件完成。保存后重启VSFTPD。

重启vsftpd服务:

systemctl restart vsftpd.service

 

3.创建FTP用户

修改完vsftpd的配置文件之后我们还是不能使用vsftpd,因为我们还没有设置ftp的用户。

 

添加一个名为ftpuser的用户,用户文件夹位置为:/var/www/html,且禁止此用户登陆服务器:

useradd -d /var/www/html -s /sbin/nologin ftpuser

 

然后设置一下密码,为ftpuser设置密码:

passwd ftpuser

 

这时候系统会要求您输入新的密码并且重复一遍。顺便一提在SSH中,密码一般不会回显,所以初学者可能会觉得输进去没反应,其实是已经输进去了。

 

4.调整防火墙

经过第三步创建用户之后,有小部分的同学可能已经可以登陆了。但是绝大部分的同学会连接ftp失败,提示连接失败 (连接已超时)

 

失败的原因很简单,不知大伙有没有想起来之前的博文中我教大家关闭了系统自带的firewall防火墙,换上了新的iptables防火墙?就是iptables防火墙将我们的连接请求阻断了。如果你个人怕麻烦,而且也觉得防火墙没什么用,那你可以将iptables防火墙关闭,关闭防火墙之后就可以正常使用了。

不过因为这么一点小事儿就关闭防火墙未免显得有点水,而且防火墙摆在那里总归是有用的。那么有什么办法既保留防火墙,又能让iptables不把我们的ftp连接请求阻断呢?

当然有,我们需要调整一下iptables的配置文件,使ftp协议的端口可以通过防火墙。

 

FTP有两种模式,主动模式和被动模式。由于两种模式使用的端口不一样,所以调整的内容也不一样。至于FTP的主动模式与被动模式有什么区别,待笔者日后慢慢交代。

 

FTP主动模式

使用Vim编辑器打开iptables配置文件:

vim /etc/sysconfig/iptables

然后在配置文件中加入这么一句:

-A INPUT -m state –state NEW -m tcp -p tcp –dport 21 -j ACCEPT

这句话告诉iptables开放21端口,允许接受从21端口传入的连接。

然后重启iptables服务:

systemctl restart iptables.service

 

现在就可以使用ftp工具登陆我们的ftp服务器了!

 

FTP被动模式

如果ftp处于被动模式下,除了需要修改iptables的配置文件以外,还需要修改vsftpd的配置文件。

首先是修改vsftpd的配置文件:

使用Vim编辑器打开vsftpd配置文件:

vim /etc/vsftpd/vsftpd.conf

 

现在配置文件中找到“connect_from_port_20=YES”并将它修改为“connect_from_port_20=NO”,关闭掉vsftpd的主动模式。

然后在配置文件的末尾追加:

#使vsftpd运行在被动模式

pasv_enable=YES

#被动模式最小端口号30000

pasv_min_port=30000

#被动模式最大端口号31000

pasv_max_port=31000

保存配置文件并退出。

然后重启vsftpd服务:

systemctl restart vsftpd.service

 

然后再使用Vim编辑器打开iptables配置文件:

vim /etc/sysconfig/iptables

 

添加这两句话:(“#”开头的是注释,可以不添加)

#开放ftp协议21端口,允许接受来自21端口的新建TCP连接

-A INPUT -p tcp -m state –state NEW -m tcp –dport 21 -j ACCEPT

#开放30000-31000号端口,允许接受来自此端口号段的新建TCP连接

-A INPUT -p tcp –dport 30000:31000 -j ACCEPT

保存并退出,然后重启iptables服务:

systemctl restart iptables.service

 

现在就可以使用ftp工具登陆我们的ftp服务器了!

 

5.调整文件夹权限

可能现在又有个问题冒出来了,使用ftp工具登陆服务器之后,不管创建什么,都会失败。

 

这个问题主要是在服务器的文件夹权限设置上。以笔者为例,笔者将ftp服务器登陆后的默认文件夹设置为/var/www/html,登陆ftp之后上传什么文件都显示553 Could not create file.

 

进入/var/www文件夹

cd /var/www

 

查看一下目录权限

ls –l

 

我们可以看到html文件夹的权限是drwxr-xr-x。

我们将这个权限字符串分为四个部分,以顿号隔开:d、rwx、r-x、r-x。

这四部分分别说明了:

1.此文件其实是个文件夹;

2.此文件的文件主拥有读、写、执行权限;

3.此文件的组用户拥有读、执行权限;

4.此文件的其他用户拥有读、执行权限。

 

果然是权限不够!

调整一下权限,让所有人都拥有读、写、执行的权力

chmod 777 html

再看一下现在的文件夹权限

ls –l

 

可以了,返回ftp工具,上传文件,一切正常!

 

MySQL 5.7以上 root用户默认密码问题(转)

废话少说一句话系列:

CentOS系统用yum安装MySQL的朋友,请使用 grep “temporary password” /var/log/mysqld.log 命令,返回结果最后引号后面的字符串就是root的默认密码。

(如果不存在/var/log/mysqld.log文件,请确保您已经启动过一次MySQL服务。CentOS 7启动MySQL服务的命令是:systemctl start mysqld.service

 

最近有点小问题,需要在本地虚拟机里搭建一个MySQL服务器.但是按着以前的日志一步步操作,最后总是会卡在MySQL安装完之后的root登陆上。

按照以前,安装完MySQL之后是可以直接用

mysql -uroot

进入MySQL控制台的,结果现在不行了,会提示

ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: NO)

 

被拒绝访问了。一开始以为是因为我之前已经设置过CentOS自带的MariaDB的密码,安装MySQL的时候MySQL替换了MariaDB,但继承了MariaDB的密码,然后用命令:

mysql -uroot -p

去带密码登陆,但是试了几个密码都不对。

 

正巧后来因为手贱犯了点事儿,系统被我玩炸了,重装了CentOS系统。再次安装MySQL的时候还是没有办法登陆进控制台,提示和之前一样。

这就有点棘手了,难不成MySQL现在还有默认密码了?抱着这个怀疑去MySQL官网一查文档,还真是!

在MySQL的这篇名为《Changes in MySQL 5.7.4 (2014-03-31, Milestone 14)》的文档里,有这么一段:

Incompatible Change: MySQL deployments installed using mysql_install_db now are secure by default. The following changes have been implemented as the default deployment characteristics:

 

The installation process creates only a single root account, ‘root’@’localhost’, automatically generates a random password for this account, and marks the password expired. The MySQL administrator must connect as root using the random password and use SET PASSWORD to select a new password. (The random password is found in the .mysql_secret file in the home directory of the effective user running the script.)

 

Installation creates no anonymous-user accounts.

 

Installation creates no test database.

 

个人渣翻如下:

不兼容的更改:MySQL的部署安装使用mysql_install_db,现在默认是安全的。下面的更改已被实现并成为默认部署特性:

 

在安装的过程里,将仅创建一个root账户——’root’@’localhost’,同时将自动生成一个随机密码给它,并标记此密码已过期。MySQL管理员必须使用随机密码登陆root账户,并使用SET PASSWORD去设置一个新的密码。(随机密码可以在运行安装脚本的有效用户其主目录中的.mysql_secret文件中找到。

 

安装时不创建匿名用户账户。

 

安装时不创建测试数据库。

 

有关重点我已经有红色加粗字体标出。不过这个是脚本部署的,我当时是直接将MySQL源添加进了系统源里,然后用yum install mysql-community-server命令安装的,所以自然是没有办法在主目录里找到“.mysql_secret”文件。那密码会在哪儿呢?

其实MySQL在运行的时候会有一个日志文件,它存在于/var/log/mysqld.log,我们在安装完成后第一次启动MySQL服务时,MySQL生成的随机密码就在这个文件里,我们可以直接用下面这条命令显示出这个文件里的所有内容:

cat /var/log/mysqld.log

 

这满屏幕密密麻麻的字,看着就晕,如果我说密码已经在上面的截图里了,你能马上找到吗?肯定得花好久,所以我们这里可以用个更方便的命令:

grep “temporary password” /var/log/mysqld.log

 

怎么样,现在密码是不是很清楚了?被设置为了“m6qVLN8kYQ?d”。

现在就可以用随机密码登陆MySQL控制台了。

 

现在好不容易进入了控制台,接下来要做的就是修改密码了,毕竟这么一串密码谁都记不住吧?设置新密码的命令是:

SET PASSWORD = PASSWORD(‘你的新密码’);

不过需要注意的是现在MySQL已经强制要求强密码,已经不能再用弱密码比如“123456”了。如果你设置的密码过于简单,会提示错误:

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

(2017.5.31补充:这是因为MySQL在5.6.6加入了“validate_password”插件,它默认设置下要求用户使用强密码。如果需要使用弱密码请您查阅笔者另外一篇博客:《MySQL 5.6.6+ 使用弱密码》)

 

写在最后:这个问题其实还是蛮棘手的,因为完全不知道MySQL后来加了初始随机密码的问题,问了几个朋友他们都说自己部署的时候没有这个问题,最后只好去找官方文档。一是文档全英文,二是自己英语渣,再加上相关文档发布的较早,最后花费了好多时间在这上面。总之也是不知道该对MySQL说什么好……

 

 

MySQL5.7 开始,增加了很多安全性的更新,老版本的用户可能会有一些不习惯。

5.7.6 版本以后,首次安装并启动MySQL数据库时,会生成一个临时密码到日志文件。如下:

$ cat /var/log/mysqld.log | grep 'password'
2016-12-10T06:30:12.041470Z 1 [Note] A temporary password is generated for root@localhost: nWoo>o0rXtr4

临时密码为:nWoo>o0rXtr4

使用该密码登陆数据库,但是不能进行任何操作,提示需要先修改密码。

mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

此时修改密码会遇到验证,简单的密码会提示不符合规则:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

因为5.7里引入了一个validate_password插件来检验密码强度。

默认值分别如下:

mysql> show variables like 'vali%';
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password_dictionary_file    |        | 
| validate_password_length             | 8      | 
| validate_password_mixed_case_count   | 1      |
| validate_password_number_count       | 1      |
| validate_password_policy             | MEDIUM |
| validate_password_special_char_count | 1      |
+--------------------------------------+--------+
6 rows in set (0.01 sec)

意义如下:

validate_password_length                # 密码的最小长度,默认为8。
validate_password_mixed_case_count      # 至少要包含小写或大写字母的个数,默认为1。
validate_password_number_count          # 至少要包含的数字的个数,默认为1。
validate_password_policy                # 强度等级,可设置为0、1、2。
                                            #【0/LOW】:只检查长度。
                                            #【1/MEDIUM】:在0等级的基础上多检查数字、大小写、特殊字符。
                                            #【2/STRONG】:在1等级的基础上多检查特殊字符字典文件,此处为1。
validate_password_special_char_count    # 至少要包含的特殊字符的个数,默认为1。

所以,初始设置密码必须大于8位、包含数字、大小写字母、特殊字符

当然,也可以修改配置,减弱密码强度验证。

 

 

关于 小柊

就是一个简单的孩子。
活在梦里的程序员。

本站所有文章转载时请注明原出处,谢谢合作。

CentOS 7 x64基本软件(LAMP)安装及配置(转)

然而服务器刚刚到手的时候都是干干净净——除了系统以外就没有什么软件了。这就意味着要我们手动去安装类似于Apache、php、MySQL之类的软件。不过好在Linux下有一个好用的工具Yum:

Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。

利用这个工具可以轻松的安装我们所需要的绝大部分软件,下面就由笔者我来进行一个简单的演示。

1.更换默认防火墙

在安装前,我们有一些小问题要处理一下:在CentOS中,系统默认的防火墙是firewall,我们在这里改为更加常用的iptables防火墙。

 

首先是停用原先的firewall防火墙服务:

systemctl stop firewalld.service

 

然后禁用firewall防火墙的开机自启:

systemctl disable firewalld.service

 

然后是安装iptables:

yum install iptables-services

然后Yum插件会自动检查所需要的依赖项,然后会列出所需要下载的所有文件及其大小,然会提示用户是否继续,输入y并回车即可。

 

有时候可能会提示安装包的公钥未安装,老样子,按个y并回车即可。

 

等到提示“完毕!”即可。

 

接下来我们需要对iptables进行一些必要的配置。

vim /etc/sysconfig/iptables

上面的命令将启动Vim编辑器编辑iptables的配置文件,先按i键进入编辑模式,把里面原有内容全部删除,将以下内容输入。输入结束后按Esc键退出编辑模式,并输入:wq保存并退出。

(关于FTP,我会在以后的文章里讲解)

# sample configuration for iptables service
# you can edit this manually or use system-config-firewall
# please do not ask us to add additional ports/services to this default configuration
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
#SSH
-A INPUT -p tcp -m state –state NEW -m tcp –dport 22 -j ACCEPT
#HTTP
-A INPUT -p tcp -m state –state NEW -m tcp –dport 80 -j ACCEPT
#MySQL
-A INPUT -p tcp -m state –state NEW -m tcp –dport 3306 -j ACCEPT
-A INPUT -j REJECT –reject-with icmp-host-prohibited
-A FORWARD -j REJECT –reject-with icmp-host-prohibited
COMMIT

 

 

配置文件编辑完成之后记得进行以下两个操作:

重启iptables服务以使用新的配置文件:

systemctl restart iptables.service

设置iptables服务开机自启动:

systemctl enable iptables.service

 

注:上面的iptables配置已经开启了22,80和3306端口(SSH、HTTP、MySQL端口)

 

2.关闭SELinux

除了需要更改系统默认的防火墙以外,我们还需要关闭SELinux,这个步骤是可选的。

SELinux是一个由美国国家安全局和SCC开发的 Linux的一个扩张强制访问控制安全模块。它可以保护Linux,但是开着SELinux有时候会发生一些莫名其妙的问题。所以在这里还是关掉算了。

 

先修改一下配置文件

vim /etc/selinux/config

在Vim编辑器中找到

#SELINUX=enforcing                  (在前面加#注释掉)

#SELINUXTYPE=targeted           (在前面加#注释掉)

SELINUX=disabled                      (增加此行)

 

修改结束后保存退出

 

修改配置文件之后并不能立即关闭SELinux,我们还需要键入以下命令来立即关闭SELinux:

setenforce 0

 

3.安装Apache

安装Apache只需要在SSH中键入命令:

yum install httpd

安装过程和安装iptables差不多,先检查依赖项和用户确认。一般来说需要用户确认的地方直接按y继续就可以了。

当提示“完成”的时候就代表Apache安装结束。

 

安装结束之后记得启动Apache服务以及设置Apache服务开机自启。

启动Apache服务

systemctl start httpd.service

设置Apache服务开机自启

systemctl enable httpd.service

 

完成以上步骤之后,就可以在浏览器中直接输入服务器的IP地址并访问了,大概是这么个界面,Apache的测试页。

 

至此Apache安装结束。

 

4.安装MySQL

在CentOS 7上安装MySQL就有点麻烦了,因为在CentOS的yum源中貌似没有正常安装MySQL时的Mysql-sever文件。这个问题在网上找了一圈之后说是因为CentOS 7默认将MariaDB视作MysSQL。因为MySQL被Oracle收购后,原作者担心MySQL闭源,所以又写了一个MariaDB,这个数据库可以理解为MySQL的分支。

虽然MariaDB和MySQL的差距并不大,但为了潜在的兼容性问题,还是装MySQL比较好。

这次的步骤比较繁琐,需要四步。

 

从MySQL官网下载MySQL的rpm包

wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm

wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm

(最新的下载链接可以去 http://dev.mysql.com/downloads/repo/yum/ 找,以后不再更新)

安装所下载的rpm包

rpm -ivh mysql-community-release-el7-5.noarch.rpm

rpm -ivh mysql57-community-release-el7-8.noarch.rpm

yum install mysql-community-server

删除下载下来的rpm包

rm mysql-community-release-el7-5.noarch.rpm

rm mysql57-community-release-el7-8.noarch.rpm

 

至此MySQL安装结束。

 

5.安装php

php的安装和Apache差不多,也只要几个Yum命令即可。

 

安装php本体

yum install php

安装php的几个组件,使php可以获得MySQL支持。

yum install php-mysql php-gd libjpeg* php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-bcmath php-mhash

 

重启一下Apache服务和MySQL服务

systemctl restart mysqld.service

systemctl restart httpd.service

 

至此php安装结束。

以上是PHP5.4.16,下面改为PHP5.6

配置yum源

追加CentOS 6.5的epel及remi源。

# rpm -Uvh http://ftp.iij.ad.jp/pub/linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

以下是CentOS 7.0的源。

# yum install epel-release
# rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

使用yum list命令查看可安装的包(Packege)。

# yum list --enablerepo=remi --enablerepo=remi-php56 | grep php

安装PHP5.6

yum源配置好了,下一步就安装PHP5.6。

# yum install --enablerepo=remi --enablerepo=remi-php56 php php-opcache php-devel php-mbstring php-mcrypt php-mysqlnd php-phpunit-PHPUnit php-pecl-xdebug php-pecl-xhprof

用PHP命令查看版本。

# php --version

 

6.为MySQL设置root密码

(注:MySQL 5.7以上安装时将随机生成root密码,MySQL 5.7以上请参照此博客:《MySQL 5.7以上 root用户默认密码问题》)

在第4步中里,我们安装了MySQL,但是在默认情况下,安装结束后MySQL的root密码是空着的,为了保证安全,我们需要给MySQL的root账户设置密码。

进入MySQL控制台:

mysql –uroot

设置root密码为123456

set password for ‘root’@’localhost’ = password(‘123456’);

退出MySQL控制台

exit;

 

7.配置Apache并调试php

首先用Vim编辑器打开Apache的配置文件

vim /etc/httpd/conf/httpd.conf

 

一般来说没有什么需要特别改动的地方,我们只需要在最后面加一下自己的网站就行了,假设我们的网站文件放在了“/var/www/html/default”文件夹下。那我们只需要在Apache的配置文件最后面添加这么一段

<VirtualHost *:80>

ServerName localhost

DocumentRoot /var/www/html/default

<Directory “/var/www/html/default”>

Options FollowSymLinks

AllowOverride None

Order allow,deny

Allow from all

</Directory>

</VirtualHost>

然后保存退出。

 

然后重启Apache服务使配置文件生效

systemctl restart httpd.service

 

这个时候如果直接使用浏览器访问服务器的IP地址的话,会得到HTTP 404的错误提示。

 

因为我们还没有在网站的文件夹中放置自己的首页文件。网站文件可以通过FTP上传到服务器中,如何在CentOS 7中搭建FTP服务器笔者将会在以后的博客中详细说明。我们今天就先自己写一个php测试页放在网站目录中当首页,测试php环境是正常。

进入网站目录

cd /var/www/html/default

一般来说安装完Apache之后就会自动生成/var/www/html文件夹,但本例中的default文件夹需要自己去创建,创建文件夹的命令是mkdir

例如在/var/www/html文件夹中创建default文件夹

 

进入/var/www/html文件夹

cd /var/www/html

创建default文件夹

mkdir default

进入/var/www/html/default文件夹

cd /var/www/html/default

 

现在网站的文件夹就已经创建好了,接下来我们在网站文件夹中创建一个php测试页。

在进入/var/www/html/default文件夹之后执行以下命令

 

创建一个index.php文件

touch index.php

使用Vim编辑器编辑index.php文件

vim index.php

 

在Vim编辑器中输入

<?php

phpinfo();

?>

 

好了,保存之后就可以回到浏览器里按F5刷新网页,如果出现以下页面的话则说明Apache和php环境运行正常。

 

 

以上就是本文所有的内容,恳请各位看官批评指正!

 

小柊

2015年10月21日 22:36:01