LNMP环境搭建网站

news/2024/5/9 7:25:55/文章来源:https://blog.csdn.net/weixin_33953249/article/details/93899987

系统:Centos7.4

一台服务器安装nginx、php、mysql

原理不是很懂,但实测如下两种环境下都能成功,这里做下记录:

1、一个干净的系统,从0开始完成所有步骤,完成LNMP搭建

2、已经装了mysql,之后再装nginx、php,完成LNMP搭建(安装php编译时要注意指定mysql的安装路径等信息)

注意:安装前一定检查是否装有mariadb数据库(系统安装时选择某项安装会集成安装上的),若有请卸载,不然后面初始化mysql时会报错,百度了很久都没找原因,都说是权限问题,后来在重复搞整时看到有关于mariabd的打印,猜测是这个原因,卸载mariadb问题解决。

Can't create/write to file '/data/mysql/xx.pid' (Errcode: 13)

步骤如下:

一、源码ginx安装

1、安装nginx需要的环境依赖库、工具等

yum -y install pcre pcre-devel openssl-devel openssh  wget 

2、下载nginx安装包至/usr/local/src下

wget -c -P /usr/local/src http://mirrors.yangxingzhen.com/nginx/nginx-1.13.4.tar.gz

3、安装编译器

yum -y install gcc gcc-c++

4、编译安装nginx

cd /usr/local/src

tar zxf nginx-1.13.4.tar.gz

cd /src/nginx-1.13.4

#编译前可以根据企业实际需要选择是否隐藏nginx版本等信息

sed -i -e 's/1.13.4/123/g' -e 's/nginx\//abc/g' -e 's/"NGINX"/"abc"/g'  ./src/core/nginx.h

#预编译(根据实际需求添加相应模块)

./configure --user=www --group=www --prefix=/usr/local/nginx/ --with-http_stub_status_module --with-http_ssl_module

#编译、安装(-j8表示同时用8核CPU进行编译)

make -j8 && make install

5、创建nginx启动用户,默认用户为www,不授予登陆权限

useradd -s /sbin/nologin www

6、启动nginx并测试是否能正常访问

#检测配置文件是否正确

/usr/local/nginx/sbin/nginx -t

#启动nginx

/usr/local/nginx/sbin/nginx

7、根据具体需求对nginx.conf配置文件进行修改调整

cp /usr/local/nginx/conf/nginx.conf   /usr/local/nginx/conf/nginx.conf.bak

#为方便查看配置文件,可将多余的注释和空行清空

grep -vE "^$|#"  nginx.conf.default >nginx.conf

#修改配置

vim  /usr/local/nginx/conf/nginx.conf

worker_processes  1;
events {worker_connections  1024;
}
http {include       mime.types;default_type  application/octet-stream;sendfile        on;keepalive_timeout  65;include conf.d/*.conf;    # 开启虚拟主机,将会去此目录下找配置文件,在找不到时才会往下进行server {listen       80;server_name  abc.c.com;location / {root   html;index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}
}

 #创建虚拟主机配置文件目录并创建一个配置,如nginx.conf配置所示,conf.d文件夹与nginx.conf配置文件处于同级。

mkdir -p /usr/local/nginx/conf/conf.d

vim /usr/local/nginx/conf/conf.d/abc1.conf    #应该根据具体需求进行配置

server{listen 80;server_name  www.abc.com;root /usr/local/nginx/html/abc/public; # 该项要修改为你准备存放相关网页的路径location / {index  index.php index.html index.htm;#如果请求既不是一个文件,也不是一个目录,则执行一下重写规则if (!-e $request_filename){#地址作为将参数rewrite到index.php上。rewrite ^/(.*)$ /index.php?s=$1;#若是子目录则使用下面这句,将subdir改成目录名称即可。#rewrite ^/subdir/(.*)$ /subdir/index.php?s=$1;}}location /api/ {index  index.php index.html index.htm;#如果请求既不是一个文件,也不是一个目录,则执行一下重写规则if (!-e $request_filename){#地址作为将参数rewrite到index.php上。#rewrite ^/(.*)$ /index.php?s=$1;#若是子目录则使用下面这句,将subdir改成目录名称即可。rewrite ^/api/(.*)$ /api/index.php?s=$1;}}location ~* ^\/upload\/.+\.(html|php)$ {return 404;}location ~* ^\/plugins\/.+\.(html|php)$ {return 404;}
▽location ~* ^\/themes\/.+\.(html|php)$ {return 404;}#proxy the php scripts to php-fpmlocation ~ \.php {include fastcgi_params;##pathinfo支持start#定义变量 $path_info ,用于存放pathinfo信息set $path_info "";#定义变量 $real_script_name,用于存放真实地址set $real_script_name $fastcgi_script_name;#如果地址与引号内的正则表达式匹配if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {#将文件地址赋值给变量 $real_script_nameset $real_script_name $1;#将文件地址后的参数赋值给变量 $path_infoset $path_info $2;}#配置fastcgi的一些参数fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;fastcgi_param SCRIPT_NAME $real_script_name;fastcgi_param PATH_INFO $path_info;###pathinfo支持endfastcgi_intercept_errors on;fastcgi_pass   127.0.0.1:9000;# fastcgi_pass 如果是 sock形式,可能是下面的配置# fastcgi_pass unix:/tmp/php-cgi.sock}}

#平滑重启nginx,访问域名查看是否有结果(如果是静态网站,现在能正常访问了,但这里是动态网站,需要php解释器,还需要连接数据库,访问肯定是报错一堆)

/usr/local/nginx/sbin/nginx -s reload

二、mysql数据库安装

1、安装依赖环境

yum -y install cmake ncurses-devel perl  autoconf  

2、下载安装包

cd /usr/loca/src

wget  http://mirrors.163.com/mysql/Downloads/MySQL-5.6/mysql-5.6.39.tar.gz

3、 编译安装

tar zxf mysql-5.6.39.tar.gz

cd mysql-5.6.39

#预编译(根据经验,感觉是将以下配置写入my.cnf默认配置中,所以只要你不修改my.cnf配置文件,以下配置就属于默认配置,若修改了my.cnf配置文件就以修改后为准)

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/mysql \
-DSYSCONFDIR=/etc \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306 \
-DWGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_BLACGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EXDDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DWITH_BIG_DEBUG=0

将知道的进行解释(其它的以后查到了再进行更新):

-DCMAKE_INSTALL_PREFIX=  #指定安装目录
-DMYSQL_DATADIR=  #指定数据库的存放目录即数据目录
-DSYSCONFDIR=  #指定默认my.cnf配置文件路径,如果遇到一个服务器装多个mysql时,可以对其进行修改,实测有效。
-DMYSQL_UNIX_ADDR=  #sock命令以及存放路径指定,一台服务器多个mysql时,不要重名
-DMYSQL_USER=  #指定mysql启动使用的用户
-DMYSQL_TCP_PORT=  #指定数据库端口
-DWITH_EXDDEFAULT_CHARSET=  #设置默认数据库字符集
----------------------------------------------------------------------------
#编译、安装
make -j8 && make install

4、创建mysql启动用户
useradd -s /sbin/nologin mysql

 5、mysql安装目录授权(编译安装时会自动创建目录)、数据目录创建(数据库初始化时要用,所以必须提前创建)和授权等

chown -R mysql:mysql /usr/local/mysql

mkdir -p /data/mysql

chown -R mysql:mysql /data/mysql

6、修改my.cnf配置文件(很初始的配置,根据实际需求进行调整)

 

vim /etc/my.cnf

[client]
default-character-set = utf8
[mysql]
default-character-set = utf8
[mysqld]
datadir = /data/mysql
socket = /tmp/mysql.sock
user = mysql
log-error = /var/log/mysqld.log
character_set_server = utf8

7、初始化数据库(会在/data/mysql下根据my.cnf配置初始创建一些数据文件和库文件,如果是新装数据库,可重复初始化,每次初始化前将原来生成的文件删除干净。已投入生产的不要此操作.)

/usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/data/mysql --basedir=/usr/local/mysql

8、启动数据库

#软链接让mysql的命令全局直接使用

ln -s /usr/local/mysql/bin/* /usr/bin

#数据库系统启动制作

cp /usr/local/mysql/support-files/mysql.server   /etc/init.d/mysqld  #若一台服务器多个mysql可以重新命名如根据数据库版本来区分,mysqld55或mysqld56

chmod o+x /etc/init.d/mysqld   

/etc/init.d/mysqld start或service mysqld start

#设置开机启动

chkconfig --add mysqld

hkconfig mysqld on

chkconfig --list mysqld

 三、PHP(FastCGI)安装

1、安装php函数依赖库等

yum install -y zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel

2、安装libmcrypt库、mhash加密扩展库、mcrypt加密扩展库(根据实际需要进行安装)

#提前安装epel.repo扩展源,不然无法进行安装(根据实际系统版本指定epel-6或epel-7)

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

yum -y install libmcrypt-devel mhash mcrypt

 

3、源码安装libiconv(系统环境不同编译时可能会出现部分系统报错,实测有些系统报错,有些没有报错)

cd /usr/local/src

wget -c http://mirrors.yangxingzhen.com/libiconv/libiconv-1.14.tar.gz

tar zxf libiconv-1.14.tar.gz

cd libiconv-1.14

./configure --prefix=/usr/local/libiconv

#编译时若出现报错,可按此操作解除。

make -j8 && make install

 

解决办法:

find . -name "stdio.in.h"

./srclib/stdio.in.h

vim ./srclib/stdio.in.h

大概在698行位置,删除stdio.in.h文件中_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");行即可

 #重新进行编译安装就过了

make -j8 && make install

4、源码安装php

cd /usr/local/src

wget -c http://mirrors.sohu.com/php/php-5.6.29.tar.gz

tar zxf php-5.6.29.tar.gz

cd php-5.6.29

ln -s /usr/local/mysql/lib/libmysqlclient.so.18  /usr/lib64

#预编译(参数中有关于mysql的信息,比如指定mysql的安装路径,一定要正确配置

./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-pdo-mysql=/usr/local/mysql \
--enable-opcache \
--with-gettext \
--with-iconv-dir=/usr/local/libiconv \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir \
--enable-xml \
--disable-rpath \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--with-curl \
--enable-mbregex \
--enable-fpm \
--enable-mbstring \
--with-mcrypt \
--with-gd \
--enable-gd-native-ttf \
--with-openssl \
--with-mhash \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-soap \
--enable-short-tags \
--enable-static \
--with-fpm-user=www \
--with-fpm-group=www \
--enable-ftp \
--enable-zip

#编译安装

make -j8&&make install

5、配置并启动php

先从源码包拷贝php.ini文件到etc下

cp /usr/local/src/php-5.6.29/php.ini-development  /usr/local/php/etc/php.ini

cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf

#启动php

/usr/local/php/sbin/php-fpm

四、web站点配置

1、将web代码放置nginx配置文件指定目录下,并修改权限

通常情况下需要将代码文件所属用户指定为nginx启动用户(www),不然会出现无访问访问权限导致报错

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

2、创建库、数据库访问用户,并导入后端数据库

mysql -uroot -p

create database abc character set=utf8;

grant all on abc.* to userabc@'localhost' identified by '123456';

source  abc.sql

flush privileges;

3、将nginx、php-fpm重启,并访问站点。

 

转载于:https://www.cnblogs.com/ccit/p/10078288.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_762044.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

新零售,让拥有2000平米的现代家居体验馆也建造自己的线上网站

湖南华居建材有限公司创立于2009年,总部位于长沙市芙蓉区万家丽建材广场, 是一家一站式现代家居体验馆,1500㎡超大体验空间,舒适的环境、一流的产品、专业的服务,让您享受一站式采购的乐趣!同时在长沙喜盈门…

02.网站点击流数据分析项目_模块开发_数据采集

3 模块开发——数据采集 3.1 需求 数据采集的需求广义上来说分为两大部分。 1)是在页面采集用户的访问行为,具体开发工作: 1、开发页面埋点js,采集用户访问行为 2、后台接受页面js请求记录日志 此部分工作也可以归属为“数据源”&…

分享一些好用的网站

前言 这两年收藏了不少网站,特地整理一下,把一些大家都可能用得上的分享出来,希望能对你有用。 考虑到有一些网站大多数人都知道,所以我就不列出来了。 我把这些网站分为了几大类: 工具类素材类社区类工具类 1、start.…

[导入][转]利用压缩网页来提升网站浏览速度

本文主要介绍如何通过对页面进行压缩从而节省网站的带宽以及提升用户的访问速度。网站的访问速度是由多个因素所共同决定的,这些因素例如应用程序的响应速度、网络带宽、服务器性能、与客户端之间的网络传输速度等等。其中最重要的一个因素是应用程序本身的响应速度…

测试一个网站的最大并发量并发数并发用户

这个其实没有固定的算法,必须根据压测的目标特点进行估算。举例子来说明:是一天的访问量,那么我们需要知道哪几个时间段访问人数最多。例如有10小时访问密集区,我们可以估算每小时1000用户,峰值*2或者3,也就…

selenium实战 登录后前三项菜单作业分享(白月黑羽网站selenium自动化学习)

作业地址:http://www.python3.vip/tut/auto/selenium/02/#%E8%A1%A5%E5%85%85%E7%BB%83%E4%B9%A0 from selenium import webdriver# 创建 Webwd 实例对象,指明使用chrome浏览器驱动 wd webdriver.Chrome(rD:\tools-work\chromedriver_win32\chromedriv…

selenium实战 登录后菜单作业分享(白月黑羽网站selenium自动化学习)

我的作业提示:请输入用户名和请输入密码 都成功,但是登录失败3个全部错误,我找不到原因,如果有好的办法请留言,谢谢大家。 from selenium import webdriver# 创建 Webwd 实例对象,指明使用chrome浏览器驱动…

selenium实战 登录后菜单添加,查看新增数据是不是第一条数据 (UI-0103)分享(白月黑羽网站selenium自动化学习)

from selenium import webdriver import time # 创建 Webwd 实例对象,指明使用chrome浏览器驱动 wd webdriver.Chrome(rD:\tools-work\chromedriver_win32\chromedriver.exe)wd.implicitly_wait(5)#等待时间 一定要写 # Webwd 实例对象的get方法 可以让浏览器打开…

selenium实战 登录后菜单添加,查看新增数据是不是第一条数据 (UI-0105)分享(白月黑羽网站selenium自动化学习)

from selenium import webdriver import time # 创建 Webwd 实例对象,指明使用chrome浏览器驱动 wd webdriver.Chrome(rD:\tools-work\chromedriver_win32\chromedriver.exe)wd.implicitly_wait(5)#等待时间 一定要写 # Webwd 实例对象的get方法 可以让浏览器打开…

selenium实战 登录后跳转到外部网站,再从外部网站跳转回来 (UI-0106)分享(白月黑羽网站selenium自动化学习)

from selenium import webdriver import time # 创建 Webwd 实例对象,指明使用chrome浏览器驱动 wd webdriver.Chrome(rD:\tools-work\chromedriver_win32\chromedriver.exe)wd.implicitly_wait(5)#等待时间 一定要写 # 登录 wd.get(http://127.0.0.1:8047/mgr/si…

selenium实战 登录后跳转到外部网站,添加多个数据 (UI-0107)分享(白月黑羽网站selenium自动化学习)

from selenium import webdriver from selenium.webdriver.support.ui import Select import time # 创建 Webwd 实例对象,指明使用chrome浏览器驱动 wd webdriver.Chrome(rD:\tools-work\chromedriver_win32\chromedriver.exe)wd.implicitly_wait(5)#等待时间 一…

selenium实战 登录后跳转到外部网站,删除所有订单,添加多个数据 (UI-0108)分享(白月黑羽网站selenium自动化学习)

from selenium import webdriver from selenium.webdriver.support.ui import Select import time # 创建 Webwd 实例对象,指明使用chrome浏览器驱动 wd webdriver.Chrome(rD:\tools-work\chromedriver_win32\chromedriver.exe)wd.implicitly_wait(5)#等待时间 一…

selenium实战 登录后菜单添加,对比菜单前三项是不是相应内容 (UI-0101)分享(白月黑羽网站selenium自动化学习)

from selenium import webdriver import time # 创建 WebDriver 实例对象,指明使用chrome浏览器驱动 wd webdriver.Chrome(rD:\tools-work\chromedriver_win32\chromedriver.exe)wd.implicitly_wait(5)#等待时间 一定要写 # WebDriver 实例对象的get方法 可以让浏览…

利用pagespeed插件优化网站css层叠样式文件

"不务正业"的google最近发布了pagespeed插件和apache 2专有的mod_pagespeed页面优化模块;pagespeed插件目前仅有firefox版的,该插件要求预安装有Firebug页面debugger插件,你可以通过Tools->Add-ons->Get Add-ons菜单添加Fire…

网站建设技术方案_即墨【网站建设方案】公司

即墨【网站建设方案】公司,星环信息技术,我们期待与大家携手并进,共同创造更美好的未来。2005年11月1日发布的《成都市推进中央一般公共资源公共服务均等化工作方案》为规范各地及县、市级公共资源平台使用情况,落实自治区实施细则…

地址栏与搜索内容不符的乱码_一文解读影响网站在百度搜索排名的因素有哪些?...

网站在搜索引擎的排名直接决定了网站的流量,在国内,百度搜索引擎的流量占有率80%。所以对于优化人员来讲,seo优化主要是针对百度搜索引擎的优化。在百度往网站排名突然下降的情况下,你需要考虑的是你做了什么还是什么都没做了。今…

40款不容错过的个人摄影设计作品集网站

日期:2012-11-7 来源:GBin1.com 如果你不仅仅是网站设计师同时也是摄影师爱好者的话,那么拍摄高水准的摄影作品绝对可以为你的工作带来更大的帮助!你可以将这些照片处理后放到你设计的网站上,绝对是件了不起的作品。当…

无法访问网站故障案例分析报告 科来

某单位部分网段无法访问网站故障案例分析报告故障描述故障环境某单位客户端要访问服务器端,会先经过核心交换机,然后由核心交换机传到多业务交换机,多业务交换机与防火墙相连,经过防火墙后再经过加速器和加密机传,通过…

某网站的编程挑战题目 Java版本的 strToInt

为什么80%的码农都做不了架构师?>>> 题目详情 输入一个表示整数的字符串,把该字符串转换成整数并输出,例如输入字符串"345",则输出整数345。 请完成函数StrToInt,实现字符串转换成整数的功能。…

使用 ApacheBench 做网站压力测试

2019独角兽企业重金招聘Python工程师标准>>> ab的全称是ApacheBench,是 Apache 附带的一个小工具,专门用于 HTTP Server 的benchmark testing,可以同时模拟多个并发请求。前段时间看到公司的开发人员也在用它作一些测试&#xff0…