第十九章 使用 LNMP 架构部署动态网站情况

打印 上一主题 下一主题

主题 993|帖子 993|积分 2979

1.  源码包程序 

在 RPM(红帽软件包管理器)技术出现之前,Linux 体系运维职员只能通过源码包的方式来安装各种服务程序,这是一件非常繁琐且极易斲丧时间与耐心的事情;而且在安装、升级、卸载程序时还要思量到与其他程序或函数库的相互依靠关系,这就要求运维职员不仅要掌握更多的 Linux 体系理论知识以及高超的实操技能,还需要有极好的耐心才气安装好一个源码软件包。思量到刚入门或预备入门的运维新人,在前面的章节中一直都是接纳软件仓库的方式来安装服务程序。但是,现在依然有许多软件程序只有源码包的情势,如果我们只会使用 dnf 命令来安装程序,则面临这些只有
源码包的软件程序时,将充满无力感,要么需要比及第三方构造将这些软件程序编写成 RPM软件包之后再行使用,要么就只能寻找相关软件程序的替代品了(而且替代软件还必须具备RPM 软件包的情势)。由此可见,如果运维职员只会使用软件仓库来安装服务程序,将会形成知识短板,对日后的运维工作带来不利。 
本着不能在运维工作中吃亏的想法,接下来会具体讲解如何使用源码包的方式来安装服务程序。 
其实,使用源码包来安装服务程序具有两个优势。 
➢  源码包的可移植性非常好,几乎可以在任何 Linux 体系中安装使用,而 RPM 软件包是针对特定体系和架构编写的指令集,必须严格地符合实验情况才气顺利安装(即只会去“生硬地”安装服务程序)。 
➢  使用源码包安装服务程序时会有一个编译过程,因此能够更好地顺应安装主机的体系情况,运行效率和优化水平都会强于使用 RPM 软件包安装的服务程序。也就是说,可以将接纳源码包安装服务程序的方式看作是针对体系的“量文体衣”。 
一般来讲,在安装软件时,如果能通过软件仓库来安装,就用 dnf 命令搞定它;反之则去寻找合适的 RPM 软件包来安装;如果着实没有资源可用,那就只能使用源码包来安装了。使用源码包安装服务程序的过程看似复杂,其着实归纳汇总后只需要 4~5 个步调即可完成安装。接下来会对每一个步调举行详解。 
注:需要提前阐明的是,在使用源码包安装程序时,会输出大量的过程信息,这些信息的意义并不大,因此本章会省略这部门输出信息而不作特殊备注,请各人在具体操纵时以实际为准。 
第一步:下载及解压源码包文件。为了方便在网络中传输,源码包文件通常会在归档后使用 gzip 或 bzip2 等格式举行压缩,因此一般会具有.tar.gz 或.tar.bz2 的后缀。要想使用源码包安装服务程序,必须先把里面的内容解压出来,然后再切换到源码包文件的目录中: 
  1. [root@linuxprobe~]# tar xzvf FileName.tar.gz
  2. [root@linuxprobe~]# cd FileDirectory
复制代码
第二步:编译源码包代码。在正式使用源码包安装服务程序之前,还需要使用编译脚本针对当前体系举行一系列的评估工作,包括对源码包文件、软件之间及函数库之间的依靠关系、编译器、汇编器及链接器举行查抄。我们还可以根据需要来追加 --prefix参数,以指定稍后源码包程序的安装路径,从而对服务程序的安装过程更加可控。当编译工作竣事后,如果体系情况符合安装要求,一般会主动在当前目录下生成一个 Makefile安装文件。
  1. [root@linuxprobe~]# ./configure --prefix=/usr/local/program
复制代码
第三步:生成二进制安装程序。刚刚生成的 Makefile 文件中会保存与体系情况、软件依靠关系和安装规则等相关的内容,接下来便可以使用 make 命令来根据 Makefile 文件内容提供的合适规则编译生成出真正可供用户安装服务程序的二进制可实验文件了。 
  1. [root@linuxprobe~]# make
复制代码
第四步:运行二进制的服务程序安装包。由于不需要再查抄体系情况,也不需要再编译代码,因此运行二进制的服务程序安装包应该是速率最快的步调。如果在源码包编译阶段使用了--prefix 参数,那么此时服务程序就会被安装到那个目录;如果没有自行使用参数界说目录的话,一般会被默认安装到/usr/local/bin 目录中。 
  1. [root@linuxprobe~]# make install
复制代码
第五步:清理源码包暂时文件。由于在安装服务程序的过程中举行了代码编译的工作,因此在安装后目录中会遗留下许多暂时垃圾文件,本着尽量不要浪费磁盘存储空间的原则,可以使用 make clean 命令对暂时文件举行彻底的清理。 
  1. [root@linuxprobe~]# make clean
复制代码
为什么同样是安装一个服务程序,源码包的编译工作(configure)与生成二进制文件的工作(make)会使用这么长的时间,而接纳 RPM 软件包安装就特别有用率呢?其实原因很简朴,在 RHCA 认证的 RH401 测验中,会要求考生写一个 RPM 软件包。其实 RPM 软件包就是把软件的源码包和一个针对特定体系、架构、情况编写的安装规则打包到一起的指令集。因此,为了让用户都能使用这个软件包来安装程序,通常一个软件程序会发布多种格式的 RPM 软件包(例如 i386、
x86_64 等架构)来让用户选择。而源码包的软件作者肯定希望本身的软件能够被安装到更多的体系上面,能够被更多的用户所了解、使用,因此便会在编译阶段(configure)来查抄用户当前体系的情况,然后制定出一份可行的安装方案,所以会占用许多的体系资源,需要更长的等待时间。
2.  LNMP 动态网站部署架构 

LNMP 动态网站部署架构是一套由 Linux + Nginx + MySQL + PHP 构成的动态网站体系办理方案。LNMP 中的字母 L 是 Linux 体系的意思,不仅可以是RHEL 、 CentOS 、 Fedora , 还 可 以 是 Debian 、 Ubuntu 等 系 统 。 
在使用源码包安装服务程序之前,首先要让安装主机具备编译程序源码的情况。这需要具备 C 语言、C++语言、Perl 语言的编译器,以及各种常见的编译支持函数库程序。因此请先配置妥当软件仓库,然后把下面列出的这些软件包都齐备安装上: 
  1. [root@linuxprobe~]# dnf -y install apr* autoconf automake numactl bison bzip2-
  2. devel cpp curl-devel fontconfig-devel freetype-devel gcc gcc-c++ gd-devel gettext-
  3. devel kernel-headers keyutils-libs-devel krb5-devel libcom_err-devel  libpng-devel
  4. libjpeg* libsepol-devel libselinux-devel libstdc++-devel libtool* libxml2-devel  
  5. libXpm* libxml* libXaw-devel libXmu-devel libtiff* make openssl-devel patch pcre-
  6. devel perl php-common php-gd telnet zlib-devel libtirpc-devel gtk* ntpstat na*  
  7. bison* lrzsz cmake ncurses-devel libzip-devel libxslt-devel gdbm-devel readline-
  8. devel gmp-devel
  9. Updating Subscription Management repositories.
  10. Unable to read consumer identity
  11. AppStream                                3.1 MB/s | 3.2 kB     00:00     
  12. BaseOS                                   2.0 MB/s | 2.7 kB     00:00     
  13. ………………省略部分输出信息………………
  14.   Running scriptlet: mariadb-connector-c-3.0.7-1.el8.x86_64      1/1
  15.   Preparing        :                                             1/1
  16.   Installing       : xorg-x11-proto-devel-2018.4-1.el8.noarch    1/261
  17.   Installing       : perl-version-6:0.99.24-1.el8.x86_64         2/261
  18.   Installing       : zlib-devel-1.2.11-10.el8.x86_64             3/261
  19.   Installing       : perl-Time-HiRes-1.9758-1.el8.x86_64         4/261
  20.   Installing       : libpng-devel-2:1.6.34-5.el8.x86_64          5/261
  21.   Installing       : perl-CPAN-Meta-Requirements-2.140el8.noarch 6/261
  22.   Installing       : perl-ExtUtils-ParseXS-1:3.35-2.el8.noarch   7/261
  23.   Installing       : perl-ExtUtils-Manifest-1.70-395.el8.noarch  8/261
  24.   Installing       : cmake-filesystem-3.11.4-3.el8.x86_64        9/261
  25.   Installing       : perl-Test-Harness-1:3.42-1.el8.noarch      10/261
  26.   Installing       : perl-Module-CoreList-1:5-1.el8.noarch      11/261
  27.   Installing       : perl-Module-Metadata-1.000033.el8.noarch   12/261
  28.   Installing       : perl-SelfLoader-1.23-416.el8.noarch        13/261
  29.   Installing       : perl-Perl-OSType-1.010-396.el8.noarch      14/261
  30.   Installing       : perl-Module-Load-1:0.32-395.el8.noarch     15/261
  31.   Installing       : perl-JSON-PP-1:2.97.001-3.el8.noarch       16/261
  32.   Installing       : perl-Filter-2:1.58-2.el8.x86_64            17/261
  33.   Installing       : perl-Compress-Raw-Zlib-2.081-1.el8.x86_64  18/261
  34.   Installing       : perl-encoding-4:2.22-3.el8.x86_64          19/261
  35.   Installing       : perl-Text-Balanced-2.03-395.el8.noarch     20/261
  36. ………………省略部分输出信息………………
  37. Complete!
复制代码
如果条件答应,建议适当增大虚拟机的内存上限,让稍后的编译过程更快一些。而且由于接下来还需要从外部网络中获取 Nginx、MySQL、PHP 及 WordPress 等一系列的安装包,因此需要配置虚拟机,将其毗连到互联网。 
将已经调解为桥接模式的网卡,通过 nmtui 或 nm-connection-editor 命令修改为以 DHCP模式主动获取网络信息,如图 20-2 所示。此时,大多数情况下虚拟机就可以接入互联网。若依然不可访问互联网,则思量外部情况是否有特殊的限定,然后将虚拟机内网卡配置成跟物理机一致即可。
  1. [root@linuxprobe~]# ping -c 4 www.linuxprobe.com
  2. PING www.linuxprobe.com.w.kunlunno.com (202.97.231.16) 56(84) bytes of data.
  3. 64 bytes from www.linuxprobe.com (202.97.231.16): icmp_seq=1 ttl=55 time=27.5 ms
  4. 64 bytes from www.linuxprobe.com (202.97.231.16): icmp_seq=2 ttl=55 time=27.10 ms
  5. 64 bytes from www.linuxprobe.com (202.97.231.16): icmp_seq=3 ttl=55 time=27.4 ms
  6. 64 bytes from www.linuxprobe.com (202.97.231.16): icmp_seq=4 ttl=55 time=28.9 ms
  7. --- www.linuxprobe.com.w.kunlunno.com ping statistics ---
  8. 4 packets transmitted, 4 received, 0% packet loss, time 8ms
  9. rtt min/avg/max/mdev = 27.354/27.913/28.864/0.593 ms
复制代码

各人可以直接在 Linux服务器中使用 wget 命令下载这些源码包文件。为了更好地找到它们,我们同一放到/lnmp 目录下保存: 
  1. [root@linuxprobe~]# mkdir /lnmp
  2. [root@linuxprobe~]# cd /lnmp
  3. [root@linuxprobe lnmp]# wget https://www.linuxprobe.com/Software/rpcsvc-proto-1.4.tar.gz
  4. [root@linuxprobe lnmp]# wget https://www.linuxprobe.com/Software/nginx-1.16.0.tar.gz
  5. [root@linuxprobe lnmp]# wget https://www.linuxprobe.com/Software/mysql-8.0.18.tar.xz
  6. [root@linuxprobe lnmp]# wget https://www.linuxprobe.com/Software/php-7.3.5.tar.gz
  7. [root@linuxprobe lnmp]# wget https://www.linuxprobe.com/Software/wordpress.tar.gz
  8. [root@linuxprobe lnmp]# ls
  9. rpcsvc-proto-1.4.tar.gz       nginx-1.16.0.tar.gz   mysql-8.0.18.tar.xz
  10. php-7.3.5.tar.gz              wordpress.tar.gz
复制代码
rpcsvc-proto 是一款包罗 rcpsvc 协议文件的支持软件包名称,rcpsvc 协议在后续 Nginx 与 MySQL 服务程序的部署过程中都需要被调用到。要想通过源码包安装服务程序,就肯定要严格服从上面总结的安装步调:下载及解压源码包文件、编译源码包代码、生成二进制安装程序、运行二进制的服务程序安装包。在解压、编译各个软件包源码程序时,都会生成大量的输出信息,下文中会将其省略。
  1. [root@linuxprobe lnmp]# tar xzvf rpcsvc-proto-1.4.tar.gz
  2. [root@linuxprobe lnmp]# cd rpcsvc-proto-1.4/
  3. [root@linuxprobe rpcsvc-proto-1.4]# ./configure
  4. [root@linuxprobe rpcsvc-proto-1.4]# make
  5. [root@linuxprobe rpcsvc-proto-1.4]# make install
  6. [root@linuxprobe rpcsvc-proto-1.4]# cd ..
  7. [root@linuxprobe lnmp]#
复制代码
注:由于本章涉及的软件较多,频仍地切换工作目录在所难免。一方面我们会在每次操纵后尽大概地返回到/lnmp 目录下待命,另一方面也请读者仔细看清所在的目录路径,以免因为找不到文件而影响心情。 
2.1  配置 Nginx 服务 

Nginx 是一款相当优秀的用于部署动态网站的轻量级服务程序,Nginx 具备的模块数目与 Apache 具备的模块数目几乎雷同,而且现在已经完全支持 proxy、rewrite、mod_fcgi、ssl、vhosts 等常用模块。更紧张的是,Nginx 还支持热部署技术,可以 7×24 小时不间断提供服务,还可以在不暂停服务的情况下直接对 Nginx 服务程序举行升级。 
下面进入主题,预备配置 Nginx 服务。 
第一步:创建用于管理网站服务的体系账户。这是在 Linux 体系创建之初就植入的基因片段—为了能够让操纵体系更加安全,需要由差别的体系用户来管理差别的服务程序。如许即便有黑客通过网站服务侵入了服务器,也无法提权到更高权限,或是对体系举行更大的破坏,乃至都无法登录 ssh 服务,因为他拿到的仅仅是一个体系账号。差别以往,这次在新建账户时应使用-M 参数不创建对应的家目录,以及使用-s 参数指定登录后的 Shell 解释器为/sbin/nologin,确保任何人都不能通过这个账号登录主机。
  1. [root@linuxprobe lnmp]# useradd nginx -M -s /sbin/nologin
  2. [root@linuxprobe lnmp]# id nginx
  3. uid=1001(nginx) gid=1001(nginx) groups=1001(nginx)
复制代码
第二步:编译安装 Nginx 网站服务程序。为了能够让网站服务支持更多的功能,需要在编译过程中添加额外的参数,其中较为紧张的是使用 prefix 参数指定服务将被安装到哪个目录,方便反面找到和调用它。其次,思量到 HTTPS 协议的使用越来越广泛,所以这里用with-http_ssl_module 参数来开启 Nginx 服务的 SSL 加密模块,以便日后开启 HTTPS 协议功能:
  1. [root@linuxprobe lnmp]# tar zxvf nginx-1.16.0.tar.gz
  2. [root@linuxprobe lnmp]# cd nginx-1.16.0/
  3. [root@linuxprobe nginx-1.16.0]# ./configure --prefix=/usr/local/nginx --with-
  4. http_ssl_module
  5. [root@linuxprobe nginx-1.16.0]# make
  6. [root@linuxprobe nginx-1.16.0]# make install
  7. [root@linuxprobe nginx-1.16.0]# cd ..
复制代码
 相对来说,编译脚本文件(configure)比生成二进制文件(make)要快,而安装程序(make 
install)则是最快的,它相当于以双击的方式运行二进制安装包。在编译、生成、安装三阶段中,屏幕上会输出各式各样的信息,重要包罗软件包的概要情况、当前体系的软件依靠关系,以及是否有条件举行安装操纵。但只要历程没有被强制终止,或是没有输出明显报错信息,则都是正常情况。 
第三步:安装完毕后进入最终配置阶段。既然在编译情况中使用 prefix 参数指定了安装路径,那么 Nginx 服务程序配置文件肯定会乖乖地在/usr/local/nginx 目录中等我们。 
我们统共要举行 3 处修改,首先是把第 2 行的解释符(#)删除,然后在反面写上负责运行网站服务程序的账户名称和用户组名称。这里假设由 nginx 用户及 nginx 用户组负责管理网站服务。 
  1. [root@linuxprobe lnmp]# vim /usr/local/nginx/conf/nginx.conf
  2.   1
  3.   2 user  nginx nginx;
复制代码
其次是修改第 45 行的首页文件名称,在里面添加 index.php 的名字。这个文件也是让用户欣赏网站时第一眼看到的文件,也叫首页文件。 
  1. 43         location / {
  2. 44             root   html;
  3. 45             index  index.php index.html index.htm;
  4. 46         }
复制代码
末了再删除第 65~71 行前面的解释符(#)来启用虚拟主机功能,然后将第 69 行反面临应的网站根目录修改为/usr/local/nginx/html,其中的 fastcgi_script_name 参数用于指代脚本名称,也就是用户哀求的 URL。只有信息填写正确了,才气使 Nginx 服务正确解析用户哀求,否则访问的页面会提示“404 Not Found”的错误。 
  1. 63  # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
  2. 64         #
  3. 65         location~\.php$ {
  4. 66           root           html;
  5. 67           fastcgi_pass   127.0.0.1:9000;
  6. 68           fastcgi_index  index.php;
  7. 69           fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_scri
  8. pt_name;
  9. 70           include        fastcgi_params;
  10. 71         }
复制代码
第四步:通过编译源码方式安装的服务默认不能被 systemctl 命令所管理,而要使用 Nginx服务本身的管理工具举行操纵,相应命令所在的目录是/usr/local/nginx/sbin。由于使用绝对路径的情势输入命令未免会太麻烦,建议将/usr/local/nginx/sbin 路径参加到 PATH 变量中,让Bash 解释器在后续实验命令时主动搜刮到它。然后在 source 命令后加载配置文件,让参数立刻生效。下次就只需要输入 nginx 命令即可启动网站服务了。 
  1. [root@linuxprobe lnmp]# vim~/.bash_profile
  2. # .bash_profile
  3. # Get the aliases and functions
  4. if [ -f~/.bashrc ]; then
  5.        . ~/.bashrc
  6. fi
  7. # User specific environment and startup programs
  8. PATH=$PATH:$HOME/bin:/usr/local/nginx/sbin
  9. export PATH
  10. [root@linuxprobe lnmp]# source~/.bash_profile
  11. [root@linuxprobe lnmp]# nginx
复制代码
操纵完毕!重启服务程序,并在欣赏器中输入本机的 IP 地点,即可访问到 Nginx 网站服务程序的默认界面,如图所示。相较于 Apache 服务程序的赤色默认页面,Nginx 服务程序的默认页面显得更加简便。 

2.2  配置 MySQL 服务 

在使用软件仓库安装服务程序时,体系会主动根据 RPM 软件包中的指令集完成软件配置等工作。但是一旦选择使用源码包的方式来安装,这一切就需要本身来完成了。对于 MySQL数据库来说,我们需要在体系中创建一个名为 mysql 的用户,专门用于负责运行 MySQL 数据库。请记得要把这类账户的 Bash 终端设置成 nologin 解释器,制止黑客通过该用户登录到服务器中,从而提高体系安全性。
  1. [root@linuxprobe lnmp]# useradd mysql -M -s /sbin/nologin
复制代码
 接下来预备配置 MySQL 服务。 
第一步:解压 MySQL 安装软件包。将解压出的程序目录改名并移动到/usr/local 目录下,对其举行初始化操纵后便可使用。需要留意的是,以.tar.xz 结尾的压缩包软件,不应用 z 参数举行解压。 
  1. [root@linuxprobe lnmp]# tar xvf mysql-8.0.18.tar.xz
  2. [root@linuxprobe lnmp]# mv mysql-8.0.18-linux-glibc2.12-x86_64 mysql
  3. [root@linuxprobe lnmp]# mv mysql /usr/local
复制代码
第二步:在生产情况中管理 MySQL 数据库时,有两个比较常用的目录。一个是/usr/local/mysql
目录,这是用于保存 MySQL 数据库程序文件的路径。另有一个是/usr/local/mysql/data 目录,它用于存储数据库的具体内容,每个数据库的内容会被单独存放到一个目录内。对于存放实际数据库
文件的 data 目录,用户需要先手动创建出来: 
  1. [root@linuxprobe lnmp]# cd /usr/local/mysql
  2. [root@linuxprobe mysql]# mkdir data
复制代码
第三步:初始化 MySQL 服务程序,对目录举行授权,保证数据能够被 mysql 体系用户读取。在初始化阶段,应使用 mysqld 命令确认管理 MySQL 数据库服务的用户名称、数据保存目录及编码信息。在信息确认无误后开始举行初始化。在初始化的末了阶段,体系会给用户分配一个初始化的暂时密码,各人肯定要保存好,例如下面示例中分配的密码是qfroRs,Ei4Ls。 
  1. [root@linuxprobe mysql]# chown -R mysql:mysql /usr/local/mysql
  2. [root@linuxprobe mysql]# cd bin
  3. [root@linuxprobe bin]# ./mysqld --initialize --user=mysql --basedir=/usr/local/
  4. mysql --datadir=/usr/local/mysql/data
  5. 2021-05-06T07:07:06.243270Z 0 [System] [MY-013169] [Server] /usr/local/mysql/bin
  6. /mysqld (mysqld 8.0.18) initializing of server in progress as process 7606
  7. 2021-05-06T07:07:08.116268Z 5 [Note] [MY-010454] [Server] A temporary password  
  8. is generated for root@localhost: qfroRs,Ei4Ls
复制代码
第四步:与 Nginx 服务相似,MySQL 数据库的二进制可实验命令也单独存放在自身的程序目录/usr/local/mysql/bin 中。若每次在实验命令之前都要先切换到这个目录,则着实有些麻烦,要能也参加到 PATH 变量中可就方便太多了。说干就干! 
  1. [root@linuxprobe bin]# vim~/.bash_profile
  2. # .bash_profile
  3. # Get the aliases and functions
  4. if [ -f~/.bashrc ]; then
  5.         . ~/.bashrc
  6. fi
  7. # User specific environment and startup programs
  8. PATH=$PATH:$HOME/bin:/usr/local/nginx/sbin:/usr/local/mysql/bin
  9. export PATH
  10. [root@linuxprobe bin]# source~/.bash_profile
复制代码
在如许设置后,即便返回到源码目录,也可以继续实验 MySQL 数据库的管理命令。不过先别着急!既然是手动安装服务,那么让文件“归位”的重任就只得亲力亲为了----将启动脚本 mysql.server 放入到/etc/init.d 目录中,让服务器每次重启后都能主动启动数据库,并给予可实验权限。 
libtinfo.so.5 文件是 MySQL 数据库在 8.0 版本后新添加的紧张的函数库文件,但默认不存在,需要将 libtinfo.so.6.1 文件复制过来或者作为链接文件才气正常启动: 
  1. [root@linuxprobe bin]# cd /usr/local/mysql
  2. [root@linuxprobe mysql]# cp -a support-files/mysql.server /etc/init.d/
  3. [root@linuxprobe mysql]# chmod a+x /etc/init.d/mysql.server
  4. [root@linuxprobe mysql]# ln -s /usr/lib64/libtinfo.so.6.1 /usr/lib64/libtinfo.so.5
复制代码
第五步:实验 MySQL 数据库服务启动文件,并举行初始化工作。为了安全着想,MySQL自 8.0 版本起不再答应用户使用暂时密码来管理数据库内容,也不能举行远程控制,用户必须修改初始化密码后才气使用 MySQL 数据库。数据库作为体系紧张的构成服务,密码位数不建议少于 20 位。例如,下面将密码修改为“PObejCBeDzTRCncXwgBy”。 
  1. [root@linuxprobe mysql]# /etc/init.d/mysql.server start
  2. Starting MySQL.Logging to '/usr/local/mysql/data/linuxprobe.com.err'.
  3. . SUCCESS!  
  4. [root@linuxprobe mysql]# mysql -u root -p
  5. Enter password:   
  6. Welcome to the MySQL monitor.  Commands end with ; or \g.
  7. Your MySQL connection id is 8
  8. Server version: 8.0.18
  9. Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
  10. Oracle is a registered trademark of Oracle Corporation and/or its
  11. affiliates. Other names may be trademarks of their respective
  12. owners.
  13. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  14. mysql> alter user 'root'@'localhost' identified by 'PObejCBeDzTR
  15. CncXwgBy';  
  16. Query OK, 0 rows affected (0.01 sec)
  17. mysql>  
复制代码
但如许还是不行,还需要继续切换到 mysql 数据库中,修改 user 表单的密码值。这也是从 MySQL 数据库 8.0 版本之后才有的新安全要求,看过本书上一版的读者应该记得在 MySQL 5/6 版本中就没有这么麻烦。 
  1. mysql> use mysql;
  2. Reading table information for completion of table and column names
  3. You can turn off this feature to get a quicker startup with -A
  4. Database changed
  5. mysql> show tables;
  6. +---------------------------+
  7. | Tables_in_mysql            |
  8. +---------------------------+
  9. | columns_priv              |
  10. | tables_priv               |
  11. | time_zone                 |
  12. | time_zone_leap_second      |
  13. | time_zone_name             |
  14. | time_zone_transition       |
  15. | time_zone_transition_type  |
  16. | user                      |
  17. | …………省略部分输出信息…………     |
  18. +---------------------------+
  19. 33 rows in set (0.00 sec)
  20. mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native
  21. _password BY  
  22. 'PObejCBeDzTRCncXwgBy';
  23. Query OK, 0 rows affected (0.01 sec)
  24. (由于 第 4 节将会安装部署 WordPress 网站系统,因此现在需要提前把数据库新建出来: )
  25. mysql> create database linuxcool;
  26. Query OK, 1 row affected (0.00 sec)
  27. mysql> exit
  28. Bye
复制代码
2.3  配置 PHP 服务 

PHP(Hypertxt Preprocessor,超文本预处置惩罚器)是一种通用的开源脚本语言,发明于 1995年,它汲取了 C 语言、Java 语言及 Perl 语言的许多长处,具有开源、免费、快捷、跨平台性强、效率高等优良特性,是目前 Web 开辟范畴最常用的语言之一。 
使用源码包的方式编译安装 PHP 语言情况其实并不复杂,难点在于办理 PHP 的程序包和其他软件的依靠关系。 
第一步:解压 php 安装包软件并编译安装。在编译期间,需要使用 prefix 参数指定安装路径,使用--with-mysqli 等参数开启对数据库的支持模块,为反面的在线安装网站做好预备。 
  1. [root@linuxprobe mysql]# cd /lnmp
  2. [root@linuxprobe lnmp]# tar xvf php-7.3.5.tar.gz
  3. [root@linuxprobe lnmp]# cd php-7.3.5/
  4. [root@linuxprobe php-7.3.5]# ./configure --prefix=/usr/local/php --enable-fpm –
  5. -with-mysqli --with-curl --with-pdo_mysql --with-pdo_sqlite --enable-mysqlnd –enable
  6. -mbstring --with-gd
复制代码
使用下述命令生成二进制文件并举行安装,时间约莫为 10~20 分钟,耐心等待即可: 
  1. [root@linuxprobe php-7.3.5]# make
  2. [root@linuxprobe php-7.3.5]# make install
复制代码
第二步:将生成的 php 服务配置文件复制到安装目录中(/usr/local/php/),让其生效。现在主配置文件有了,接下来还需要 php-fpm 的配置文件,幸亏/usr/local/php/etc/目录中也已经提供,只需要复制模板即可: 
  1. [root@linuxprobe php-7.3.5]# cp php.ini-development /usr/local/php/lib/php.ini
  2. [root@linuxprobe php-7.3.5]# cd /usr/local/php/etc/
  3. [root@linuxprobe etc]# mv php-fpm.conf.default php-fpm.conf
复制代码
复制一个模板文件到 php-fpm.d 的目录中,用于后续控制网站的毗连性能: 
  1. [root@linuxprobe etc]# mv php-fpm.d/www.conf.default php-fpm.d/www.conf
复制代码
第三步:把 php 服务参加到启动项中,使其重启后依然生效: 
  1. [root@linuxprobe etc]# cd /lnmp/php-7.3.5
  2. [root@linuxprobe php-7.3.5]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
  3. [root@linuxprobe php-7.3.5]# chmod 755 /etc/init.d/php-fpm
复制代码
第四步:由于 php 服务程序的配置参数会对 Web 服务的运行情况造成影响,如果默认开启了一些不必要且高危的功能(如答应用户在网页中实验 Linux 命令),则会低沉网站被入侵的难度,乃至会让入侵职员拿到整台 Web 服务器的管理权限。因此需要编辑 php.ini 配置文件,在第 310 行的 disable_functions 参数反面追加上要禁止的功能。下面的禁用功能名单不见得得当每个生产情况,建议各人在此底子上根据自身工作需求酌情删减: 
  1. [root@linuxprobe php-7.3.5]# vim /usr/local/php/lib/php.ini
  2. 307 ; This directive allows you to disable certain functions for security reasons.
  3. 308 ; It receives a comma-delimited list of function names.
  4. 309 ; http://php.net/disable-functions
  5. 310 disable_functions = passthru,exec,system,chroot,chgrp,chown,she
  6. ll_exec,
  7. proc_open,proc_get_status,popen,ini_alter,ini_restore,dl,openlog,s
  8. yslog,readlink,
  9. symlink,popepassthru,stream_socket_server
复制代码
第五步:LNMP 架构源码编译工作就此竣事。预备享受胜利结果吧。 
  1. [root@linuxprobe php-7.3.5]# /etc/init.d/php-fpm start
  2. Starting php-fpm done
复制代码
3.  搭建 WordPress 博客 

为了检验 LNMP 动态网站架构情况是否配置妥当,可以在上面部署 WordPress 博客体系,然后查看结果。如果能够在 LNMP 动态网站情况中乐成安装并使用 WordPress 网站体系,也就意味着这套架构是可用的。WordPress 是一种使用 PHP 语言开辟的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设本身的网站。WordPress 具有丰富的插件和模板体系,是当前最受接待的网站内容管理体系。
下面预备搭建 WordPress 博客。 
把 Nginx 服务程序根目录的内容清空后,将 WordPress 解压后的网站文件复制进去: 
  1. [root@linuxprobe php-7.3.5]# cd ..
  2. [root@linuxprobe lnmp]# rm -f /usr/local/nginx/html/*
  3. [root@linuxprobe lnmp]# tar xzvf wordpress.tar.gz
  4. [root@linuxprobe lnmp]# mv wordpress/* /usr/local/nginx/html/
复制代码
为了能够让网站文件被 Nginx 服务程序顺利读取,应设置目录所有权的身份及可读写的权限: 
  1. [root@linuxprobe lnmp]# chown -Rf nginx:nginx /usr/local/nginx/html
  2. [root@linuxprobe lnmp]# chmod -Rf 777 /usr/local/nginx/html
复制代码
随后输入本机 IP 地点访问 WordPress 网站的首页面,如图所示。该页面提醒了用户稍后需要的安装信息。 

单击图中的“现在就开始”按钮,在随后出现的界面中依次输入刚刚创建的数据库名称、用户名及重置过的密码值。由于 WordPress 会要求用户自行创建好数据库,因此请确保网页中填写的数据库名称与刚才创建的一致,如图 20-5 所示。单击“提交”按钮举行确认后,便进入最终的安装阶段,如图 20-6 所示。 


顺利安装完毕后,WordPress 网站体系会要求用户填写站点标题、用户名及密码等信息,如图 20-7 所示。这些信息均可自行填写,建议密码稍微复杂一些。在查抄无误后即可单击“安装WordPress”按钮举行安装。安装乐成后的界面如图 20-8 所示。 

WordPress 的登录界面将在用户填写完账号及密码且单击“登录”按钮后主动出现,如图20-9 所示。 

顺利进入 WordPress 的管理后台,如图 20-10 所示。WordPress 作为最热门的网站内容管理体系,都能做出什么样的网站呢?各人肯定对此很好奇,感兴趣的可以自行研究一下。 

4.  选购服务器主机

我们一样平常访问的网站是由域名、网站源程序和主机共同构成的。其中,主机则是用于存放网页源代码并能够把网页内容展示给用户的服务器。下面是一些有关服务器主机的知识以及选购技巧。 
➢ 虚拟机 :在一台服务器中划分肯定的磁盘空间供用户放置网站信息、存放数据等;仅提供底子的网站访问、数据存放与传输功能;能够极大地低沉用户费用,也几乎不需要用户来维护网站以外的服务;得当小型网站。 
➢ VPS (Virtual Private Server,虚拟专用服务器) :在一台服务器中使用 OpenVZ、Xen或 KVM 等虚拟化技术模拟出多台“主机”(即 VPS),每个主机都有独立的 IP 地点、操纵体系;差别 VPS 之间的磁盘空间、内存、CPU、历程与体系配置完全隔离,用户可自由使用分配到的主机中的所有资源,为此需要具备肯定的维护体系的能力;得当小型网站。 
ECS (Elastic Computer Service,弹性计算服务[通常称为云服务器]) :是一种整合了计算、存储、网络,能够做到弹性伸缩的计算服务;使用起来与 VPS 几乎一样,差别是云服务器是创建在一组集群服务器中,每个服务器都会保存一个主机的镜像(备份),从而大大提升了安全性和稳定性;另外还具备机动性与扩展性;用户只需按使用量付费即可;得当大中小型网站。 
➢ 独立服务器 :这台服务器仅提供给用户一个人使用,其使用方式分为租用方式与托管方式。租用方式是用户将服务器的硬件配置要求告知 IDC 服务商,按照月、季、年为单元来租用它们的硬件设备。这些硬件设备由 IDC 服务商的机房负责维护,用户一般需要自行安装相应的软件并部署网站服务,这减轻了用户在硬件设备上的投入,比较得当大中型网站。托管方式则是用户需要自行购置服务器硬件设备,并将其交给 IDC服务商举行管理(需要缴纳管理服务费)。用户对服务器硬件配置有完全的控制权,自主性强,但需要自行维护、补缀服务器硬件设备;比较得当大中型网站。 
另外需要提醒读者的是,在选择服务器主机供应商时请肯定要留意查看口碑,并在综合分析后再决定购买。某些供应商会有限定功能、强制添加广告、隐蔽扣费或强制扣费等恶败行为,请各位肯定擦亮眼睛,不要被骗! 


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

十念

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表