Centos 7.5 搭建mysql+nginx+php+redis+php+ssl+denyhos

Centos 7.5 搭建mysql+nginx+php+redis+php+ssl+denyhosts

系統環境:CentOS Linux release 7.5.1804 (Core)

軟件版本:Mysql 5.7.24

                     Nginx 1.14.0

PHP7.1.23 擴展(redisigbinaryinotifyswoole

redis-5.0.0

SSL

denyhosts

一、安裝 mysql 5.7.24

安裝YUM Repo,由於CentOS yum源中沒有mysql,需要到mysql的官網下載yum repo配置文件:

yum install wget vim unzip zip gcc-c++ –y

wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm

然後進行repo的安裝:

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

執行完成後會在/etc/yum.repos.d/目錄下生成兩個repo文件mysql-community.repo mysql-community-source.repo

image.png

開始安裝MySQL使用yum命令即可完成安裝

yum install mysql-server –y

啓動msyql

systemctl start mysqld

獲取安裝時的臨時密碼:

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

用查到的密碼登錄:

mysql -u root -p

登錄成功後修改密碼:

set global validate_password_policy=0;

set password=password("52Wangdun");

配置默認編碼爲utf8

vim /etc/my.cnf    #添加

  [mysqld]

  character_set_server=utf8

  init_connect='SET NAMES utf8'

image.png

附常用命令:

mysql_secure_installation        #設置安全選項

systemctl stop mysqld              #關閉MySQL

systemctl restart mysqld     #重啓MySQL

systemctl status mysqld      #查看MySQL運行狀態

systemctl enable mysqld     #設置開機啓動

systemctl disable mysqld    #關閉開機啓動

默認配置文件路徑:

配置文件:/etc/my.cnf

日誌文件:/var/log/mysqld.log

服務啓動腳本:/usr/lib/systemd/system/mysqld.service

           socket文件:/var/run/mysqld/mysqld.pid

 

二、安裝nginx 1.14.0

編譯安裝前所需要的準備:安裝GCC編譯器 PCRE zlib OpenSSL

  yum install -y gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel

下載安裝包

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 --prefix=/usr/local/nginx --pid-path=/run/nginx.pid  --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log  --with-http_ssl_module --with-http_v2_module --with-http_stub_status_module --with-pcre

編譯安裝

  make

make install

防火牆增加80端口

firewall-cmd --zone=public --add-port=80/tcp --permanent

防火牆配置生效

firewall-cmd --reload

                   訪問網頁

image.png

設置ngnix開機自啓,即在rc.local增加啓動代碼就可以了

vim /etc/rc.local  增加一行

/usr/local/nginx/sbin/nginx

image.png

設置執行權限:

chmod 755 /etc/rc.local

                   關閉SELINUX 

vim /etc/selinux/config SELINUX=enforcing改爲SELINUX=disabled

                            image.png

附(Nginx部分控制命令):默認Nginx安裝在/usr/local/nginx/中,因此

  /usr/local/nginx/sbin/nginx           #默認啓動start

  /usr/local/nginx/sbin/nginx -t         #測試配置信息

  /usr/local/nginx/sbin/nginx -s stop     #快速停止服務

  /usr/local/nginx/sbin/nginx -s quit     #正常停止服務

  /usr/local/nginx/sbin/nginx -s reload   #重啓

 

三、安裝PHP7.1.23

編譯安裝前所需要的準備

yum -y install libxml2 libxml2-devel openssl openssl-devel curl-devel libjpeg-devel libpng-devel freetype-devel libmcrypt-devel libxslt libxslt-devel

安裝過程中發現無法安裝libmcrypt擴展需要安裝第三方yum

wget http://www.atomicorp.com/installers/atomic

sh ./atomic (默認回車就行)

安裝所依賴的包

yum install php-mcrypt -y

yum install libmcrypt -y

yum install libmcrypt-devel -y

yum install bzip2-devel -y

yum install gmp-devel -y

yum install readline-devel –y

yum install psmisc –y

                   下載安裝包

wget -O php-7.1.23.tar.gz http://am1.php.net/get/php-7.1.23.tar.gz/from/this/mirror 

解壓

tar zxvf php-7.1.23.tar.gz

進入目錄

cd php-7.1.23

                   開始配置

./configure \

--prefix=/usr/local/php \

--with-config-file-path=/etc \

--enable-fpm \

--with-fpm-user=www-data  \

--with-fpm-group=www-data \

--enable-inline-optimization \

--disable-debug \

--disable-rpath \

--enable-shared  \

--enable-soap \

--with-libxml-dir \

--with-xmlrpc \

--with-openssl \

--with-mcrypt \

--with-mhash \

--with-pcre-regex \

--with-sqlite3 \

--with-zlib \

--enable-bcmath \

--with-iconv \

--with-bz2 \

--enable-calendar \

--with-curl \

--with-cdb \

--enable-dom \

--enable-exif \

--enable-fileinfo \

--enable-filter \

--with-pcre-dir \

--enable-ftp \

--with-gd \

--with-openssl-dir \

--with-jpeg-dir \

--with-png-dir \

--with-zlib-dir  \

--with-freetype-dir \

--enable-gd-native-ttf \

--enable-gd-jis-conv \

--with-gettext \

--with-gmp \

--with-mhash \

--enable-json \

--enable-mbstring \

--enable-mbregex \

--enable-mbregex-backtrack \

--with-libmbfl \

--with-onig \

--enable-pdo \

--with-mysqli=mysqlnd \

--with-pdo-mysql=mysqlnd \

--with-zlib-dir \

--with-pdo-sqlite \

--with-readline \

--enable-session \

--enable-shmop \

--enable-simplexml \

--enable-sockets  \

--enable-sysvmsg \

--enable-sysvsem \

--enable-sysvshm \

--enable-wddx \

--with-libxml-dir \

--with-xsl \

--enable-zip \

--enable-mysqlnd-compression-support \

--with-pear \

--enable-opcache

 

開始編譯安裝

make

make install

配置php環境變量,  vim /etc/profile 在末尾加上

PATH=$PATH:/usr/local/php/bin

export PATH

image.png

保存後使立即生效

source /etc/profile

查看PHP版本 php -v

image.png

設置php開機自啓,即在rc.local增加啓動代碼就可以了

vim /etc/rc.local  增加一行

/usr/local/php/sbin/php-fpmimage.png

設置執行權限:

chmod 755 /etc/rc.local

附(PHP部分控制命令)

/usr/local/php/sbin/php-fpm  #啓動PHP

killall php-fpm                             #關閉PHP

 

四、配置nginx支持php-fpm

創建web用戶,組都設置爲www-data

groupadd www-data

useradd -g www-data www-data

複製一份php-fpm配置文件

cd /usr/local/php/etc

cp php-fpm.conf.default php-fpm.conf

打開配置文件

vim php-fpm.conf

發現最後一行引入php-fpm.d目錄下所有 .conf 類型的配置文件

image.png

打開 php-fpm.d目錄,複製默認配置文件並打開修改

cd php-fpm.d

cp www.conf.default  www.conf

vim www.conf  修改用戶和用戶組爲www-data用戶

image.png

保存退出,啓動php-fpm服務

/usr/local/php/sbin/php-fpm

php-fpm默認使用9000端口,使用如下命令查看啓動狀態

netstat -lnt | grep 9000

image.png

nginx相關配置打開nginx配置文件

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

修改用戶組第一行註釋去掉 nobody改爲www-data

image.png

添加index.php,使nginx默認使用index.php爲入口頁

image.png

配置php-fpm模塊,修改第69行的/scripts $document_root

image.png

以上都修改後保存退出,先檢測相關配置是否正確

/usr/local/nginx/sbin/nginx –t

image.png

顯示正確,重啓nginx

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

切到nginx下的html目錄(默認代碼目錄)新建index.php

image.png

<?php

phpinfo();

?>

測試訪問對應地址是否可以運行

http://58.53.128.101/index.php

image.png

看到這界面說明php成功運行。

 

五、安裝redis-5.0.0

下載redis-5.0.0安裝包

wget http://download.redis.io/releases/redis-5.0.0.tar.gz

                   解壓

tar -zxvf redis-5.0.0.tar.gz

cd redis-5.0.0

編譯安裝

make

切換至redissrc目錄

cd src

cp redis-server redis-cli /usr/local/bin

cp redis-sentinel redis-benchmark redis-check-aof redis-check-dump /usr/local/bin

創建配置目錄

mkdir /etc/redis

mkdir -p /var/lib/redis/6379

cp /root/redis-5.0.0/redis.conf  /etc/redis/6379.conf

                   修改配置文件 vim /etc/redis/6379.conf

daemonize yes

pidfile /var/run/redis_6379.pid

port 6379

oglevel notice

dir /var/lib/redis/6379

創建服務

sysctl -w vm.overcommit_memory=1

sysctl -w net.core.somaxconn=512.

echo never > /sys/kernel/mm/transparent_hugepage/enabled

cp /root/redis-5.0.0/utils/redis_init_script /etc/init.d/redis_6379

vim /etc/systemd/system/redis.service   內容如下

[Unit]

Description=Redis on port 6379

[Service]

Type=forking

ExecStart=/etc/init.d/redis_6379 start

ExecStop=/etc/init.d/redis_6379 stop

[Install]

WantedBy=multi-user.target

image.png

啓動服務

systemctl enable redis

systemctl daemon-reload

systemctl start redis

systemctl status redis

image.png

 

六、php7安裝redis擴展

配置phpize

wget http://ftp.gnu.org/gnu/m4/m4-1.4.9.tar.gz

tar -zvxf m4-1.4.9.tar.gz

cd m4-1.4.9/

                   編譯安裝

./configure && make && make install

                   配置autoconf

wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.62.tar.gz

tar -zvxf autoconf-2.62.tar.gz

cd autoconf-2.62/

                   編譯安裝

./configure && make && make install

yum install m4 –y

yum install autoconf –y

下載包

wget https://codeload.github.com/phpredis/phpredis/zip/develop

mv develop phpredis-develop.zip

unzip phpredis-develop.zip

cd phpredis-develop

生成configure配置文件:

/usr/local/php/bin/phpize

編譯安裝:

./configure --with-php-config=/usr/local/php/bin/php-config

make && make install

配置/etc/php.ini 添加

extension=redis.so

重啓php

         killall php-fpm

/usr/local/php/sbin/php-fpm

訪問http://58.53.128.101/index.php,查找Redis

image.png

 

七、php7安裝inotify擴展

pecl install inotify

配置/etc/php.ini 添加

extension=inotify.so

重啓php

killall php-fpm

/usr/local/php/sbin/php-fpm

訪問http://58.53.128.101/index.php,查找inotify

image.png

 

八、php7安裝igbinary擴展

pecl install igbinary

配置/etc/php.ini 添加

extension=igbinary.so

重啓php

killall php-fpm

/usr/local/php/sbin/php-fpm

訪問http://58.53.128.101/index.php,查找igbinary

image.png

 

九、php7安裝swoole擴展

下載安裝包

wget https://codeload.github.com/swoole/swoole-src/tar.gz/v4.2.6

tar -zxvf v4.2.6

cd swoole-src-4.2.6/

生成configure配置文件:

/usr/local/php/bin/phpize

                   編譯安裝

./configure --enable-async-mysql

make

make install

配置/etc/php.ini 添加

extension= swoole.so

重啓php

killall php-fpm

/usr/local/php/sbin/php-fpm

訪問http://58.53.128.101/index.php,查找swoole.so

image.png

 

十、在Nginx上配置多個站點

Nginx配置目錄下,創建一個”vhost”目錄

mkdir  /usr/local/nginx/conf/vhost

創建site b的配置文件

         vim /usr/local/nginx/conf/vhost/rk.cakai.cn.conf

 

server {

    listen       80;

    server_name gm.cakai.cn;

    root /app/gm.cakai.cn/;

    index index.html index.htm index.php;

 

    location / {

        if (!-e $request_filename) {

            rewrite (.*) /index.php;

        }

    }

 

       location ~ \.php$ {

       root           /app/gm.cakai.cn;

       fastcgi_pass   127.0.0.1:9000;

       fastcgi_index  index.php;

       fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

       include        fastcgi_params;

      }

 

}

 

創建site b的配置文件

vim /usr/local/nginx/conf/vhost/b.conf

 

 

server {

    listen       80;

    server_name gm.cakai.cn;

    root /app/gm.cakai.cn/;

    index index.html index.htm index.php;

 

    location / {

        if (!-e $request_filename) {

            rewrite (.*) /index.php;

        }

    }

 

       location ~ \.php$ {

       root           /app/gm.cakai.cn;

       fastcgi_pass   127.0.0.1:9000;

       fastcgi_index  index.php;

       fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

       include        fastcgi_params;

      }

 

}打開nginx.conf文件

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

                   將虛擬目錄的配置文件加入到”http {}”部分的末尾 ,註釋server {}內容

include /usr/local/nginx/conf/vhost/*.conf;

image.png

         重啓Nginx服務

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

 

十、Nginx配置SSL 證書使用https訪問

防火牆增加443端口

firewall-cmd --zone=public --add-port=443/tcp --permanent

防火牆配置生效

firewall-cmd --reload

         上傳證書文件並修改站點配置文件

vim /usr/local/nginx/conf/vhost/gm.cakai.cn.conf

server {

    listen       443;

    server_name gm.cakai.cn;

    root /app/gm.cakai.cn/;

    index index.html index.htm index.php;

 

    ssl on;

    ssl_certificate /usr/local/nginx/conf/ssl/gm.cakai.cn.crt;

    ssl_certificate_key /usr/local/nginx/conf/ssl/gm.cakai.cn.key;

    ssl_session_timeout 5m;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;

    ssl_prefer_server_ciphers on;

    location / {

        if (!-e $request_filename) {

            rewrite (.*) /index.php;

        }

    }

 

       location ~ \.php$ {

       root           /app/gm.cakai.cn/;

       fastcgi_pass   127.0.0.1:9000;

       fastcgi_index  index.php;

       fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

       include        fastcgi_params;

      }

 

}

image.png

重啓ngnix 就可以通過遊覽器使用https訪問了

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

 

十一、       部署denyhosts防止ssh暴力破解

DenyHostsPython語言寫的一個程序,它會分析sshd的日誌文件(/var/log/secure),當發現重 復的***時就會記錄IP/etc/hosts.deny文件,從而達到自動屏IP的功能。

下載安裝包

wget http://"downloads.sourceforge.net/project/denyhosts/denyhosts/2.6/DenyHosts-2.6.tar.gz"

tar -xzf DenyHosts-2.6.tar.gz

cd DenyHosts-2.6

開始安裝

python setup.py install

DenyHosts默認安裝到/usr/share/denyhosts目錄

配置

  cd /usr/share/denyhosts/

  cp denyhosts.cfg-dist denyhosts.cfg

  vim denyhosts.cfg

PURGE_DENY = 1h #過多久後清除已阻止IP

  HOSTS_DENY = /etc/hosts.deny #將阻止IP寫入到hosts.deny

  BLOCK_SERVICE = sshd #阻止服務名

  DENY_THRESHOLD_INVALID = 1 #允許無效用戶登錄失敗的次數

  DENY_THRESHOLD_VALID = 10 #允許普通用戶登錄失敗的次數

  DENY_THRESHOLD_ROOT = 5 #允許root登錄失敗的次數

  WORK_DIR = /usr/share/denyhosts/data #denyhostip紀錄到Work_dir

  DENY_THRESHOLD_RESTRICTED = 1 #設定 deny host 寫入到該資料夾

  LOCK_FILE = /var/lock/subsys/denyhosts #DenyHOts啓動的pid紀錄到LOCK_FILE中,已確保服務正確啓動,防止同時啓動多個服務。

  HOSTNAME_LOOKUP=NO #是否做域名反解

  ADMIN_EMAIL = #設置管理員郵件地址

  DAEMON_LOG = /var/log/denyhosts #自己的日誌文件

  DAEMON_PURGE = 1h #該項與PURGE_DENY 設置成一樣,也是清除hosts.deniedssh 用戶的時間

 

設置啓動腳本使DenyHosts每次系統重起後自動啓動:

cp daemon-control-dist daemon-control

ln -s /usr/share/denyhosts/daemon-control /etc/init.d/denyhosts

                   添加服務並設置開機啓動

chkconfig --add denyhosts

chkconfig denyhosts on

                   啓動denyhosts服務並查看狀態

service denyhosts start

service denyhosts status

查看屏蔽IP

cat /etc/hosts.deny

image.png


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章