WEB——LNMP服务搭建

WEB

  • HTTP协议:超文本传输协议,端口号 80

  • HTTPS协议:安全的超文本传输协议,端口号 443

超文本传输协议比较知名的有两个版本,一个是1.0 版本一个是1.1版本,其中1.0是广泛使用的版本,1.1是当前使用的主流版本

WEB分为1.0版本和2.0版本,当前使用的是web 2.0版本

搭建一个简单的LNMP 环境

LNMP

  • L:Linux,Linux 也可以换成windows(wnmp)

  • N:Nginx,nginx可以换成 apache ,这样就可以是lamp架构

  • M:MySQL/Mariadb

  • P:PHP/Python/Perl

一、首先通过yum 安装的依赖包

yum -y install gcc gcc-c++ make pcre-devel zlib-devel openssl-devel lrzsz

gcc gcc-c++ make:用于编译安装

pcre-devel:用于支持nginx rewrite模块

zlib-devel:用于支持gizp 模块

openssl-devel:用于支持安全认证模块

lrzsz:用于xshell 交互上传下载文件

二、拉入nginx 源码包,然后进行解压

[root@localhost ~]# ls
anaconda-ks.cfg  nginx-1.6.0.tar.gz  yum.sh

###解压
[root@localhost ~]# tar xf nginx-1.6.0.tar.gz 
[root@localhost ~]# cd nginx-1.6.0

###查看nginx目录下的数据
[root@localhost nginx-1.6.0]# ls
auto     CHANGES.ru  configure  html     man     src
CHANGES  conf        contrib    LICENSE  README

###创建一个程序用户nginx
[root@localhost nginx-1.6.0]# useradd -M -s /sbin/nologin nginx

###查看nginx 可以添加哪些模块
[root@localhost nginx-1.6.0]# ./configure --help


###编译安装nginx
./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module && make && make install

--user:指的用户
--group:指的用户组
--prefix:指的安装路径
--with-http_stub_status_module:nginx 静态统计模块

###判断是否安装成功
echo $?

0为成功,非0为不成功

###进入nginx 的安装目录,查看内容
[root@localhost nginx-1.6.0]# cd /usr/local/nginx/
[root@localhost nginx]# ls
conf  html  logs  sbin

###启动nginx 之前先做个软连接
[root@localhost nginx]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/


做软连接的目的:因为 /usr/local/sbin/ 在PATH里面,在PATH直接可以搜索到这个命令,这样直接就可以调用nginx 这个命令

###查看$PATH
[root@localhost nginx]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

###ngin -t 检测语法
[root@localhost nginx]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

###启动nginx
[root@localhost nginx]# nginx

###查看nginx 端口号
[root@localhost nginx]# netstat -anput | grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      4869/nginx: master  
udp6       0      0 fe80::e532:c35c:9e2:546 :::*                                2060/dhclient

浏览器访问,http://IP地址

 

到此能访问成功,nginx没有问题

二、安装MySQL

我们安装的MySQL版本是5.5版本,5.5版本之后的是需要使用cmake进行编译安装的

MySQL安装方式

  • yum 安装

  • 二进制安装

  • 源码安装

###下载cmake-2.8.6 源码包
wget --no-check-certificate  https://cmake.org/files/v2.8/cmake-2.8.6.tar.gz

###将cmake 源码包移动到root目录下
[root@localhost nginx]# mv cmake-2.8.6.tar.gz ~

###将cmake 安装包解压到/usr/src 目录下
tar xf cmake-2.8.6.tar.gz -C /usr/src/

###进入cmake 解压后的目录
cd /usr/src/cmake-2.8.6/

###进行编译安装
./configure && make && make install

cmake 编译安装完成之后,安装一个MySQL依赖库

###为了支持MySQL字符集
yum -y instlal ncurses-devel

###查看是否安装过mariadb
[root@localhost cmake-2.8.6]# rpm -qa | grep mariadb
mariadb-libs-5.5.65-1.el7.x86_64

mariadb-libs 不是mariadb数据库

###解压MySQL源码包
tar xf mysql-5.5.22.tar.gz -C /usr/src/


###进入MySQL解压后的目录
cd /usr/src/mysql-5.5.22/

###进入编译安装
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DSYSCONFDIR=/etc


-DCMAKE_INSTALL_PREFIX:指的安装路径
-DDEFAULT_CHARSET:指的字符集编码
-DDEFAULT_COLLATION:指的字符校验规则
-DWITH_EXTRA_CHARSETS:指的支持的字符集
-DSYSCONFDIR:指定配置文件路径

###编译安装
make && make install

###进入MySQL编译后的目录
cd /usr/local/mysql/bin/

###查看里面的数据
ls

  • mysqladmin:为MySQL用户设置密码,管理数据库。

  • mysql:mysql 的客户端,用于登录MySQL的命令行。

  • mysqld_safe:用于安全启动数据库的,可以跳过授权表,可以不需要密码登录。

  • mysqlshow:用于查看慢查询日志。

  • mysqldump:用于MySQL数据库逻辑备份。

  • mysqlhotcopy用于MySQL数据库热备份。

###把MySQL命令加入到环境变量里面
[root@localhost ~]# echo "export PATH=$PATH:/usr/local/mysql/bin/" >> /etc/profile
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost ~]# source /etc/profile
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql/bin/

###进入到MySQL配置文件目录
[root@localhost ~]# cd /usr/local/mysql/support-files/

###将配置文件复制到/etc 下重命名为my.cnf
[root@localhost support-files]# cp my-medium.cnf /etc/my.cnf
cp:是否覆盖"/etc/my.cnf"? y

###将mysql.server 复制到/etc/init.d 下,重命名为mysqld
[root@localhost support-files]# cp mysql.server /etc/init.d/mysqld

  • my-medium.cnf:MySQL的配置文件

  • mysql.server:MySQL的启动脚本

###查看myqsld 启动脚本
[root@localhost support-files]# ll /etc/init.d/mysqld 
-rwxr-xr-x 1 root root 10650 9月   7 18:06 /etc/init.d/mysqld

###创建一个MySQL用户
useradd -M -s /sbin/nologin mysql


###为MySQL数据库初始化,进入到初始化脚本的目录
[root@localhost support-files]# cd /usr/local/mysql/scripts/
[root@localhost scripts]# ls
mysql_install_db

###将/usr/local/mysql 属组和宿主赋予给MySQL
chown -R mysql:mysql /usr/local/mysql/

###vim 进入/etc/my.cnf,指定[client]和[mysqld]的字符集编码,如果上面编译MySQL时指定了utf8字符集,可以跳过这一步
vim /etc/my.cnf
22 default-character-set = utf8
29 character_set_server = utf8

###初始化MySQL
[root@localhost scripts]# ./mysql_install_db --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ --user=mysql

###查看是否初始化成功
echo $?

初始化MySQL数据库,会给数据库里面创建几个默认的表

###启动MySQL数据库,并查看端口是否存在
[root@localhost scripts]# /etc/init.d/mysqld start
Starting MySQL.. SUCCESS! 
[root@localhost scripts]# netstat -anput | grep 3306
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      27873/mysqld 

###为MySQL设置密码
mysqladmin -uroot password 123123;history -c

密码是:123123,加history -c 是为了清空历史命令,防止被记录下来被查看到MySQL的密码

###登录MySQL数据库
mysql -uroot -p123123

###退出数据库
exit / quit

到此MySQL数据库安装完成

三、编译安装PHP

###拉入或下载PHP 5.3.28的安装包
wget https://www.php.net/distributions/php-5.3.28.tar.gz

###查看PHP安装包
[root@localhost ~]# ls
anaconda-ks.cfg  cmake-2.8.6.tar.gz  mysql-5.5.22.tar.gz  nginx-1.6.0.tar.gz  php-5.3.28.tar.gz  yum.sh

###解压php 的压缩包
[root@localhost ~]# tar xf php-5.3.28.tar.gz -C /usr/src/

###进入php 解压后的目录
[root@localhost ~]# cd /usr/src/php-5.3.28/

###查看php 目录里面的内容
[root@localhost php-5.3.28]# ls
acconfig.h        INSTALL              README.EXTENSIONS                 scripts
acconfig.h.in     install-sh           README.EXT_SKEL                   server-tests-config.php
acinclude.m4      LICENSE              README.GIT-RULES                  server-tests.php
aclocal.m4        ltmain.sh            README.input_filter               snapshot
build             main                 README.MAILINGLIST_RULES          stamp-h.in
buildconf         makedist             README.namespaces                 stub.c
buildconf.bat     Makefile.frag        README.PARAMETER_PARSING_API      svnclean.bat
CODING_STANDARDS  Makefile.gcov        README.PHP4-TO-PHP5-THIN-CHANGES  tests
config.guess      Makefile.global      README.REDIST.BINS                TODO
config.sub        makerpm              README.RELEASE_PROCESS            TODO-5.1
configure         missing              README.SELF-CONTAINED-EXTENSIONS  TODO-PHP5
configure.in      mkinstalldirs        README.STREAMS                    TSRM
CREDITS           netware              README.SUBMITTING_PATCH           UPGRADING
ext               NEWS                 README.TESTING                    UPGRADING.INTERNALS
EXTENSIONS        pear                 README.TESTING2                   vcsclean
footer            php5.spec.in         README.UNIX-BUILD-SYSTEM          win32
generated_lists   php.gif              README.WIN32-BUILD-SYSTEM         Zend
genfiles          php.ini-development  run-tests.php
header            php.ini-production   sapi

 

###使用yum 进行安装PHP 的依赖库,这些依赖库都是跟图片和页面相关的
yum -y install gd libxml2-devel libjpeg-devel libpng-devel

###进行编译安装PHP
[root@localhost php-5.3.28]# ./configure --prefix=/usr/local/php5 --with-gd --with-zlib --with-mysql=/usr/local/mysql/ --with-config-file-path=/usr/local/php5 --enable-mbstring --enable-fpm --with-jpeg-dir=/usr/lib

  • --prefix:指定 php 安装目录

  • --with-gd:打开gd库的支持

  • --with-zlib:打开zlib库的支持

  • --with-mysql:让PHP和MySQL关联起来

  • --with-config-file-path:指定PHP配置文件的目录

  • --enable-mbstring:PHP的加密算法

  • --enable-fpm:让PHP以一个程序的身份来启动

  • --with-jpeg-dir:指定图片库使用的位置

###是echo $?判断是否安装成功
echo $?

###进行PHP的编译安装
[root@localhost php-5.3.28]# make && make install

###echo $?判断是否编译成功

###准备一个启动相关进程的配置文件模板
cp /usr/local/php5/etc/php-fpm.conf.default /usr/local/php5/etc/php-fpm.conf

###给PHP命令做一个软连接,让系统可以直接调用PHP的命令
ln -s /usr/local/php5/bin/* /usr/local/bin/
ln -s /usr/local/php5/sbin/* /usr/local/sbin/

###修改PHP启动进程相关的配置文件
vim /usr/local/php5/etc/php-fpm.conf

###vim里面搜索pid
25 ;pid = run/php-fpm.pid

###将前面的分号去掉
25 pid = run/php-fpm.pid

pid:指定pid文件运行的位置

###搜索user,更改140行和141行
140 user = nobody
141 group = nobody

###将nobody 改为nginx
140 user = nginx
141 group = nginx

 

###然后 :wq 保存退出即可
:wq

###启动PHP
[root@localhost php-5.3.28]# php-fpm 

###查看php的进程端口
[root@localhost php-5.3.28]# netstat -anput | grep php-fpm
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      960/php-fpm: master

四、配置Nginx 支持PHP

###修改nginx 配置文件
vim /usr/local/nginx/conf/nginx.conf

###将前面的"#"号去掉并且把nobody改为nginx
2 #user  nobody;

2 user  nginx;

###启用error_log 日志
5 #error_log  logs/error.log;

5 error_log  logs/error.log;

###开启nginx 的日志格式
21     #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
22     #                  '$status $body_bytes_sent "$http_referer" '
23     #                  '"$http_user_agent" "$http_x_forwarded_for"';

21     log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
22                       '$status $body_bytes_sent "$http_referer" '
23                       '"$http_user_agent" "$http_x_forwarded_for"';

###开启gzip,并设置字符编码
33     #gzip  on;
39         #charset koi8-r;

33     gzip  on;
39         charset utf-8;

###开启nginx 的访问日志
25     #access_log  logs/access.log  main;

25     access_log  logs/access.log  main;

配置Nginx 解析PHP,重要部分,location 正则匹配

 65         location ~ \.php$ {
 66             root           html;
 67             fastcgi_pass   127.0.0.1:9000;
 68             fastcgi_index  index.php;
 69             fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
 70             include        fastcgi_params;
 71         }
 
 含义:将所有以 .php 结尾的文件访问请求,都转交给本地的9000端口,文件放在nginx 的html 里

  • ~:区分大小写的正则表达式匹配

  • .php:" " 转义的作用,将正则表达式里面的 " . " 转义成普通字符,正常情况下正则表达式里面的 " . " 代表任意字符

  • fastcgi_pass:将请求转发给本机9000端口,PHP解释器

  • fastcgi_index:如果请求的Fastcgi_index URI是以 / 结束的, 该指令设置的文件会被附加到URI的后面并保存在变量$fastcig_script_name中

  • include:引用别的配置文件

cgi:通用网关接口,用于web 服务器与其他服务器通信交流

传统的cgi 性能比较差,所以就出现了fastcgi

fastcgi:是一个可伸缩的、高速的http服务器和动态脚本语言的通信接口,很多语言都支持fastcgi,是一个C/S架构的

###配置完nginx,保存退出
:wq

###找到nginx 占用的PID
[root@localhost php-5.3.28]# netstat -anput | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      4870/nginx: worker  

###手动杀死nginx
[root@localhost php-5.3.28]# kill 4870

###重新启动nginx
[root@localhost php-5.3.28]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

[root@localhost php-5.3.28]# nginx
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)

###编写一个php的网页页面,查看nginx 是否支持PHP
[root@localhost php-5.3.28]# vim /usr/local/nginx/html/index.php
[root@localhost php-5.3.28]# cat /usr/local/nginx/html/index.php 
<?php
phpinfo();
?>

浏览器访问,http://IP/index.php

###测试能不能通过php 连接MySQL
[root@localhost php-5.3.28]# vim /usr/local/nginx/html/mysql.php
[root@localhost php-5.3.28]# cat /usr/local/nginx/html/mysql.php 
<?php
$link=mysql_connect("localhost",'root','123123');
if($link) echo "<h1>MySQL 连接成功<h1>";
mysql_close();
?>

测试连接,http://IP/mysql.php

建议使用谷歌和火狐浏览器访问

五、部署应用程序

拉入SKYUC_3.4.2_for_linux.zip 包

###源码包是zip 后缀结尾的,需要yum 下载unzip
yum -y install unzip

###使用unzip 解压这个zip 包
unzip SKYUC_3.4.2_for_linux.zip

###解压完成之后进入解压后的目录,查看里面的内容
[root@localhost ~]# cd SKYUC.v3.4.2.SOURCE/
[root@localhost SKYUC.v3.4.2.SOURCE]# ls
Change Log.txt  Readme.txt  ???├??┐┤.txt  URLRewrite.txt  wwwroot


###将wwwroot移动到/usr/local/nginx/html/ 目录下
[root@localhost SKYUC.v3.4.2.SOURCE]# cp -r /root/SKYUC.v3.4.2.SOURCE/wwwroot/ /usr/local/nginx/html/

###查看是否复制到/usr/local/nginx/html 下
[root@localhost SKYUC.v3.4.2.SOURCE]# ls /usr/local/nginx/html/
50x.html  index.html  index.php  mysql.php  wwwroot

 

###将目录的权限递归的方式赋予ngxin
chown -R nginx:nginx /usr/local/nginx/html/

###给MySQL数据库做一个软连接
ln -s /usr/local/mysql/bin/* /usr/local/bin/

###程序需要需要数据库做支持,需要进入数据库配置内容
mysql -uroot -p123123

###创建一个数据库
mysql> create database skydb;
Query OK, 1 row affected (0.00 sec)

###将创建的数据库所有的权限赋予给runsky用户
mysql> grant all on skydb.* to runsky@localhost identified by '123123';
Query OK, 0 rows affected (0.01 sec)

mysql> quit
Bye

###进入nginx配置文件进行编辑
45             index  index.html index.htm;

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

index index.php:指定可以默认搜索index.php首页

 

###手动杀死nginx
[root@localhost SKYUC.v3.4.2.SOURCE]# netstat -anput | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1161/nginx: master  
tcp        0      0 192.168.0.30:80         192.168.0.58:64042      ESTABLISHED 1162/nginx: worker  
tcp        0      0 192.168.0.30:80         192.168.0.58:63448      ESTABLISHED 1162/nginx: worker  
[root@localhost SKYUC.v3.4.2.SOURCE]# kill 1161

###检测nginx 配置文件是否有问题
[root@localhost SKYUC.v3.4.2.SOURCE]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

###手动杀死php-fpm
[root@localhost SKYUC.v3.4.2.SOURCE]# netstat -anput | grep php-fpm
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      960/php-fpm: master 
[root@localhost SKYUC.v3.4.2.SOURCE]# kill 960

###重新启动php
[root@localhost SKYUC.v3.4.2.SOURCE]# php-fpm 

###重新启动nginx
[root@localhost SKYUC.v3.4.2.SOURCE]# nginx

浏览器访问,http://IP/wwwroot/install

1、勾选【我已仔细阅读,并同意上述条款中的所有内容】,点击【下一步:检测系统环境】

2、点击【下一步:系统配置】

3、配置完成,点击【立即安装】

 

http://IP地址/wwwroot/admincp/index.php:进入后台

http://IP地址/wwwroot/index.php:进入前台

OK!!!

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值