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

入口五:建站特惠购买


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

目录
相关文章
|
1月前
|
弹性计算 安全 Linux
阿里云服务器ECS安装宝塔Linux面板、安装网站(新手图文教程)
本教程详解如何在阿里云服务器上安装宝塔Linux面板,涵盖ECS服务器手动安装步骤,包括系统准备、远程连接、安装命令执行、端口开放及LNMP环境部署,手把手引导用户快速搭建网站环境。
|
4月前
|
监控 Linux 应用服务中间件
Linux多节点多硬盘部署MinIO:分布式MinIO集群部署指南搭建高可用架构实践
通过以上步骤,已成功基于已有的 MinIO 服务,扩展为一个 MinIO 集群。该集群具有高可用性和容错性,适合生产环境使用。如果有任何问题,请检查日志或参考MinIO 官方文档。作者联系方式vx:2743642415。
1373 57
|
3月前
|
消息中间件 存储 Kafka
一文带你从入门到实战全面掌握RocketMQ核心概念、架构部署、实践应用和高级特性
本文详细介绍了分布式消息中间件RocketMQ的核心概念、部署方式及使用方法。RocketMQ由阿里研发并开源,具有高性能、高可靠性和分布式特性,广泛应用于金融、互联网等领域。文章从环境搭建到消息类型的实战(普通消息、延迟消息、顺序消息和事务消息)进行了全面解析,并对比了三种消费者类型(PushConsumer、SimpleConsumer和PullConsumer)的特点与适用场景。最后总结了使用RocketMQ时的关键注意事项,如Topic和Tag的设计、监控告警的重要性以及性能与可靠性的平衡。通过学习本文,读者可掌握RocketMQ的使用精髓并灵活应用于实际项目中。
2258 9
 一文带你从入门到实战全面掌握RocketMQ核心概念、架构部署、实践应用和高级特性
|
6月前
|
资源调度 前端开发 算法
鸿蒙OS架构设计探秘:从分层设计到多端部署
本文深入探讨了鸿蒙OS的架构设计,从独特的“1+8+N”分层架构到模块化设计,再到智慧分发和多端部署能力。分层架构让系统更灵活,模块化设计通过Ability机制实现跨设备一致性,智慧分发优化资源调度,多端部署提升开发效率。作者结合实际代码示例,分享了开发中的实践经验,并指出生态建设是未来的关键挑战。作为国产操作系统的代表,鸿蒙的发展值得每一位开发者关注与支持。
|
4月前
|
消息中间件 数据可视化 Kafka
docker arm架构部署kafka要点
本内容介绍了基于 Docker 的容器化解决方案,包含以下部分: 1. **Docker 容器管理**:通过 Portainer 可视化管理工具实现对主节点和代理节点的统一管理。 2. **Kafka 可视化工具**:部署 Kafka-UI 以图形化方式监控和管理 Kafka 集群,支持动态配置功能, 3. **Kafka 安装与配置**:基于 Bitnami Kafka 镜像,提供完整的 Kafka 集群配置示例,涵盖 KRaft 模式、性能调优参数及数据持久化设置,适用于高可用生产环境。 以上方案适合 ARM64 架构,为用户提供了一站式的容器化管理和消息队列解决方案。
374 10
|
6月前
|
关系型数据库 MySQL 应用服务中间件
Linux 手动安装快速部署 LNMP 环境实战
本文详细记录了在阿里云ECS上手动搭建LNMP环境的过程,系统选用Ubuntu 24.04。主要内容包括:1) 使用`apt`安装Nginx和MySQL,并更新软件源;2) 编译安装PHP 8.4.5,配置PHP-FPM及环境路径;3) 配置MySQL root用户密码;4) 调整Nginx支持PHP解析并测试整体环境。通过此过程,重现手动配置服务器的细节,帮助熟悉各组件的安装与协同工作。
378 23
|
19天前
|
Unix Linux 程序员
Linux文本搜索工具grep命令使用指南
以上就是对Linux环境下强大工具 `grep` 的基础到进阶功能介绍。它不仅能够执行简单文字查询任务还能够处理复杂文字处理任务,并且支持强大而灵活地正则表达规范来增加查询精度与效率。无论您是程序员、数据分析师还是系统管理员,在日常工作中熟练运用该命令都将极大提升您处理和分析数据效率。
83 16
|
11天前
|
Linux
linux命令—stat
`stat` 是 Linux 系统中用于查看文件或文件系统详细状态信息的命令。相比 `ls -l`,它提供更全面的信息,包括文件大小、权限、所有者、时间戳(最后访问、修改、状态变更时间)、inode 号、设备信息等。其常用选项包括 `-f` 查看文件系统状态、`-t` 以简洁格式输出、`-L` 跟踪符号链接,以及 `-c` 或 `--format` 自定义输出格式。通过这些选项,用户可以灵活获取所需信息,适用于系统调试、权限检查、磁盘管理等场景。
|
2月前
|
监控 Linux 网络安全
Linux命令大全:从入门到精通
日常使用的linux命令整理
656 13
|
3月前
|
Linux 网络安全 数据安全/隐私保护
使用Linux系统的mount命令挂载远程服务器的文件夹。
如此一来,你就完成了一次从你的Linux发车站到远程服务器文件夹的有趣旅行。在这个技术之旅中,你既探索了新地方,也学到了如何桥接不同系统之间的距离。
532 21