本文使用的是用源码包安装服务程序,难度可能较大,至于为何要用源码包安装程序,说简单点就是方便自己使用吧,以及这是一门必备技能,以后在运维工作中也是会用到的!
1、下载 解压源码包文件
下载源码包后,相应命令解压,进入解压目录即可!
例如:
[root@allen mnt]# ls
keepalived-2.0.6.tar.gz
[root@allen mnt]# tar zxf keepalived-2.0.6.tar.gz
[root@allen mnt]# ls
keepalived-2.0.6 keepalived-2.0.6.tar.gz
[root@allen mnt]# cd keepalived-2.0.6/
2、编译源码包代码
在编译期间可以通过追加参数–prefix,指定源码包程序的安装路径,当编译结束后,如果系统环境符合安装要求,一般会在当前目录下生成一个Makefile安装文件!
例如:
[root@allen keepalived-2.0.6]# ./configure --prefix=/usr/local/LVS
3、生成二进制文件程序
使用make命令根据Makefile文件内容编译出二进制可执行文件
[root@allen keepalived-2.0.6]# make
4、运行二进制程序
如果编译时用了- -prefix参数指定安装目录,那么程序会被安装在指定目录,没有使用的话,一般会默认安装在/usr/local/bin 目录中
[root@allen keepalived-2.0.6]#make install
5、清理源码包临时文件
使用make clean 命令可以对临时文件进行彻底清理,以达到不浪费磁盘存储空间的目的
[root@allen keepalived-2.0.6]# make clean
LNMP = Linux + Nginx + MySQL +PHP
1、 在使用源码包安装服务程序之前,首先让主机具备编译程序源码的环境。需要具备C语言,C++语言,Perl语言的编译器,以及各种常见的编译支持函数库程序。
yum install apr* autoconf automake bison bzip2* compat* cpp curl-devel fontconfig-devel freetype* gcc gcc-c++ gd gettext-devel glibc kernel kernel-headers keyutils-libs-devel krb5-devel libcom_err-devel libpng-devel libjpeg* libsepol-devel libselinux-devel libstdc++-devel libtool* libgomp libxml2-devel libXpm* libtifflibtiff* make mpfr ncurses* ntp openssl-devel patch pcre-devel perl php-common php-gd policycoreutils telnet tllib* nasm* wget zlib-devel -y
2、下载安装LNMP动态网站部署架构的16个软件源码包和1个用于检测效果的论坛网站系统软件包
通过wget命令下载:
cd /usr/local/src
wget https://www.linuxprobe.com/Software/cmake-2.8.11.2.tar.gz
wget https://www.linuxprobe.com/Software/Discuz_X3.2_SC_GBK.zip
wget https://www.linuxprobe.com/Software/freetype-2.5.3.tar.gz
wget https://www.linuxprobe.com/Software/jpegsrc.v9a.tar.gz
wget https://www.linuxprobe.com/Software/libgd-2.1.0.tar.gz
wget https://www.linuxprobe.com/Software/libmcrypt-2.5.8.tar.gz
wget https://www.linuxprobe.com/Software/libpng-1.6.12.tar.gz
wget https://www.linuxprobe.com/Software/libvpx-v1.3.0.tar.bz2
wget https://www.linuxprobe.com/Software/mysql-5.6.19.tar.gz
wget https://www.linuxprobe.com/Software/nginx-1.6.0.tar.gz
wget https://www.linuxprobe.com/Software/openssl-1.0.1h.tar.gz
wget https://www.linuxprobe.com/Software/php-5.5.14.tar.gz
wget https://www.linuxprobe.com/Software/pcre-8.35.tar.gz
wget https://www.linuxprobe.com/Software/t1lib-5.1.2.tar.gz
wget https://www.linuxprobe.com/Software/tiff-4.0.3.tar.gz
wget https://www.linuxprobe.com/Software/yasm-1.2.0.tar.gz
wget https://www.linuxprobe.com/Software/zlib-1.2.8.tar.gz
[root@allen src]# tar zxf cmake-2.8.11.2.tar.gz
[root@allen src]# cd cmake-2.8.11.2/
[root@allen cmake-2.8.11.2]# ./configure && make && make install
MySQL数据库是当前生产环境中最常使用的关系型数据库管理系统之一,有极高的安全性和稳定性,坐拥极大的市场份额。
1)创建名为mysql的用户,专门用于负责运行MySQL数据库
切记这类用户的bash终端得设置为nologin解释器,避免黑客通过使用该用户登陆到服务器中,从而提高系统安全性!
[root@allen cmake-2.8.11.2]# cd ..
[root@allen src]# useradd -s /sbin/nologin mysql
2)创建一个目录用来保存MySQL数据库的程序和文件
[root@allen src]# mkdir -p /usr/local/mysql/var #建立目录
# /usr/local/mysql/ 用来存放MySQL数据库的程序
# /usr/local/mysql/var 用来保存真实数据库文件
[root@allen src]# chown -Rf mysql:mysql /usr/local/mysql/
# 将目录的所有者和所属组身份改为mysql
3)解压、编译、安装MySQL数据库服务程序
在编译数据库时使用的是CMake命令
-DCMAKE_INSTALL_PREFIX= 参数 定义数据库服务程序的保存目录
-DMYSQL_DATADIR= 参数 定义真实数据库文件的目录
-DSYSCONFDIR= 参数 定义MySQL数据库配置文件的保存目录
[root@allen src]# tar zxf mysql-5.6.19.tar.gz
[root@allen src]# cd mysql-5.6.19/
[root@allen mysql-5.6.19]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/var -DSYSCONFDIR=/etc
[root@allen mysql-5.6.19]# make && make install
4)为了让MySQL正常运行,删除默认配置文件重新生成
[root@allen mysql-5.6.19]# rm -fr /etc/my.cnf #删除/etc目录中的默认配置文件
[root@allen mysql-5.6.19]# cd /usr/local/mysql/ #进入MySQL数据库程序的保存目录
[root@allen mysql]# ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var
#执行/mysql_install_db脚本,并指定--user,--basedir,--datadir 参数
[root@allen mysql]# ln -s my.cnf /etc/my.cnf
5)加入service命令管理
./support-files/mysql.server 开机程序文件
[root@allen mysql]# cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld
[root@allen mysql]# chmod 755 /etc/rc.d/init.d/mysqld #给执行权限
6)配置脚本文件并启动服务
[root@allen mysql]# vim /etc/rc.d/init.d/mysqld
46 basedir=/usr/local/mysql # MySQL程序 的保存目录
47 datadir=/usr/local/mysql/var # 真实数据库的文件内容 的保存目录
[root@allen mysql]# service mysqld start #启动服务
[root@allen mysql]# chkconfig mysqld on #开机自启
7)将MySQL命令保存目录永久性定义到PATH变量中
[root@allen mysql]# vim /etc/profile #加入以下内容
75 export PATH=$PATH:/usr/local/mysql/bin
[root@allen mysql]# source /etc/profile #重新加载/etc/profile文件
[root@allen mysql]# mkdir /var/lib/mysql
[root@allen mysql]# ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql
[root@allen mysql]# ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
[root@allen mysql]# ln -s /usr/local/mysql/include/mysql /usr/include/mysql
9)对MySQL数据库进行初始化
一直回车就行
[root@allen mysql]# mysql_secure_installation
Nginx是一个高性能的HTTP和反向代理web服务器,是一款相当优秀的用于部署动态网站的轻量级服务程序。因稳定、功能丰富(Web、反向代理、负载均衡)、占用内存少且并发能力强而被广泛运用!
1)解决相关软件依赖(pcre,openssl,zlib)
pcre:提供perl语言兼容的正则表达式库
[root@allen mysql]# cd /usr/local/src/
[root@allen src]# tar zxf pcre-8.35.tar.gz
[root@allen src]# cd pcre-8.35/
[root@allen pcre-8.35]# ./configure --prefix=/usr/local/pcre && make && make install
openssl:用于提供网站加密证书服务
[root@allen pcre-8.35]# cd ..
[root@allen src]# tar zxf openssl-1.0.1h.tar.gz
[root@allen src]# cd openssl-1.0.1h/
[root@allen openssl-1.0.1h]# ./config --prefix=/usr/local/openssl && make && make install
openssl软件包安装之后,会在/usr/local/openssl/bin/目录中提供很多可用的命令、将这个目录加入PATH环境变量中
[root@allen openssl-1.0.1h]# vim /etc/profile
75 export PATH=$PATH:/usr/local/mysql/bin:/usr/local/openssl/bin/
[root@allen openssl-1.0.1h]# source /etc/profile
zlib:提供压缩功能
[root@allen openssl-1.0.1h]# cd ..
[root@allen src]# tar zxf zlib-1.2.8.tar.gz
[root@allen src]# cd zlib-1.2.8/
[root@allen zlib-1.2.8]# ./configure --prefix=/usr/local/zlib && make && make install
2、创建一个用于执行Nginx服务程序的账户(可自定义)
[root@allen zlib-1.2.8]# useradd -s /sbin/nologin www
3、编译安装Nginx
[root@allen zlib-1.2.8]# cd ..
[root@allen src]# tar zxf nginx-1.6.0.tar.gz
[root@allen src]# cd nginx-1.6.0/
[root@allen 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 && make && make install
4、将Nginx服务加入到开机启动项中
[root@allen nginx-1.6.0]# vim /etc/rc.d/init.d/nginx
#!/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 $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 -R $user $value
fi
fi
done
}
start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
make_dirs
echo -n $"Starting $prog: "
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
stop() {
echo -n $"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}
restart() {
#configtest || return $?
stop
sleep 1
start
}
reload() {
#configtest || return $?
echo -n $"Reloading $prog: "
killproc $nginx -HUP
RETVAL=$?
echo
}
force_reload() {
restart
}
configtest() {
$nginx -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: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
exit 2
esac
[root@allen nginx-1.6.0]# chmod 775 /etc/rc.d/init.d/nginx
5、启动服务
[root@allen nginx-1.6.0]# /etc/rc.d/init.d/nginx start
[root@allen nginx-1.6.0]# chkconfig nginx on #开机自启
6、测试
浏览器访问服务器IP
PHP(Hypertxt Preprocessor,超文本预处理器)是一种通用的开源脚本语言,具有开源、免费、快捷、跨平台性强、效率高等优良特点,是目前Web开发领域最常用的语言之一。
1、先安装部署将近十个用于搭建网站页面的软件程序包
yasm:常见的开源汇编器
[root@allen ~]# cd /usr/local/src/
[root@allen src]# tar zxf yasm-1.2.0.tar.gz
[root@allen src]# cd yasm-1.2.0/
[root@allen yasm-1.2.0]# ./configure && make && make install
libmcrypt:用于加密算法的扩展库程序
[root@allen yasm-1.2.0]# cd ..
[root@allen src]# tar zxf libmcrypt-2.5.8.tar.gz
[root@allen src]# cd libmcrypt-2.5.8/
[root@allen libmcrypt-2.5.8]# ./configure && make && make install
libvpx:提供视频编码器的服务程序
[root@allen src]# tar jxf libvpx-v1.3.0.tar.bz2
[root@allen src]# cd libvpx-v1.3.0/
[root@allen libvpx-v1.3.0]# ./configure --prefix=/usr/local/libvpx --enable-shared --enable-vp9 && make && make install
tiff:用于提供标签图像文件格式的服务程序
[root@allen libvpx-v1.3.0]# cd ..
[root@allen src]# tar zxf tiff-4.0.3.tar.gz
[root@allen src]# cd tiff-4.0.3/
[root@allen tiff-4.0.3]# ./configure --prefix=/usr/local/tiff --enable-shared && make && make install
libpng:提供png图片格式支持函数库的服务程序
[root@allen tiff-4.0.3]# cd ..
[root@allen src]# tar zxf libpng-1.6.12.tar.gz
[root@allen src]# cd libpng-1.6.12/
[root@allen libpng-1.6.12]# ./configure --prefix=/usr/local/libpng --enable-shared && make && make install
freetype:提供字体支持引擎的服务程序
[root@allen libpng-1.6.12]# cd ..
[root@allen src]# tar zxf freetype-2.5.3.tar.gz
[root@allen src]# cd freetype-2.5.3/
[root@allen freetype-2.5.3]# ./configure --prefix=/usr/local/freetype --enable-shared && make && make install
jpeg:提供jpeg图片格式支持函数库的服务程序
[root@allen freetype-2.5.3]# cd ..
[root@allen src]# tar zxf jpegsrc.v9a.tar.gz
[root@allen src]# cd jpeg-9a/
[root@allen jpeg-9a]# ./configure --prefix=/usr/local/jpeg --enable-shared && make && make install
libgd:提供图片处理的服务程序
[root@allen jpeg-9a]# cd ..
[root@allen src]# tar zxf libgd-2.1.0.tar.gz
[root@allen src]# cd libgd-2.1.0/
[root@allen libgd-2.1.0]# ./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 && make && make install
t1lib:提供图片生成函数库的服务程序
[root@allen libgd-2.1.0]# cd ..
[root@allen src]# tar zxf t1lib-5.1.2.tar.gz
[root@allen src]# cd t1lib-5.1.2/
[root@allen t1lib-5.1.2]# ./configure --prefix=/usr/local/t1lib --enable-shared && make && make install
[root@allen t1lib-5.1.2]# ln -s /usr/lib64/libltdl.so /usr/lib/libltdl.so
[root@allen t1lib-5.1.2]# ln -s /usr/lib64/libXpm.so* /usr/lib/
2、编译、安装php
依次定义配置php服务程序配置文件的保存目录、MySQL数据库服务程序所在目录、MySQL数据库服务程序配置文件所在目录,以及libpng、jpeg、freetype、libvpx、zlib、t1lib等服务程序的安装目录路径,并通过参数启动php服务程序的诸多默认功能
[root@allen t1lib-5.1.2]# cd ..
[root@allen src]# tar zxf php-5.5.14.tar.gz
[root@allen src]# cd php-5.5.14/
[root@allen 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@allen php-5.5.14]# make && make install
3、php.ini 和 php-fpm.conf 文件的处理
[root@allen php-5.5.14]# rm -fr /etc/php.ini
[root@allen php-5.5.14]# cp php.ini-production /usr/local/php/etc/php.ini
[root@allen php-5.5.14]# ln -s /usr/local/php/etc/php.ini /etc/php.ini
[root@allen php-5.5.14]# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
[root@allen php-5.5.14]# ln -s /usr/local/php/etc/php-fpm.conf /etc/php-fpm.conf
4、php-fpm.conf 文件配置
[root@allen php-5.5.14]# vim /etc/php-fpm.conf #制作的软链接
25 pid = run/php-fpm.pid
148 user = www #和nginx用户相同
149 group = www
5、将管理PHP服务的脚本文件复制到/etc/rc.d/init.d目录中
[root@allen php-5.5.14]# cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
[root@allen php-5.5.14]# chmod 775 /etc/rc.d/init.d/php-fpm
[root@allen php-5.5.14]# chkconfig php-fpm on
6、编辑php.ini配置文件,在305行的disable_functions参数后面追加上要禁止的功能
[root@allen php-5.5.14]# vim /etc/php.ini
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,checkdnsrr,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,posix_getppid,posix_getpwnam,posix_ getpwuid,posix_getrlimit,posix_getsid,posix_getuid,posix_isatty,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_ setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname
[root@allen conf]# ln -s /usr/local/nginx/conf/nginx.conf /etc/nginx.conf
[root@allen conf]# vim /etc/nginx.conf
2 user www www;
45 index index.html index.htm index.php;
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_na me;
70 include fastcgi_params;
71 }
[root@allen conf]# systemctl restart nginx
[root@allen conf]# systemctl restart php-f
为了检验LNMP动态网站环境是否配置妥当,可以使用在上面部署Discuz!系统,然后查看结果。如果能够在LNMP动态网站环境中成功安装使用Discuz!论坛系统,也就意味着这套架构是可用的。Discuz! X3.2是国内最常见的社区论坛系统,在经过十多年的研发后已经成为了全球成熟度最高、覆盖率最广的论坛网站系统之一。
1、将解包的全部文件移至Nginx默认发布目录
[root@allen conf]# cd /usr/local/src/
[root@allen src]# unzip Discuz_X3.2_SC_GBK.zip
[root@allen src]# rm -fr /usr/local/nginx/html/{index.html,50x.html}*
[root@allen src]# mv upload/* /usr/local/nginx/html/
[root@allen src]# chown -Rf www:www /usr/local/nginx/html/
[root@allen src]# chmod -Rf 775 /usr/local/nginx/html/
2、浏览器访问服务器IP
如果为不可写,请自行检查目录的所有者和所属组是否为www用户,以及是否对目录设置了755权限,然后单击“下一步”按钮。
5、根据提示填,特别是数据库密码
管理员信息,没有特殊要求,自定义