Linux巩固篇020-Linux LNMP 架构部署动态网站环境

简介: 纸上得来终觉浅,绝知此事要躬行

前言

这段话送给坚持到现在的你,今天是最后一章了,很感谢阿里云提供这么一个平台,让我把这本书都操作完,我深知自己能力一般水平有限,并不能给大家带来书籍以外更多的知识,但是我已经把所有的坑都趟平了,学完这本书可能也只能算是入门阶段,希望大家能入门,我可能现在也和在座的各位一样为了生活奔波劳作,可能从事着不同的行业,干着喜欢或不喜欢的工作,在写这系列文章的初期,我是抗拒学习的,中间搁浅了一年左右,为了所谓的工作牺牲提升自己的机会,浪费时间做了很多自己以为很牛的事,但是有一天我发现工作重复且枯燥,在底层做着无用功的原因就是不热爱学习一直在消耗,在人脉和资源的社会下,如果你无一技傍身,真的会随着年纪的增长慢慢被社会淘汰掉,希望你能明白工作是有限的局限的,并不会因为你工作特别努力就会被提拔或者升职加薪,但是学习是无限的终身的,只要你这个人足够优秀,你就可以有更多选择,在不同的环境下不被束缚,学习嘛只要你努力提升自己哪怕每天进步一个字母,每天多学一行句子,你就比昨天牛,比昨天厉害,所以学起来吧,起码学习的时候你总是年轻的,总是开心的,总是有活力的,远离坏心情,乐观面对生活。

常用命令汇总

LNMP 动态网站部署架构是一套由 Linux + Nginx + MySQL + PHP 组成的动态网站系统 解决方案,具有免费、高效、扩展性强且资源消耗低等优良特性

源码包程序

源码包的可移植性非常好,几乎可以在任何 Linux 系统中安装使用,而 RPM 软件包 是针对特定系统和架构编写的指令集,必须严格地符合执行环境才能顺利安装(即只 会去“生硬地”安装服务程序)。

使用源码包安装服务程序时会有一个编译过程,因此可以更好地适应安装主机的系统 环境,运行效率和优化程度都会强于使用 RPM 软件包安装的服务程序。也就是说, 可以将采用源码包安装服务程序的方式看作是针对系统的“量体裁衣”

第1步:下载及解压源码包文件

[root@localhost ~]# tar xzvf FileName.tar.gz

第2步:编译源码包代码

[root@localhost ~]# ./configure --prefix=/usr/local/program

第3步:生成二进制安装程序

[root@localhost ~]# make

第4步:运行二进制的服务程序安装包

[root@localhost ~]# make install

(通常三四步骤合并为make&make install)

第5步:清理源码包临时文件

[root@localhost ~]# make clean

LNMP 动态网站架构

LNMP 动态网站部署架构是一套由 Linux + Nginx+MySQL+PHP组成的动态网站系统解决方案

image.png

使用源码包安装服务程序之前,首先要让安装主机具备编译程序源码的环境,他需要 具备 C 语言、C++语言、Perl 语言的编译器,以及各种常见的编译支持函数库程序

安装编译环境

[root@localhost ~]# yum install -y apr* autoconf automake bison bzip2 bzip2* compat* cpp curl curl-devel fontconfig fontconfig-devel freetype freetype* freetype-devel gcc gcc-c++ gd gettext gettext-devel glibc kernel kernel-headers keyutils keyutils-libs-devel krb5-devel libcom_err-devel libpng libpng-devel libjpeg* libsepol-devel libselinux-devel libstdc++-devel libtool* libgomp libxml2 libxml2-devel libXpm* libtifflibtiff* make mpfr ncurses* ntp openssl openssl-devel patch pcre-devel perl php-common php-gd policycoreutils telnet t1lib t1lib* nasm nasm* wget zlib-devel

下载安装包(16个软件源码和1个论坛网站软件包)

批量复制直接粘贴

wget http://www.linuxprobe.com/Software/cmake-2.8.11.2.tar.gz

wget http://www.linuxprobe.com/Software/Discuz_X3.2_SC_GBK.zip

wget http://www.linuxprobe.com/Software/freetype-2.5.3.tar.gz

wget http://www.linuxprobe.com/Software/jpegsrc.v9a.tar.gz

wget http://www.linuxprobe.com/Software/libgd-2.1.0.tar.gz

wget http://www.linuxprobe.com/Software/libmcrypt-2.5.8.tar.gz

wget http://www.linuxprobe.com/Software/libpng-1.6.12.tar.gz

wget http://www.linuxprobe.com/Software/libvpx-v1.3.0.tar.bz2

wget http://www.linuxprobe.com/Software/mysql-5.6.19.tar.gz

wget http://www.linuxprobe.com/Software/nginx-1.6.0.tar.gz

wget http://www.linuxprobe.com/Software/openssl-1.0.1h.tar.gz

wget http://www.linuxprobe.com/Software/php-5.5.14.tar.gz

wget http://www.linuxprobe.com/Software/pcre-8.35.tar.gz

wget http://www.linuxprobe.com/Software/t1lib-5.1.2.tar.gz

wget http://www.linuxprobe.com/Software/tiff-4.0.3.tar.gz

wget http://www.linuxprobe.com/Software/yasm-1.2.0.tar.gz

wget http://www.linuxprobe.com/Software/zlib-1.2.8.tar.gz

[root@localhost src]# ls

cmake-2.8.11.2.tar.gz   jpegsrc.v9a.tar.gz      libpng-1.6.12.tar.gz   nginx-1.6.0.tar.gz     php-5.5.14.tar.gz   yasm-1.2.0.tar.gz

Discuz_X3.2_SC_GBK.zip  libgd-2.1.0.tar.gz      libvpx-v1.3.0.tar.bz2  openssl-1.0.1h.tar.gz  t1lib-5.1.2.tar.gz  zlib-1.2.8.tar.gz

freetype-2.5.3.tar.gz   libmcrypt-2.5.8.tar.gz  mysql-5.6.19.tar.gz    pcre-8.35.tar.gz       tiff-4.0.3.tar.gz

CMake 是 Linux 系统中一款常用的编译工具

[root@localhost cmake-2.8.11.2]# tar xzvf cmake-2.8.11.2.tar.gz

[root@localhost cmake-2.8.11.2]# cd cmake-2.8.11.2/

[root@localhost cmake-2.8.11.2]# ./configure  

[root@localhost cmake-2.8.11.2]#  make && make install

配置 MySQL 服务

创建mysql 的用户

[root@localhost cmake-2.8.11.2]# useradd mysql -s /sbin/nologin

创建MySQL目录

[root@localhost cmake-2.8.11.2]# mkdir -p /usr/local/mysql/var

[root@localhost cmake-2.8.11.2]# chown -Rf mysql:mysql /usr/local/mysql

解压、编译、安装 MySQL 数据库服务程序

[root@localhost src]# cd ..

[root@localhost src]# tar xzvf mysql-5.6.19.tar.gz

[root@localhost src]# cd mysql-5.6.19/

[root@localhost mysql-5.6.19]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/var -DSYSCONFDIR=/etc

[root@localhost mysql-5.6.19]# make && make install

配置mysql

[root@localhost mysql-5.6.19]# rm -rf /etc/my.cnf

[root@localhost mysql-5.6.19]# cd /usr/local/mysql

[root@localhost mysql]# ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var

系统新生成的 MySQL 数据库配置文件链接到/etc 目录中

[root@localhost mysql]# ln -s my.cnf /etc/my.cnf

[root@localhost mysql]# cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld

[root@localhost mysql]# chmod 755 /etc/rc.d/init.d/mysqld

配置地址

[root@localhost mysql]# vim /etc/rc.d/init.d/mysqld

...

# overwritten by settings in the MySQL configuration files.

basedir=/usr/local/mysql

datadir=/usr/local/mysql/var

# Default value, in seconds, afterwhich the script should timeout waiting

...

用service命令启动 mysqld 数据库服务(第二行开机自启动)

[root@localhost mysql]# service mysqld start

Starting MySQL. SUCCESS!  

[root@localhost mysql]# chkconfig mysqld on

PATH 变量修改

[root@localhost mysql]# vim /etc/profile

done

export PATH=$PATH:/usr/local/mysql/bin

unset i

unset -f pathmunge

加载一下!!!

[root@localhost mysql]# source /etc/profile

mysql链接函数和程序文件

[root@localhost mysql]# mkdir /var/lib/mysql

[root@localhost mysql]# ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql

[root@localhost mysql]# ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock

[root@localhost mysql]# ln -s /usr/local/mysql/include/mysql /usr/include/mysql

MySQL数据库服务程序启动配置

详细的不解释了,可以找一下翻译,第一个回车剩下的都选y,该输密码输密码

[root@localhost mysql]# mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL

     SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MySQL to secure it, we'll need the current

password for the root user.  If you've just installed MySQL, and

you haven't set the root password yet, the password will be blank,

so you should just press enter here.

Enter current password for root (enter for none):  回车键

OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MySQL

root user without the proper authorisation.

Set root password? [Y/n] y

New password:  新设密码

Re-enter new password:  重复密码

Password updated successfully!

Reloading privilege tables..

... Success!

By default, a MySQL installation has an anonymous user, allowing anyone

to log into MySQL without having to have a user account created for

them.  This is intended only for testing, and to make the installation

go a bit smoother.  You should remove them before moving into a

production environment.

Remove anonymous users? [Y/n] y

... Success!

Normally, root should only be allowed to connect from 'localhost'.  This

ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y

... Success!

By default, MySQL comes with a database named 'test' that anyone can

access.  This is also intended only for testing, and should be removed

before moving into a production environment.

Remove test database and access to it? [Y/n] y

- Dropping test database...

... Success!

- Removing privileges on test database...

... Success!

Reloading the privilege tables will ensure that all changes made so far

will take effect immediately.

Reload privilege tables now? [Y/n] y

... Success!

All done!  If you've completed all of the above steps, your MySQL

installation should now be secure.

Thanks for using MySQL!

Cleaning up...

配置 Nginx 服务

Nginx 是一款相当优秀的用于部署动态网站的轻量级服务程序,它最初是为俄罗斯门户 站点而开发的,因其稳定性、功能丰富、占用内存少且并发能力强而备受用户的信赖,Nginx 具备的模块数量与 Apache 具备的模块数量几乎相同,而且现在已经完全支 持 proxy、rewrite、mod_fcgi、ssl、vhosts 等常用模块。更重要的是,Nginx 还支持热部署技术, 可以 7×24 不间断提供服务,还可以在不暂停服务的情况下直接对 Nginx 服务程序进行升级

解压、编译、生成、安装 Nginx 服务程序

[root@localhost mysql]# cd /usr/local/src

[root@localhost src]# tar xzvf pcre-8.35.tar.gz

[root@localhost pcre-8.35]# cd pcre-8.35

[root@localhost pcre-8.35]# ./configure --prefix=/usr/local/pcre

[root@localhost pcre-8.35]# make && make install

openssl 软件包是用于提供网站加密证书服务的程序文件

[root@localhost src]# cd /usr/local/src

[root@localhost src]# tar xzvf openssl-1.0.1h.tar.gz

[root@localhost src]# cd openssl-1.0.1h

[root@localhost openssl-1.0.1h]# ./config --prefix=/usr/local/openssl

[root@localhost openssl-1.0.1h]# make && make install

修改PATH 环境

[root@localhost openssl-1.0.1h]# vim /etc/profile

...

export PATH=$PATH:/usr/local/mysql/bin:/usr/local/openssl/bin

unset i

unset -f pathmunge

生效

[root@localhost openssl-1.0.1h]# source /etc/profile

zlib 软件包是用于提供压缩功能的函数库文件

[root@localhost openssl-1.0.1h]# cd /usr/local/src

[root@localhost src]# tar xzvf zlib-1.2.8.tar.gz

[root@localhost src]# cd zlib-1.2.8

[root@localhost zlib-1.2.8]# ./configure --prefix=/usr/local/zlib

[root@localhost zlib-1.2.8]# make && make install

创建Nginx账户

[root@localhost zlib-1.2.8]# useradd www -s /sbin/nologin

使用命令编译 Nginx 服务程序

[root@localhost zlib-1.2.8]# cd ..

[root@localhost src]# tar xzvf nginx-1.6.0.tar.gz

[root@localhost src]# cd nginx-1.6.0/

[root@localhost nginx-1.6.0]# ./configure --prefix=/usr/local/nginx --without-http_memcached_module --user=www --group=www --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-openssl=/usr/local/src/openssl-1.0.1h --with-zlib=/usr/local/src/zlib-1.2.8 --with-pcre=/usr/local/src/pcre-8.35

[root@localhost nginx-1.6.0]# make && make install

编写脚本文件(直接复制用)

#!/bin/bash

# nginx - this script starts and stops the nginx daemon

# chkconfig: - 85 15

# description: Nginx is an HTTP(S) server, HTTP(S) reverse \

# proxy and IMAP/POP3 proxy server

# processname: nginx

# config: /etc/nginx/nginx.conf

# config: /usr/local/nginx/conf/nginx.conf

# pidfile: /usr/local/nginx/logs/nginx.pid

# Source function library.

. /etc/rc.d/init.d/functions

# Source networking configuration.

. /etc/sysconfig/network

# Check that networking is up.

[ "$NETWORKING" = "no" ] && exit 0

nginx="/usr/local/nginx/sbin/nginx"

prog=(basename(basename nginx)

NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"

[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx

lockfile=/var/lock/subsys/nginx

make_dirs() {

# make required directories

user=`$nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`

       if [ -z "`grep $user /etc/passwd`" ]; then

               useradd -M -s /bin/nologin $user

       fi

options=`$nginx -V 2>&1 | grep 'configure arguments:'`

for opt in $options; do

       if [ `echo $opt | grep '.*-temp-path'` ]; then

               value=`echo $opt | cut -d "=" -f 2`

               if [ ! -d "$value" ]; then

                       # echo "creating" $value

                       mkdir -p value && chown -Rvalue && chown -Rvalue && chown -R user $value

               fi

       fi

done

}

start() {

[ -x $nginx ] || exit 5

[ -f $NGINX_CONF_FILE ] || exit 6

make_dirs

echo -n "Starting"Starting prog: "

daemon nginx−cnginx -c NGINX_CONF_FILE

retval=$?

echo

[ retval -eq 0 ] && touchretval -eq 0 ] && touchretval -eq 0 ] && touch lockfile

return $retval

}

stop() {

echo -n "Stopping"Stopping prog: "

killproc $prog -QUIT

retval=$?

echo

[ retval -eq 0 ] && rm -fretval -eq 0 ] && rm -fretval -eq 0 ] && rm -f lockfile

return $retval

}

restart() {

#configtest || return $?

stop

sleep 1

start

}

reload() {

#configtest || return $?

echo -n "Reloading"Reloading prog: "

killproc $nginx -HUP

RETVAL=$?

echo

}

force_reload() {

restart

}

configtest() {

nginx−t−cnginx -t -c NGINX_CONF_FILE

}

rh_status() {

status $prog

}

rh_status_q() {

rh_status >/dev/null 2>&1

}

case "$1" in

start)

       rh_status_q && exit 0

       $1

       ;;

stop)

       rh_status_q || exit 0

       $1

       ;;

restart|configtest)

$1

;;

reload)

       rh_status_q || exit 7

       $1

       ;;

force-reload)

       force_reload

       ;;

status)

       rh_status

       ;;

condrestart|try-restart)

       rh_status_q || exit 0

       ;;

*)

echo "Usage:"Usage: 0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"

exit 2

esac

脚本说实话写的很有水平,但是也要有shell基础才能把这些东西学好,这个直接复制也不用解析学习了

赋权执行和开机自启动

[root@localhost nginx-1.6.0]# chmod 755 /etc/rc.d/init.d/nginx

[root@localhost nginx-1.6.0]# /etc/rc.d/init.d/nginx restart

Reloading systemd:                                         [  OK  ]

Restarting nginx (via systemctl):                          [  OK  ]

[root@localhost nginx-1.6.0]# chkconfig nginx on

检验一下(请在虚拟机上检验,如果想在主机上看,就把防火墙和selinux关闭)

image.png

配置 PHP 服务

PHP(Hypertxt Preprocessor,超文本预处理器)是一种通用的开源脚本语言,它吸取了 C 语言、Java 语言及 Perl 语言的很多优点,具有开源、免费、快捷、跨平台性 强、效率高等优良特性,是目前 Web 开发领域最常用的语言之一,使用源码包的方式编译安装 PHP 语言环境其实并不复杂,难点在于解决 PHP 的程序包 和其他软件的依赖关系

折磨开始(9个要安装的)

开源汇编器

yasm 源码包解压、编译、安装

[root@localhost nginx-1.6.0]# cd ..

[root@localhost src]# tar zxvf yasm-1.2.0.tar.gz  

[root@localhost src]# cd yasm-1.2.0/

[root@localhost yasm-1.2.0]# ./configure  

[root@localhost yasm-1.2.0]# make && make install

加密算法的扩展库

libmcrypt 源码包解压、编译、安装

[root@localhost yasm-1.2.0]# cd ..

[root@localhost src]# tar zxvf libmcrypt-2.5.8.tar.gz

[root@localhost src]# cd libmcrypt-2.5.8/

[root@localhost libmcrypt-2.5.8]# ./configure  

[root@localhost libmcrypt-2.5.8]# make && make install

视频编码器

libvpx 源码包解压、编译、安装

[root@localhost libmcrypt-2.5.8]# cd ..

[root@localhost src]# tar xjvf libvpx-v1.3.0.tar.bz2

[root@localhost libvpx-v1.3.0]# ./configure --prefix=/usr/local/libvpx --enable-shared --enable-vp9

[root@localhost libvpx-v1.3.0]# make && make install

标签图像文件格式

tiff 源码包解压、编译、安装

[root@localhost libvpx-v1.3.0]# cd ..

[root@localhost src]# tar zxvf tiff-4.0.3.tar.gz

[root@localhost src]# cd tiff-4.0.3/

[root@localhost tiff-4.0.3]# ./configure --prefix=/usr/local/tiff --enable-shared

[root@localhost tiff-4.0.3]# make && make install

png 图片格式支持

libpng 源码包解压、编译、安装

[root@localhost src]# cd ..

[root@localhost src]# tar zxvf libpng-1.6.12.tar.gz

[root@localhost src]# cd libpng-1.6.12

[root@localhost libpng-1.6.12]# ./configure --prefix=/usr/local/libpng --enable-shared

[root@localhost libpng-1.6.12]# make && make install

字体支持引擎

freetype 源码包解压、编译、安装

[root@localhost tiff-4.0.3]# cd ..

[root@localhost src]# tar zxvf freetype-2.5.3.tar.gz

[root@localhost freetype-2.5.3]# ./configure --prefix=/usr/local/freetype -enable-shared

[root@localhost freetype-2.5.3]# make && make install

jpeg 图片格式

jpeg 源码包解压、编译、安装

[root@localhost libpng-1.6.12]# cd ..

[root@localhost src]# tar zxvf jpegsrc.v9a.tar.gz

[root@localhost src]#  cd jpeg-9a

[root@localhost jpeg-9a]# ./configure --prefix=/usr/local/jpeg --enable-shared

[root@localhost jpeg-9a]# make && make install

图形处理

libgd 源码包解压、编译、安装

[root@localhost jpeg-9a]# cd ..

[root@localhost src]# tar zxvf libgd-2.1.0.tar.gz

[root@localhost src]# cd libgd-2.1.0

[root@localhost src]# ./configure --prefix=/usr/local/libgd --enable-shared --with-jpeg=/usr/local/jpeg --with-png=/usr/local/libpng --with-freetype=/usr/local/freetype --with-fontconfig=/usr/local/freetype --with-xpm=/usr/ --with-tiff=/usr/local/tiff --with-vpx=/usr/local/libvpx

[root@localhost libgd-2.1.0]# make && make install

图片生成

t1lib 源码包其解压、编译、安装

[root@localhost libgd-2.1.0]# cd ..

[root@localhost src]# tar zxvf t1lib-5.1.2.tar.gz

[root@localhost src]# cd t1lib-5.1.2

[root@localhost t1lib-5.1.2]# ./configure --prefix=/usr/local/t1lib --enable-shared

[root@localhost t1lib-5.1.2]# make && make install

[root@localhost t1lib-5.1.2]# ln -s /usr/lib64/libltdl.so /usr/lib/libltdl.so

[root@localhost t1lib-5.1.2]# cp -frp /usr/lib64/libXpm.so* /usr/lib/

安装部署好后,开始编译php源码包

[root@localhost t1lib-5.1.2]# cd ..

[root@localhost src]# tar -zvxf php-5.5.14.tar.gz

[root@localhost src]# cd php-5.5.14

[root@localhost php-5.5.14]# export LD_LIBRARY_PATH=/usr/local/libgd/lib

[root@localhost php-5.5.14]# ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-mysql-sock=/tmp/mysql.sock --with-pdo-mysql=/usr/local/mysql --with-gd --with-png-dir=/usr/local/libpng --with-jpeg-dir=/usr/local/jpeg --with-freetype-dir=/usr/local/freetype --with-xpm-dir=/usr/ --with-vpx-dir=/usr/local/libvpx/ --with-zlib-dir=/usr/local/zlib --with-t1lib=/usr/local/t1lib --with-iconv --enable-libxml --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-opcache --enable-mbregex --enable-fpm --enable-mbstring --enable-ftp --enable-gd-native-ttf --with-openssl --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --enable-session --with-mcrypt --with-curl --enable-ctype

[root@localhost php-5.5.14]# make && make install

php 服务配置文件

[root@localhost php-5.5.14]# rm -rf /etc/php.ini

[root@localhost php-5.5.14]# cp php.ini-production /usr/local/php/etc/php.ini

[root@localhost php-5.5.14]# ln -s /usr/local/php/etc/php.ini /etc/php.ini

[root@localhost php-5.5.14]# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf

[root@localhost php-5.5.14]# ln -s /usr/local/php/etc/php-fpm.conf /etc/php-fpm.conf

[root@localhost php-5.5.14]# vim /usr/local/php/etc/php-fpm.conf

...

23 ; Note: the default prefix is /usr/local/php/var

24 ; Default Value: none

25 pid = run/php-fpm.pid

26  

27 ; Error log file

28 ; If it's set to "syslog", log is sent to syslogd instead of being written

...

147 ;       will be used.

148 user = www

149 group = www

150  

151 ; The address on which to accept FastCGI requests.

...

[root@localhost php-5.5.14]# cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm

[root@localhost php-5.5.14]# chmod 755 /etc/rc.d/init.d/php-fpm

[root@localhost php-5.5.14]# chkconfig php-fpm on

php 服务程序的配置参数直接会影响到 Web 服务服务的运行环境,因此,如果默认 开启了一些不必要且高危的功能(如允许用户在网页中执行 Linux 命令),则会降低网站被入 侵的难度,入侵人员甚至可以拿到整台 Web 服务器的管理权限

[root@localhost php-5.5.14]# vim /usr/local/php/etc/php.ini

...

304 ; http://php.net/disable-functions

305 disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini     _restor e,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,dll,popen,disk_free_space,checkdns     rr,checkdnsrr,g etservbyname,getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd,posix_getegid,posix_     geteuid,posix_getgid,po six_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posi     x_getppid,posix_getpwnam,posix_ getpwuid,posix_getrlimit,posix_getsid,posix_getuid,posix_isatty,posix_kill,posix_mkfifo,posix_se     tegid,posix_seteuid,posix_setgid,posix_ setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname

306  

307 ; This directive allows you to disable certain classes for security reasons.

...

编辑 Nginx 服务程序的主配置文件,65~71取消注释#

[root@localhost php-5.5.14]# vim /usr/local/nginx/conf/nginx.conf

 2 user  www www;

 3 worker_processes  1;

...

44             root   html;

45             index  index.html index.htm index.php;

46         }

...

65         location ~ \.php$ {

66             root           html;

67             fastcgi_pass   127.0.0.1:9000;

68             fastcgi_index  index.php;

69             fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

70             include        fastcgi_params;

71         }

...

[root@localhost php-5.5.14]# systemctl restart nginx

[root@localhost php-5.5.14]# systemctl restart php-fpm

LNMP 动态网站环境架构的配置完成

搭建 Discuz!论坛

检验 LNMP 动态网站环境,可以使用在上面部署 Discuz!系统

[root@localhost src]# cd /usr/local/src/

[root@localhost src]# unzip Discuz_X3.2_SC_GBK.zip

[root@localhost src]# rm -rf /usr/local/nginx/html/{index.html,50x.html}*

[root@localhost src]# mv upload/* /usr/local/nginx/html/

[root@localhost src]# chown -Rf www:www /usr/local/nginx/html

[root@localhost src]# chmod -Rf 755 /usr/local/nginx/html

我同意

image.png

下一步

image.png

全新安装,下一步

image.png

输入数据库密码和设置网站密码

image.png

访问

image.png

image.png

选购服务器主机

虚拟主机:在一台服务器中划分一定的磁盘空间供用户放置网站信息、存放数据等;仅提供基础的网站访问、数据存放与传输功能;能够极大地降低用户费用,也几乎不需要用户来维护网站以外的服务;适合小型网站。

VPS(Virtual Private Server,虚拟专用服务器):在一台服务器中利用OpenVZ、Xen或KVM等虚拟化技术模拟出多台“主机”(即VPS),每个主机都有独立的IP地址、操作系统;不同VPS之间的磁盘空间、内存、CPU、进程与系统配置完全隔离,用户可自由使用分配到的主机中的所有资源,为此需要具备一定的维护系统的能力;适合小型网站。

ECS(Elastic Compute Service,云服务器):是一种整合了计算、存储、网络,能够做到弹性伸缩的计算服务;使用起来与VPS几乎一样,差别是云服务器是建立在一组集群服务器中,每个服务器都会保存一个主机的镜像(备份),从而大大提升了安全性和稳定性;另外还具备灵活性与扩展性;用户只需按使用量付费即可;适合大中小型网站。

独立服务器:这台服务器仅提供给用户一个人使用,其使用方式分为租用方式与托管方式。租用方式是用户将服务器的硬件配置要求告知IDC服务商,按照月、季、年为单位来租用它们的硬件设备。这些硬件设备由IDC服务商的机房负责维护,用户一般需要自行安装相应的软件并部署网站服务,这减轻了用户在硬件设备上的投入,适合大中型网站。托管方式则是用户需要自行购置服务器硬件设备,并将其交给IDC服务供应商进行管理(需要缴纳管理服务费)。用户对服务器硬件配置有完全的控制权,自主性强,但需要自行维护、修理服务器硬件设备,适合大中型网站。

结语

简问简答

1.使用源码包安装服务程序的最大有点和缺点是什么?

答:使用源码包安装服务程序的最大优势是,服务程序的可移植性好,而且能更好地提升 服务程序的运行效率;缺点是源码包程序的安装、管理、卸载和维护都比较麻烦。

2.使用源码包的方式来安装软件服务的大致步骤是什么?

答:基本分为 4 个步骤,分别为下载及解压源码包文件、编译源码包代码、生成二进制安 装程序、运行二进制的服务程序安装包。

3.LNMP 动态网站部署架构通常包含了哪些服务程序?

答:LNMP 动态网站部署架构通常包含 Linux 系统、Nginx 网站服务、MySQL 数据库管 理系统,以及 PHP 脚本语言。

4.在 MySQL 数据库服务程序中,/usr/local/mysql 与/usr/local/mysql/var 目录的作用是什么?

答:/usr/local/mysql 用于保存 MySQL 数据库服务程序的目录,/usr/local/mysql/var 则用于 保存真实数据库文件的目录。

5.较之于 Apache 服务程序,Nginx 最显著的优势是什么?

答:Nginx 服务程序比较稳定,原因是采用了的资源分配技术,降低了 CPU 与内存的占用率, 所以使用 Nginx 程序部署的动态网站环境不仅十分稳定、高效,而且消耗的系统资源也很少。

6.如何禁止 php 服务程序中不安全的功能?

答:编辑 php 服务程序的配置文件(/usr/local/php/etc/php.ini),把要禁用的功能追加到 disable_functions 参数之后即可。


如果想根据教程实践的朋友们可以通过阿里云ecs服务器免费试用和低价购买,入口如下

入口一:新人免费试用

入口二:大学生免费试用

入口三:低价服务器购买

入口四:低价服务器购买2

入口五:建站特惠购买


感谢大家的陪伴,希望下一本书的操作学习大家还能继续跟进。。。

相关实践学习
CentOS 7迁移Anolis OS 7
龙蜥操作系统Anolis OS的体验。Anolis OS 7生态上和依赖管理上保持跟CentOS 7.x兼容,一键式迁移脚本centos2anolis.py。本文为您介绍如何通过AOMS迁移工具实现CentOS 7.x到Anolis OS 7的迁移。
目录
相关文章
|
21天前
|
Web App开发 搜索推荐 Unix
Linux系统之MobaXterm远程连接centos的GNOME桌面环境
【10月更文挑战第21天】Linux系统之MobaXterm远程连接centos的GNOME桌面环境
168 4
Linux系统之MobaXterm远程连接centos的GNOME桌面环境
|
7天前
|
关系型数据库 MySQL Linux
Linux环境下MySQL数据库自动定时备份实践
数据库备份是确保数据安全的重要措施。在Linux环境下,实现MySQL数据库的自动定时备份可以通过多种方式完成。本文将介绍如何使用`cron`定时任务和`mysqldump`工具来实现MySQL数据库的每日自动备份。
22 3
|
7天前
|
监控 关系型数据库 MySQL
Linux环境下MySQL数据库自动定时备份策略
在Linux环境下,MySQL数据库的自动定时备份是确保数据安全和可靠性的重要措施。通过设置定时任务,我们可以每天自动执行数据库备份,从而减少人为错误和提高数据恢复的效率。本文将详细介绍如何在Linux下实现MySQL数据库的自动定时备份。
20 3
|
7天前
|
Docker 微服务 容器
使用Docker Compose实现微服务架构的快速部署
使用Docker Compose实现微服务架构的快速部署
17 1
|
18天前
|
Linux UED iOS开发
|
23天前
|
Ubuntu 应用服务中间件 Linux
Linux下搭建Nginx环境的搭建
Linux下搭建Nginx环境的搭建
|
26天前
|
监控 Linux 云计算
Linux操作系统在云计算环境中的实践与优化###
【10月更文挑战第16天】 本文探讨了Linux操作系统在云计算环境中的应用实践,重点分析了其在稳定性、安全性和高效性方面的优势。通过具体案例,阐述了Linux如何支持虚拟化技术、实现资源高效分配以及与其他开源技术的无缝集成。文章还提供了针对Linux系统在云计算中的优化建议,包括内核参数调整、文件系统选择和性能监控工具的应用,旨在帮助读者更好地理解和应用Linux于云计算场景。 ###
34 3
|
5天前
|
缓存 负载均衡 JavaScript
探索微服务架构下的API网关模式
【10月更文挑战第37天】在微服务架构的海洋中,API网关犹如一座灯塔,指引着服务的航向。它不仅是客户端请求的集散地,更是后端微服务的守门人。本文将深入探讨API网关的设计哲学、核心功能以及它在微服务生态中扮演的角色,同时通过实际代码示例,揭示如何实现一个高效、可靠的API网关。
|
3天前
|
Cloud Native 安全 数据安全/隐私保护
云原生架构下的微服务治理与挑战####
随着云计算技术的飞速发展,云原生架构以其高效、灵活、可扩展的特性成为现代企业IT架构的首选。本文聚焦于云原生环境下的微服务治理问题,探讨其在促进业务敏捷性的同时所面临的挑战及应对策略。通过分析微服务拆分、服务间通信、故障隔离与恢复等关键环节,本文旨在为读者提供一个关于如何在云原生环境中有效实施微服务治理的全面视角,助力企业在数字化转型的道路上稳健前行。 ####
|
4天前
|
Dubbo Java 应用服务中间件
服务架构的演进:从单体到微服务的探索之旅
随着企业业务的不断拓展和复杂度的提升,对软件系统架构的要求也日益严苛。传统的架构模式在应对现代业务场景时逐渐暴露出诸多局限性,于是服务架构开启了持续演变之路。从单体架构的简易便捷,到分布式架构的模块化解耦,再到微服务架构的精细化管理,企业对技术的选择变得至关重要,尤其是 Spring Cloud 和 Dubbo 等微服务技术的对比和应用,直接影响着项目的成败。 本篇文章会从服务架构的演进开始分析,探索从单体项目到微服务项目的演变过程。然后也会对目前常见的微服务技术进行对比,找到目前市面上所常用的技术给大家进行讲解。
14 1
服务架构的演进:从单体到微服务的探索之旅