技术源于努力
努力实现梦想

手动部署LNMP并安装配置wordpress且部署SSL

linux环境是:Centos7.4纯净版x86_64版本

1、下载nginx、mysql、php7.2安装包
cd /usr/local/src/
nginx:wget http://nginx.org/download/nginx-1.14.2.tar.gz
php7.2:http://cn2.php.net/distributions/php-7.2.3.tar.gz
mysql:wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.24.tar.gz
boost的最新版本是:https://dl.bintray.com/boostorg/release/1.69.0/source/boost_1_69_0.7z
安装mysql
1、先安装安装工具:
yum install -y autoconf automake libtool cmake ncurses-devel openssl-devel lzo-devel zlib-devel gcc gcc-c++
2、下载boost的源码包:
wget http://downloads.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz
如果下载的包是7z压缩的
还需要安装p7zip包才能加压7z文件
wget https://sourceforge.net/projects/p7zip/files/latest/download  && mv download p7zip.tar.bz2 && tar xf p7zip.tar.bz2 && make && make install
7za x boost_1_59_0.7z
mv boost_1_59_0 /usr/local/boost
3、创建mysql用户及组,创建mysql的数据目录,解压并编译选项
groupadd mysql
useradd -g mysql -s /sbin/nologin -M mysql
tar xf mysql-5.7.24.tar.gz
mkdir -p /home/mysql/{data,tmp,logs}
chown -R mysql.mysql /home/mysql
cmake . -LH | more  #查看cmake的编译选项
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/home/mysql/data \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local/boost \ 
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DENABLE_DTRACE=0 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DWITH_EMBEDDED_SERVER=1 \
-DMYSQL_TCP_PORT=3306
4、编译所选择的功能并安装
make -j `grep processor /proc/cpuinfo | wc -l` 将所有的cpu都拿来编译,以加快编译速度
make install
5、安装后的初始设置:
修改mysql主配置文件,将datadir指定到对应的目录/home/mysql/data
将mysql加入系统环境变量:echo “export PATH=$PATH:/usr/local/mysql/bin” >> /etc/profile   source /etc/profile
将mysql的服务文件拷贝到/etc/init.d/目录下,并设置成自动启动:
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld 
chmod a+x /etc/init.d/mysqld
chkconfig –add mysqld
初始化数据库:mysqld –defaults-file=/etc/my.cnf  –initialize –user=’mysql’ 会生成默认密码
mysqld –initialize-insecure –user=mysql –basedir=/usr/local/mysql –datadir=/home/mysql/data 这个初始化不会生成默认密码(推荐)
创建日志文件目录及日志文件:mkdir /var/log/mariadb/ && touch /var/log/mariadb/mariadb.log && chown mysql.mysql -R /var/log/mariadb
创建mysql的库目录:mkdir /var/lib/mysql && chown mysql.mysql /var/lib/mysql
6、启动mysql:并登录mysql修改root密码
service mysqld start
由于在编译的时候指定了socket的路径:/var/lib/mysql/mysql.sock 而本地登录的时候系统会到/tmp目录下去找对应的socket文件,没有就登陆不上,直接将其做软连接:
ln -sv /var/lib/mysql/mysql.sock /tmp/mysql.sock
登陆到mysql后,查看mysql的用户表:
use mysql
select user,host,authentication_string from user;
update user set authentication_string=password(“dnc456852”) where user=’root’; #更改root的账号密码
flush privileges; 由于是通过修改表来实现密码更改,所以要进行权限刷新,更新mysql的权限底层

nginx的安装

下载pcre包 http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
wget  http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
tar pcre-8.35.tar.gz
cd pcre-8.35
./configure && make && make install
解压下载好的nginx文件
tar xf nginx-1.14.2.tar.gz
cd nginx-1.14.2
./configure –prefix=/usr/local/nginx –with-http_stub_status_module –with-http_ssl_module –with-pcre=/usr/local/src/pcre-8.35
make && make install
/usr/local/nginx/sbin/nginx -v #查看nginx的版本
创建nginx用户和组
groupadd nginx
useradd -g nginx -s /sbin/nologin -M nginx
修改nginx的主配置文件:/usr/local/nginx/conf/nginx.conf文件
先用:grep “processor” /proc/cpuinfo | wc -l 查看CPU的核心数
worker_processes  4; 这是nginx工作的核心数
error_log  logs/error.log  error;修改nginx的错误日志文件路径及日志级别,一般是crit级别
修改好了之后,就可以启动nginx:/usr/local/nginx/sbin/nginx,不报错就表示启动成功,使用netstat -tunlp查看80是否监听即可
/usr/local/webserver/nginx/sbin/nginx -s reload            # 重新载入配置文件
/usr/local/webserver/nginx/sbin/nginx -s reopen            # 重启 Nginx
/usr/local/webserver/nginx/sbin/nginx -s stop              # 停止 Nginx
nginx的服务脚本,我自己写了一个:
[root@ebs-61628 init.d]# vim nginx 
#! /bin/bash
#
#chkconfig:2345 65 36
#description:this is nginx server
ng=/usr/local/nginx/sbin/nginx
case $1 in
        ‘start’)
        $ng
        ;;
        ‘stop’)
        $ng -s stop
        ;;
        ‘restart’)
        $ng -s stop
$ng
        ;;
        ‘reload’)
        $ng -s reload
        ;;
        *)
        echo “The nginx server argument only:start|stop|restart|reload”
esac

PHP7.2的编译安装
1、安装依赖组件:
yum install -y libxml2 libxml2-devel gcc openssl openssl-devel bzip2-devel bison m4 gcc gcc-c++ ncurses libjpeg-devel libpng-devel libXpm-devel freetype-devel postgresql-devel libxslt net-snmp-devel net-snmp-libs net-snmp gmp-devel

wget https://sourceforge.net/projects/re2c/files/0.16/re2c-0.16.tar.gz
tar xf re2c-0.16.tar.gz
cd re2c-0.16 && ./configure && make && make install

wget http://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.6.tar.gz
tar xf ncurses-5.6.tar.gz
cd  ncurses-5.6 && ./configure && make && make install

groupadd www
useradd -g www -s /sbin/nologin -M www
2、编译安装:
./configure –prefix=/usr/local/php –with-config-file-path=/usr/local/php/etc –with-mysqli –with-pdo-mysql –with-mysql-sock=/var/lib/mysql/mysql.sock –with-iconv-dir –with-freetype-dir –with-jpeg-dir –with-png-dir –with-curl –with-gd –with-gmp –with-zlib –with-xmlrpc –with-openssl –without-pear –with-snmp –with-gettext –with-mhash –with-libxml-dir=/usr  –with-fpm-user=nginx –with-fpm-group=nginx –enable-xml –enable-fpm  –enable-ftp –enable-bcmath –enable-soap –enable-shmop –enable-sysvsem –enable-sockets –enable-inline-optimization –enable-maintainer-zts –enable-mbregex –enable-mbstring –enable-pcntl –enable-zip –disable-fileinfo –disable-rpath –enable-libxml –enable-opcache –enable-mysqlnd

make && make install

cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
vim /usr/local/php/etc/php-fpm.d/www.conf 要和nginx.conf中的user信息一致
user = nginx
group = nginx

由于编译的时候指定了php主配置文件在/usr/local/php/etc/,从源码中将php.ini复制到主配置文件下
cp /usr/local/src/php_install/php-7.2.3/php.ini-production /usr/local/php/etc/php.ini
复制php-fpm的启动脚本到/etc/init.d目录下
cp /usr/local/src/php_install/php-7.2.3/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm
chkconfig –add php-fpm
service php-fpm start
配置nginx.conf中,启动nginx的php配置部分
location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            include        fastcgi_params;
        }
然后建立站点即可
mysql登陆后报错,如图:ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement
原因是:这个主要是由一个参数控制的 default_password_lifetime
登陆root后,使用alter user user() identified by “123456”;来修改密码即可
 3、在nginx中创建一个虚拟主机,并配置php
在nginx主配置文件中加一个:include vhost/*.conf; 这样就可以在vhost目录下单独定义了,不怕影响主目录
创建一个站点并授权:
server {
        listen       80;
        server_name  211.149.129.251;
 
        access_log      /usr/local/nginx/logs/localhost.log;
        root /home/www/WordPress;
        location / {
            index  index.html index.htm index.php;
        }
 
        #error_page   500 502 503 504  /50x.html;
        #location = /50x.html {
            #root   html;
        #}
 
        location ~ \.php$ {
            #root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; #这是网站根目录 ,如果报错no file input 错误,就将这里启用就可以了
            #fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            include        fastcgi_params;
        }
}

mkdir -p /home/www/WordPress
chown -R nginx.nginx /home/www
[root@ebs-61628 WordPress]# vim index.php
<?php
        phpinfo();
?>

手动建立一个站点,并安装wordpress;需要手工配置好SSL,301,伪静态

先到nginx的主配置文件中http代码块中加入一条:include vhost/*.conf;

1、在wordpress中设置伪静态规则,由于wordpress是在文件生成的时候根据设置的规则生成对应的连接,所以需要在wordpress中设置固定连接,且需要在nginx的站点配置文件中设置伪静态规则
设置—固态链接
在nginx的站点配置文件中的location 块中添加一条try_files $uri $uri/ /index.php?$args;然后重启nginx服务即可
2配置站点的SSL
2.1申请证书,并下载证书
2.2解压证书,有三个文件:sab.kvdnc.top.cer、sab.kvdnc.top.key、sab.kvdnc.top_ca.crt 并合并证书,一定是cer文件放到crt文件的头部然后将sab.kvdnc.top_ca.crt改名成sab.kvdnc.top.crt
2.3将证书sab.kvdnc.top.key、sab.kvdnc.top.crt上传到服务器上的目录,建议放在nginx的站点配置目录:/usr/local/nginx/conf/vhost/ssl目录(没有就自己建立一个)
2.4修改nginx.conf配置文件,在http的代码块中加入,由于我是在http中加入了vhost目录下的配置文件,所以直接到站点配置文件中加入
server{
        #监听443端口
        listen 443;
        #对应的域名,把baofeidyz.com改成你们自己的域名就可以了
        server_name baofeidyz.com;
        root /home/www/WordPress;
        ssl on;
        #上传的crt证书文件的全路径
        ssl_certificate /etc/ssl/1_baofeidyz.com_bundle.crt;
        #上传的key证书文件的全路径
        ssl_certificate_key /etc/ssl/2_baofeidyz.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;
        #如果是静态的html网页,直接使用location就可以完成了。
        location / {
        index  index.html index.htm index.php;
        try_files $uri $uri/ /index.php?$args;
}
        location ~ \.php$ {
            #root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            #fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            include        fastcgi_params;
        }

    }

2.4由于在建立wordpress站点的时候,绑定的站点url是服务器的IP,所以这里需要将其改成http://sab.kvdnc.top,更新后,就可以正常加载页面的样式文件了
3、设置301,这需要在nginx的站点配置文件/usr/local/nginx/conf/vhost/WordPress.conf中设置,使得所有访问http的域名都跳转到https

只需要在监听80的那个server的server_name下增加:
rewrite ^(.*) https://sab.kvdnc.top$1 permanent;

注意:
wordpress发布5.0,如果部署了ssl升级后,要重新设置load.php
具体代码如下 
function is_ssl() {
    if ( isset( $_SERVER[‘HTTPS’] ) ) {
        if ( ‘on’ == strtolower( $_SERVER[‘HTTPS’] ) ) {
            return true;
        }
        if ( ‘1’ == $_SERVER[‘HTTPS’] ) {
            return true;
        }
    } elseif ( isset($_SERVER[‘SERVER_PORT’] ) && ( ‘443’ == $_SERVER[‘SERVER_PORT’] ) ) {
        return true;
    } elseif (isset($_SERVER[“HTTP_FROM_HTTPS”])&&$_SERVER[“HTTP_FROM_HTTPS”]==’on’){
        return true;
    }
   return false;
}

赞(0) 感谢小主打赏
未经允许不得转载:新域软件科技 » 手动部署LNMP并安装配置wordpress且部署SSL
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏