天天看點

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;
}
}