天天看点

CentOS7-redis-3.0.0、Nginx1.14.0、PHP7+,Mysql5.6安装与配置(一番折腾,亲测总结)

一.redis安装 redis3.0.5

yum install gcc      

linux下安装

#下载
wget http://download.redis.io/releases/redis-3.0.0.tar.gz
tar zxvf redis-3.0.0.tar.gz
cd redis-3.0.0
#如果不加参数,linux下会报错
make MALLOC=libc      

 安装好之后,启动文件

#启动redis
src/redis-server &

#关闭redis
src/redis-cli shutdown      

测试redis

$ src/redis-cli
127.0.0.1:6379> set foo bar
OK
127.0.0.1:6379> get foo
"bar"
$      

测试成功

二、mysql安装 5.6

(1)检查系统中是否已安装 MySQL。

rpm -qa | grep mysql

 返回空值的话,就说明没有安装 MySQL 。

注意:在新版本的CentOS7中,默认的数据库已更新为了Mariadb,而非 MySQL,所以执行 yum install mysql 命令只是更新Mariadb数据库,并不会安装 MySQL 。

(2)查看已安装的 Mariadb 数据库版本。

rpm -qa|grep -i mariadb

(3)卸载已安装的 Mariadb 数据库。

rpm -qa|grep mariadb|xargs rpm -e --nodeps

(4)再次查看已安装的 Mariadb 数据库版本,确认是否卸载完成。

rpm -qa|grep -i mariadb

 (5)下载安装包文件。

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

(6)安装mysql-community-release-el7-5.noarch.rpm包

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

安装完成之后,会在 /etc/yum.repos.d/ 目录下新增 mysql-community.repo 、mysql-community-source.repo 两个 yum 源文件。

执行 yum repolist all | grep mysql 命令查看可用的 mysql 安装文件。

(6)安装mysql。

yum install mysql-server

(7)检查mysql是否安装成功。

rpm -qa | grep mysql

(8)启动 mysql 服务 。

systemctl start mysqld.service #启动 mysql

systemctl restart mysqld.service #重启 mysql

systemctl stop mysqld.service #停止 mysql

systemctl enable mysqld.service #设置 mysql 开机启动

(9)设置密码 。

mysql5.6 安装完成后,它的 root 用户的密码默认是空的,我们需要及时用 mysql 的 root 用户登录(第一次直接回车,不用输入密码),并修改密码。

# mysql -u root

mysql> use mysql;

mysql> update user set password=PASSWORD("这里输入root用户密码") where User='root';

mysql> flush privileges; 

(10)设置远程主机登录

mysql> GRANT ALL PRIVILEGES ON *.* TO 'your username'@'%' IDENTIFIED BY 'your password';

执行以下命令,为root 用户添加远程登录的能力。

mysql> GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "123456";

最后 还需要开放Linux的对外访问的端口3306 #开放3306端口 /sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT #开放的端口永久保存到防火墙 firewall-cmd --zone=public --add-port=3306/tcp --permanent

三、nginx安装  nginx1.14.0

。在Centos下的下,源不提供的nginx的的安装,可以通过切换荫源的方法获取安装也可以通过直接下载安装包的方法,**以下命令均需根权限执行**:

首先安装必要的库(nginx中gzip模块需要zlib库,重写模块需要pcre库,ssl功能需要openssl库)。选定** / usr / local **为安装目录,

1.安装gcc gcc-c ++(如新环境,未安装请先安装)

$ yum install -y gcc gcc-c ++

2.安装PCRE库

$ cd / usr / local / 

$ wget http://jaist.dl.sourceforge.net/project/pcre/pcre/8.33/pcre-8.33.tar.gz 

$ tar -zxvf pcre-8.33.tar.gz 

$ cd pcre -8.33 

$ ./configure 

$ make && make install 

如报错:configure:错误:您需要一个C ++编译器来支持C ++ 

解决:yum install -y gcc gcc-c ++

如make报错 安装如下依赖

yum -y install gcc gcc-c++ autoconf automake

yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel (安装依赖zlib、openssl和pcre)

3.安装SSL库

$ cd / usr / local / 

$ wget http://www.openssl.org/source/openssl-1.0.1j.tar.gz 

$ tar -zxvf openssl-1.0.1j.tar.gz 

$ cd openssl-1.0.1j 

$ ./config 

$ make && make install

4.安装的zlib的库存

$ cd / usr / local / 

$ wget http://zlib.net/zlib-1.2.11.tar.gz 

$ tar -zxvf zlib-1.2.11.tar.gz 

$ ./configure 

$ make && make install

4.安装nginx的的

$ cd / usr / local / 

$ wget http://nginx.org/download/nginx-1.14.0.tar.gz 

$ tar -zxvf nginx-1.14.0.tar.gz 

$ cd nginx-1.14.0 

$./configure --user=nobody--group=nobody --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_gzip_static_module --with-http_realip_module --with-http_sub_module --with-http_ssl_module --with-pcre=/usr/local/pcre-8.33 --with-zlib=/usr/local/zlib-1.2.11 --with-openssl=/usr/local/openssl-1.0.1j

(注:   不能有空格  -  with- http_ssl_module:这个不加的话后面在nginx.conf配置ssl:on after,启动会报nginx:

[emerg]未知指令“ssl”在/opt/nginx/conf/nginx.conf异常)

$ make && make install

5.启动

$ /usr/local/nginx/sbin/nginx

检查是否启动成功:

打开浏览器访问此机器的IP,如果浏览器出现欢迎来到nginx的!则表示Nginx的已经安装并运行成功。

部分命令如下:

重启:

$/usr/local/nginx/sbin/nginx -s reload

停止:

$ /usr/local/nginx/sbin/nginx -s stop

测试配置文件是否正常:

 $ /usr/local/nginx/sbin/nginx -t

强制关闭:

$ pkill nginx

配置

以上安装方法的nginx的的配置文件位于

/usr/local/nginx/conf/nginx.conf 

Nginx的配置文件常见结构的从外到内依次是「HTTP」「服务器」「位置」

等等,缺省的继承关系是从外到内,也就是说内层块会自动获取外层块的值作为缺省值。

服务器

接收请求的服务器需要将不同的请求按规则转发到不同的后端服务器上,在nginx的中我们可以通过构建虚拟主机(服务器)的概念来将这些不同的服务配置隔离。

服务器{ 

听80; 

server_name localhost; 

root html; 

index index.html index.htm; 

}

例如我们笔戈玩下的两个子项目passport和wan就可以通过在nginx的配置文件中配置两个服务器,servername分别为passport.bigertech.com和wan.bigertech.com。这样的话不同的url请求就会对应到nginx相应的设置,转发到不同的后端服务器上。

这里的听指监听端口,server_name用来指定IP或域名,多个域名对应统一规则可以空格分开,index用于设定访问的默认地址,root指令用于指定虚拟主机的网页跟目录,这个地方可以是相对地址也可以是绝对地址。

通常情况下我们可以在nginx.conf中配置多个服务器,对不同的请求进行设置。就像这样:

服务器{

听80;

server_name host1;

root html;

index index.html

index.htm的;

}

服务器{

听80;

server_name host2;

root / data / www / html;

index index.html index.htm;

}

但是当服务器超过2个时,建议将不同对虚拟主机的配置放在另一个文件中,然后通过在主配置文件nginx.conf加上包括指令包含进来。更便于管理。

包括vhosts / * .conf;

就可以把虚拟主机的文件都包含进去啦。

Localtion 

每个url请求都会对应的一个服务,nginx进行处理转发或者是其他服务器的一个服务路径。而这个路径的匹配是通过location来进行的。我们可以将server当做对应一个域名进行的配置,而位置是在一个域名下对更精细的路径进行配置。

以上面的例子,可以将根和索引指令放到一个位置中,那么只有在匹配到这个位置时才会访问根后的内容:

位置 / {

   root / data / www / host2; 

   index index.html index.htm; 

}

location匹配规则

〜波浪线表示执行一个正则匹配,区分大小写

〜*表示执行一个正则匹配,不区分大小写

^〜^〜表示普通字符匹配,如果该选项匹配,只匹配该选项,不匹配别的选项,一般用来匹配目录

=进行普通字符精确匹配

匹配例子:

location = / {

#只匹配“/”。[配置A]

}

位置 / {

#匹配任何请求,因为所有请求都是以“/”开始#但是更长字符匹配或者正则表达式匹配会优先匹配[配置B]

}

位置^〜/ images / {

#匹配任何以/ images /开始的请求,并停止匹配其它

位置[配置C]

}

location~ *。(gif | jpg | jpeg)$ {

#匹配以gif,jpg或jpeg结尾的请求。

#但是所有/ images /目录的请求将由[Configuration C]处理。

[配置D]

}

请求:/  - >符合配置A.

/documents/document.html  - >符合配置B.

/images/1.gif  - >符合配置C.

/documents/1.jpg  - >符合配置D.

静态文件映射

访问文件的配置主要有  root和alias p的两个指令。这两个指令的区别容易弄混:

alias 

别名后跟的指定目录是准确的,并且末尾必须加/。

location / c / {

别名/ a /;

}

根后跟的指定目录是上级目录,并且该上级目录下要含有和位置后指定名称的同名目录才行。

location / c / {

root / a /;

}

如果你需要将这个目录展开,在这个位置的末尾加上「autoindex on; 」就可以了

转发

配置起来很简单比如我要将所有的请求到转移到真正提供服务的一台机器的8001端口,只要这样:

位置 / {

proxy_pass 172.16.1.1:8001;

}

这样访问host时,就都被转发到172.16.1.1的8001端口去了。

负载均衡

上游myserver; {

ip_hash;

server 172.16.1.1:8001;

服务器172.16.1.2:8002;

服务器172.16.1.3;

服务器172.16.1.4;

}

位置 / {

proxy_pass http:// myserver;

}

我们在 upstream 中指定了一组机器,并将这个组命名为 myserver,这样在 proxypass 中只要将请求转移到 myserver 这个 upstream 中我们就实现了在四台机器的反向代理加负载均衡。其中的 ip_hash 指明了我们均衡的方式是按照用户的 ip 地址进行分配。另外还有轮询、指定权重轮询、fair、url_hash几种调度算法。

总结

以上是最简单的通过 nginx 实现静态文件转发、反向代理和负载均衡的配置。在 nginx 中所有的功能都是通过模块来实现的,比如当我们配置 upstream 时是用 upstream 模块,而 server 和 location 是在 http core 模块,其他的还有流控的 limt 模块,邮件的 mail 模块,https 的 ssl 模块。他们的配置都是类似的可以再 nginx 的模块文档中找到详细的配置说明。

四、php安装

安装php 7.1

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

//查看

yum search php71w

server {
charset utf-8;
client_max_body_size 128M;

listen 80; ## listen for ipv4

server_name localhost;
root /var/www/;
index index.php;

location / {
if (!-e $request_filename){
rewrite ^/(.*)$ /index.php/$1 last;
}
try_files $uri $uri/ /index.php?$args;
}

location ~ \.php$ {
include fastcgi.conf;
fastcgi_pass 127.0.0.1:9000;
try_files $uri =404;
}
location ~ \.php {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include /etc/fastcgi_params;
fastcgi_split_path_info ^(.+\.php)(/?.*)$;
fastcgi_param SCRIPT_FILENAME
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
}

error_page 404 /404.html;
location ~ /\.(ht|svn|git) {
deny all;
}
}