centos7.5 搭建MySQL+nginx+php+redis+ssl+denyhost

系统环境:Centos Linux release 7.5

软件版本:myslq 5.7.24

                    nginx1.14.0

                    php7.1.23扩展(redis,igbinary,inotify,swoole)

                    ssl

                    denyhosts

一、安装 mysql 5.7.24

            安装yum repo, 由于centos 的yum源中没有mysql ,需要到mysql的官网下载 yum repo 配置文件:

            yum install wget vim unzip 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

            ll /etc/yum.repos.d/

            开始安装MySQL使用yum命令即可完成安装

            yum install mysql-server –y

            启动MySQL:

            systemctl start mysqld

            获取安装时的临时密码:

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

            用查询的密码登陆:

            mysql -u root -p 

            登陆成功后修改密码:

            set global validate_password_policy=0;

            set password=password("12345678")

            配置默认编码为utf8:

            vim /etc/my.cnf  添加

            [mysqld]

            character_set_server=utf8

            init_connect='SET NAMES utf8'


附常用命令:

        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

二、安装ngnix1.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

启动nginx

/usr/local/nginx/sbin/nginx

访问网页

设置ngnix开机自启,即在rc.local增加启动代码就可以了

vim /etc/rc.local 增加一行

/usr/local/nginx/sbin/nginx

设置执行权限:

chmod 755 /etc/rc.local

关闭SELINUX 

vim /etc/selinux/config 将SELINUX=enforcing改为SELINUX=disabled

附(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

安装libmcrypt扩展需要安装第三方yum源

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

sh ./atomic (默认回车就行)

编译安装前所需要的准备

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

安装所依赖的包

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


保存后使立即生效

source /etc/profile

查看PHP版本 php -v

设置php开机自启,即在rc.local增加启动代码就可以了

vim /etc/rc.local  增加一行

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


设置执行权限:

chmod 755 /etc/rc.local

附(PHP部分控制命令)

/usr/local/php/sbin/php-fpm  #启动PHP

killall php-fpm    #关闭PHP


配置nginx支持php-fpm

PHP-FPM是一个PHP FastCGI管理器。PHP-FPM提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置。新版PHP已经集成了PHP-FPM,可以直接使用。

php的默认安装位置在 /usr/local/php

对php-fpm运行用户进行设置

首先创建web用户

用户 组都设置为www-data,可以自己定(实际上在配置时已经设为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 类型的配置文件

打开 php-fpm.d目录,复制默认配置文件并打开修改

cd php-fpm.d

cp www.conf.default  www.conf

vim www.conf  修改用户和用户组为www-data用户

保存退出,启动php-fpm服务

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

php-fpm默认使用9000端口,使用如下命令查看启动状态

netstat -lnt | grep 9000

nginx相关配置打开nginx配置文件

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

修改用户组第一行注释去掉 nobody改为www-data

添加index.php,使nginx默认使用index.php为入口页

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


以上都修改后保存退出,先检测相关配置是否正确

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


显示正确,重启nginx

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

切到nginx下的html目录(默认代码目录)新建index.php

cd  /usr/local/nginx/html

vim index.php

测试访问对应地址是否可以运行


看到这界面说明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

切换至redis的src目录

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


启动服务

systemctl enable redis

systemctl daemon-reload

systemctl start redis

systemctl status redis


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 添加

vim /etc/php.ini

extension=redis.so

重启php

killall php-fpm

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

访问http://luntan.0728idc.com/index.php,查找Redis


php7安装inotify扩展

pecl install inotify

配置/etc/php.ini 添加

vim /etc/php.ini

extension=inotify.so

重启php

killall php-fpm

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

访问http://luntan.0728idc.com/index.php,查找inotify


php7安装igbinary扩展

pecl install igbinary

配置/etc/php.ini 添加

vim /etc/php.ini

extension=igbinary.so

重启php

killall php-fpm

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

访问http://luntan.0728idc.com/index.php,查找igbinary

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 添加

vim /etc/php.ini

extension= swoole.so

重启php

killall php-fpm

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

访问luntan.0728idc.com/index.php,查找swoole

十、在Nginx上配置多个站点

在Nginx配置目录下,创建一个”vhost”目录

mkdir  /usr/local/nginx/conf/vhost

创建site luntan.0728idc.com的配置文件

vim /usr/local/nginx/conf/vhost/luntan.0728idc.com.conf

server {

    listen      80;

    server_name luntan.0728idc.com;

    root /app/luntan.0728idc.com/;

    index index.html index.htm index.php;

    location / {

        if (!-e $request_filename) {

            rewrite (.*) /index.php;

        }

    }

      location ~ \.php$ {

      root          /app/luntan.0728idc.com;

      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;


重启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/luntan.0728idc.com.conf

server {

    listen      443;

    server_name luntan.0728idc.com;

    root /app/luntan.0728idc.com/;

    index index.html index.htm index.php;

    ssl on;

    ssl_certificate /usr/local/nginx/conf/ssl/luntan.0728idc.com.crt;

    ssl_certificate_key /usr/local/nginx/conf/ssl/luntan.0728idc.com.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/luntan.0728idc.com/;

      fastcgi_pass  127.0.0.1:9000;

      fastcgi_index  index.php;

      fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

      include        fastcgi_params;

      }

}


重启ngnix 就可以通过游览器使用https访问了

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


部署denyhosts防止ssh暴力破解

DenyHosts是Python语言写的一个程序,它会分析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 #将deny的host或ip纪录到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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,214评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,307评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,543评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,221评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,224评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,007评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,313评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,956评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,441评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,925评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,018评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,685评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,234评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,240评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,464评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,467评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,762评论 2 345

推荐阅读更多精彩内容