编译LNMP部署动态网站环境

编程入门 行业动态 更新时间:2024-10-10 21:26:05

编译LNMP部署<a href=https://www.elefans.com/category/jswz/34/1551169.html style=动态网站环境"/>

编译LNMP部署动态网站环境

LNMP动态网站部署架构是由一套 Linux+Nginx+MySQL+PHP 组成的动态网站系统解决方案.以下配置环境为:Linux=RHEL7 --> Nginx=1.13 --> MySQL=5.6 --> PHP=7.0 无错误版.

安装编译环境

在使用源码包安装服务程序之前,首先要让安装主机具备编译程序源码的环境,他需要具备C语言,C++语言的编译器,以及常见的编译支持函数库程序,下面我们将通过Yum仓库来快速部署这些包.

[root@localhost ~]# yum install -y gcc gcc-c++ apr apr-util  autoconf automake bison bzip2Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager.
Package gcc-4.8.5-28.el7.x86_64 already installed and latest version
Package gcc-c++-4.8.5-28.el7.x86_64 already installed and latest version
Package apr-1.4.8-3.el7_4.1.x86_64 already installed and latest version
Package apr-util-1.5.2-6.el7.x86_64 already installed and latest version
Package autoconf-2.69-11.el7.noarch already installed and latest version
Package automake-1.13.4-3.el7.noarch already installed and latest version
Package bison-3.0.4-1.el7.x86_64 already installed and latest version
Package bzip2-1.0.6-13.el7.x86_64 already installed and latest version
Nothing to do

CMake是Linux系统中一款常用的编译工具,在这里MySQL的编译会用到CMake命令,接下来我们将解压,并编译安装这个包.

[root@localhost ~]# tar -xzvf cmake-2.8.11.2.tar.gz
[root@localhost ~]# cd cmake-2.8.11.2
[root@localhost ~]# ./configure
[root@localhost ~]# make
[root@localhost ~]# make install

编译安装 Nginx

Nginx是一款相当优秀的用于部署动态网站的轻量级服务程序,他最初是为俄罗斯门户站点开发的,因其性能稳定,功能丰富,占用内存小且并发能力高而备受用户的信赖,目前诸如,新浪搜狐,网易,腾讯等门户站点均已经使用了此服务.

坦白来说,虽然Nginx服务程序代码质量非常高,代码很规范,技术成熟,模块扩展也很容易,但任然存在不少的问题,比如官方资料对中文的支持较少,但是Nginx服务程序,在近几年来的发展势头迅猛,相信会在轻量级Web服务器市场能够有不错的前景.

1.在编译配置Nginx之前我们还需要解决相关依赖问题,例如用于提供Perl语言兼容的正则表达式库的软件包pcre,就是Nginx程序用于实现伪静态功能必不可少的依赖包,下面我们先来解压,并编译,安装这个包.

[root@localhost ~]# tar -xzvf pcre-8.35.tar.gz
[root@localhost ~]# cd pcre-8.35
[root@localhost ~]# ./configure --prefix=/usr/local/pcre
[root@localhost ~]# make
[root@localhost ~]# make install

2.紧接着继续编译安装openssl,这个工具是用与提供网站加密证书服务的程序文件,安装时需要自定义服务程序的安装目录,以便于后期调用命令是更方便.

[root@localhost ~]# tar -xzvf openssl-1.0.1h.tar.gz
[root@localhost ~]# cd openssl-1.0.1h
[root@localhost ~]# ./config --prefix=/usr/local/openssl
[root@localhost ~]# make
[root@localhost ~]# make install

3.在openssl安装后,默认会在/usr/local/openssl/bin目录中提供很多可用命令,我们将这个目录添加到PATH环境变量里,方便后期的调用.

[root@localhost ~]# echo "export PATH=$PATH:/usr/local/openssl/bin" >> /etc/profile
[root@localhost ~]# source /etc/profile
[root@localhost ~]# openssl 
OpenSSL>

4.zlib软件包是用户提供压缩功能的函数文件,下面我们开始编译安装.

[root@localhost ~]# tar -xzvf zlib-1.2.8.tar.gz
[root@localhost ~]# cd zlib-1.2.8
[root@localhost ~]# ./configure --prefix=/usr/local/zlib
[root@localhost ~]# make
[root@localhost ~]# make install

5.在安装好zlib后,下面我们进入编译Nginx的前戏阶段,创建一个Nginx用户

[root@localhost ~]# useradd -s /sbin/nologin -M nginx

6.下面开始编译安装Nginx,这里我们需要指定--user与--group参数,也就是用户与组,在使用参数openssl和zlib库时应该指定具体位置.

[root@localhost ~]# tar -xzvf nginx-1.13.12.tar.gz
[root@localhost ~]# cd nginx-1.13.12
[root@localhost ~]# ./configure --prefix=/usr/local/nginx \
> --user=nginx --group=nginx \
> --with-http_stub_status_module --with-http_ssl_module \
> --with-http_gzip_static_module --with-openssl=/root/openssl-1.0.1h \
> --with-zlib=/root/zlib-1.2.8 --with-pcre=/root/pcre-8.35
[root@localhost ~]# make
[root@localhost ~]# make install

7.启动Nginx,并设置开机自启动

[root@localhost ~]# /usr/local/nginx/sbin/nginx -t                        #检测配置文件正确性
[root@localhost ~]# /usr/local/nginx/sbin/nginx                           #启动Nginx
[root@localhost ~]# kill -QUIT $(cat /usr/local/nginx/logs/nginx.pid)     #关闭Nginx
[root@localhost ~]# kill -HUP $(cat /usr/local/nginx/logs/nginx.pid)      #重启Nginx
[root@localhost ~]# echo "/usr/local/nginx/sbin/nginx 2> /dev/null" >> /etc/profile

编译安装 MySQL

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle旗下产品.MySQL是最流行的关系型数据库管理系统之一,在WEB应用方面,MySQL是最好的RDBMS应用软件,MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性.这里需要注意的是由于MySQL5.7以后产品闭源了,后期的话可以使用MariaDB替代.

1.在编译MySQL过程中,我们需要创建一个mysql的系统用户,专门负责运行MySQL数据库,记得把这个账户变成一个不可登录的用户,且也无需创建家目录,提高系统安全性.

[root@localhost ~]# useradd -s /sbin/nologin -M mysql

2.创建一个用于保存MySQL程序,和数据库文件的目录,并把该目录所有者和所属组改成mysql,其中/usr/local/mysql用于保存MySQL数据程序,而/usr/local/mysql/data则用来保存数据库文件.

[root@localhost ~]# mkdir -p /usr/local/mysql
[root@localhost ~]# mkdir -p /usr/local/mysql/data
[root@localhost ~]# chown -Rf mysql:mysql /usr/local/mysql/

3.安装Ncurses,若不安装ncurses编译MySQL时会报错

[root@localhost ~]# yum install -y ncurses-devel
[root@localhost ~]# tar -xzvf ncurses-6.1.tar.gz
[root@localhost ~]# cd ncurses-6.1
[root@localhost ~]# ./configure --with-shared \
--without-debug \
--without-ada \
--enable-overwrite
[root@localhost ~]# make
[root@localhost ~]# make install# --without-ada参数为设定不编译为ada绑定,因进入chroot环境不能使用ada ;
# --enable-overwrite参数为定义把头文件安装到/tools/include下而不是/tools/include/ncurses目录
# --with-shared	生成共享库

4.接下来,开始解压编译MySQL,由于MySQL体积过大,编译时间很长,耐心等待吧

[root@localhost ~]# tar -xzvf mysql-5.6.19.tar.gz
[root@localhost ~]# cd mysql-5.6.19
[root@localhost ~]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DSYSCONFDIR=/etc \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306
[root@localhost ~]# make
[root@localhost ~]# make install

5.下面进入配置环节,首先删除/etc/myf默认配置文件,然后在MySQL程序目录内,找到一个名为mysql_install_db的脚本文件,执行这个脚本,并使用--user参数指定MySQL服务的对应账号名称,使用--basedir指定MySQL程序保存目录,使用--datadir指定数据库目录.

[root@localhost ~]# rm -fr /etc/myf
[root@localhost ~]# cd /usr/local/mysql/
[root@localhost mysql]# ./scripts/mysql_install_db --user=mysql \
--basedir=/usr/local/mysql/ \
--datadir=/usr/local/mysql/data/....
New default config file was created as /usr/local/mysql//myf and
will be used by default by the server when you start it.
You may edit this file to change server settings

6.接着把,MySQL数据库配置文件复制到/etc/目录下,然后把开机程序复制到/etc/rc.d/init.d目录下,给脚本755的权限.

[root@localhost mysql]# cp -a myf /etc/myf
[root@localhost mysql]# cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld
[root@localhost mysql]# chmod 755 -R /etc/rc.d/init.d/mysqld

7.修改刚刚的配置文件,改basedir=/usr/local/mysql,datadir=/usr/local/mysql/data这一行.

[root@localhost mysql]# vim /etc/rc.d/init.d/mysqld43 # If you change base dir, you must also change datadir. These may get44 # overwritten by settings in the MySQL configuration files.45 46 basedir= /usr/local/mysql47 datadir= /usr/local/mysql/data48 49 # Default value, in seconds, afterwhich the script should timeout waiting50 # for server start.

8.启动MySQL,与设置chkconfig开机自启动的配置.

[root@localhost ~]# /etc/rc.d/init.d/mysqld start
[root@localhost ~]# /usr/local/mysql/bin/mysqld_safe --user=mysql &[root@localhost ~]# chkconfig mysqld on
[root@localhost ~]# chkconfig --list mysqldNote: This output shows SysV services only and does not include nativesystemd services. SysV configuration data might be overridden by nativesystemd configuration.If you want to list systemd services use 'systemctl list-unit-files'.To see services enabled on particular target use'systemctl list-dependencies [target]'.mysqld         	0:off	1:off	2:on	3:on	4:on	5:on	6:off[root@localhost ~]# echo "/usr/local/mysql/bin/mysqld_safe --user=mysql &" >> /etc/rc.local

9.添加环境变量,使用相对路径命令,这样就能直接访问了.

[root@localhost ~]# echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
[root@localhost ~]# source /etc/profile
[root@localhost ~]# mysql -urootWelcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.6.19 Source distributionCopyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql>

10.MySQL数据库还会调用一些函数库,在这里我们把它们复制到指定的位置吧.

[root@localhost ~]# mkdir /var/lib/mysql
[root@localhost ~]# ln -s /usr/local/mysql/lib/* /var/lib/mysql
[root@localhost ~]# ln /usr/local/mysql/include/mysql /usr/include/
[root@localhost ~]# ln -s /usr/local/mysql/include/mysql /usr/include/mysql

11.接着我们执行 mysql_secure_installation 命令,给MySQL设置初始密码,到此配置完毕

[root@localhost ~]# mysql_secure_installation 
[root@localhost ~]# mysql -uroot -p1233
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 18
Server version: 5.6.19 Source distributionCopyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql>

编译安装 PHP

PHP是一种通用开源脚本语言,语法吸收了C语言、Java和Perl的特点,利于学习使用广泛,主要适用于Web开发领域.PHP独特的语法混合了C、Java、Perl以及PHP自创的语法.它可以比CGI或者Perl更快速地执行动态网页.用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成HTML标记的CGI要高许多,PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快.

1.在编译安装PHP之前首先要解决依赖的问题,例如yasm是一款常见的开源汇编器.

[root@localhost ~]# tar -xzvf yasm-1.2.0.tar.gz
[root@localhost ~]# cd yasm-1.2.0
[root@localhost ~]# ./configure
[root@localhost ~]# make
[root@localhost ~]# make install

2.libmcrypt是用于加密算法的扩展库程序.

[root@localhost ~]# tar -xzvf libmcrypt-2.5.8.tar.gz
[root@localhost ~]# cd libmcrypt-2.5.8
[root@localhost ~]# ./configure
[root@localhost ~]# make
[root@localhost ~]# make install

3.libvpx是用于提供视频编码器服务的程序.

[root@localhost ~]# tar -xjvf libvpx-v1.3.0.tar.bz2
[root@localhost ~]# cd libvpx-v1.3.0
[root@localhost ~]# ./configure --prefix=/usr/local/libvpx --enable-shared --enable-vp9
[root@localhost ~]# make
[root@localhost ~]# make install

4.tiff是用于提供标签图像文件格式的服务程序.

[root@localhost ~]# tar -xzvf tiff-4.0.3.tar.gz
[root@localhost ~]# cd tiff-4.0.3
[root@localhost ~]# ./configure --prefix=/usr/local/tiff --enable-shared
[root@localhost ~]# make
[root@localhost ~]# make install

5.libpng是用于提供png图片格式支持函数库的服务程序.

[root@localhost ~]# tar -xzvf libpng-1.6.12.tar.gz
[root@localhost ~]# yum install -y zlib zlib-devel
[root@localhost ~]#  ./configure --prefix=/usr/local/libpng --enable-shared
[root@localhost ~]# make
[root@localhost ~]# make install

6.freetype是用于提供字体支持引擎的服务.

[root@localhost ~]# tar -xzvf freetype-2.5.3.tar.gz
[root@localhost ~]# cd freetype-2.5.3
[root@localhost ~]# ./configure --prefix=/usr/local/freetype -enable-shared
[root@localhost ~]# make
[root@localhost ~]# make install

7.jpeg是用于提供jpeg图片格式支持的函数库.

[root@localhost ~]# tar -xzvf jpegsrc.v9a.tar.gz
[root@localhost ~]# cd jpeg-9a
[root@localhost ~]# ./configure --prefix=/usr/local/jpeg --enable-shared
[root@localhost ~]# make
[root@localhost ~]# make install

8.libgd是用于提供图形处理的服务.

[root@localhost ~]# tar -xzvf libgd-2.1.0.tar.gz
[root@localhost ~]# cd libgd-2.1.0
[root@localhost ~]# ./configure --prefix=/usr/local/libgd --with-jpeg=/usr/local/jpeg \
--with-freetype=/usr/local/freetype --with-tiff=/usr/local/tiff --with-vpx=/usr/local/libvpx
[root@localhost ~]# make
[root@localhost ~]# make install

9.tlib是用于提供图片生成函数库的服务程序.

[root@localhost ~]# tar -xzvf t1lib-5.1.2.tar.gz
[root@localhost ~]# cd t1lib-5.1.2
[root@localhost ~]# ./configure --prefix=/usr/local/t1lib --enable-shared
[root@localhost ~]# make
[root@localhost ~]#  make install[root@localhost ~]# ln -s /usr/lib64/libltdl.so.7 /usr/lib/libltdl.so
[root@localhost ~]# cp -a frp /usr/lib64/libXpm.so* /usr/lib/

10.编译安装PHP程序.(这里既可以使用5.x也可以使用7.x参数通用)

[root@localhost ~]# tar -xzvf php-7.0.0.tar.gz
[root@localhost ~]# yum install -y libxml2 libxml2-devel libcurl libcurl-devel libXpm-devel
[root@localhost ~]# cd php-7.0.0
[root@localhost ~]# export LD_LIBRARY_PATH=/usr/local/libgd/lib
[root@localhost ~]# ./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 ~]# make
[root@localhost ~]# make install

配置 PHP与Nginx

1.拷贝相应配置文件

cp -a php.ini-development /usr/local/php7/lib/php.ini
cp -a /usr/local/php7/etc/php-fpm.conf.default /usr/local/php7/etc/php-fpm.conf
cp -a sapi/fpm/php-fpm /usr/local/bin

2.编辑配置文件,在PHP文件末尾追加写入以下标★语句

vim /usr/local/php7/lib/php.inicgi.fix_pathinfo=1 					#将注释去掉,开启PHP的pathinfo伪静态功能
max_execution_time = 0  				#脚本运行的最长时间,默认30秒
max_input_time = 300					#脚本可以消耗的时间,默认60秒
memory_limit = 256M					#脚本运行最大消耗的内存,根据你的需求更改数值,默认128M
post_max_size = 100M  				    #单提交的最大数据,默认100M
upload_max_filesize = 10M				#上载文件的最大许可大小,默认2M

3.修改php-fpm的配置,在PHP-fpm文件中,修改以下标★语句

cd  /usr/local/php7/etc/php-fpm.d/cp -a www.conf.default www.confvim /usr/local/php7/etc/php-fpm.d/www.conf ★listen.owner = nobody					#解除注释
★listen.group = nobody					#解除注释★user = nginx						#将apache修改为nginx
★group = nginx						#将apache修改为nginx

4.修改nginx的主配置,在server语句内,写入以下标★语句

vim /usr/local/nginx/conf/nginx.conf38     server {
39         listen       80 default_server;
40         listen       [::]:80 default_server;
41         server_name  _;
42         root         /usr/share/nginx/html;
43 
44         # Load configuration files for the default server block.
45         include /etc/nginx/default.d/*.conf;
46 
★         location / {
★ 
★         root   html;
★         index index.php index.html index.htm;
★ 
52         }
53 
★         location ~ \.php$ {
★         root           /usr/local/nginx/html;
★         try_files $uri =404;
★         fastcgi_pass   127.0.0.1:9000;
★         fastcgi_index  index.php;
★         fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
★         include        fastcgi_params;
★         }
62 
63         error_page 404 /404.html;
64             location = /40x.html {
65         }

5.设置网页目录权限

chown -R nginx:nginx /usr/local/nginx/html/

6.新建index.php测试页

vim /usr/local/nginx/html/index.php<?phpphpinfo();
?>

7.重启服务,并查看9000端口是否启动成功

/usr/local/nginx/sbin/nginx
/usr/local/php7/sbin/php-fpmnetstat -npa | grep 9000

8.配置妥当后,便可以复制php管理脚本,并加入到开机自启动列表

[root@localhost php-7.0.0]# cp -a sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
[root@localhost php-7.0.0]# chmod 755 -R /etc/rc.d/init.d/php-fpm
[root@localhost php-7.0.0]# chkconfig php-fpm on
[root@localhost php-7.0.0]# 
[root@localhost php-7.0.0]# chkconfig --list php-fpmNote: This output shows SysV services only and does not include nativesystemd services. SysV configuration data might be overridden by nativesystemd configuration.If you want to list systemd services use 'systemctl list-unit-files'.To see services enabled on particular target use'systemctl list-dependencies [target]'.php-fpm        	0:off	1:off	2:on	3:on	4:on	5:on	6:off

更多推荐

编译LNMP部署动态网站环境

本文发布于:2024-02-07 10:32:24,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1756205.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:动态网站   环境   LNMP

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!