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!!!