LNMP 环境搭建
来源:SegmentFault
时间:2023-01-29 14:18:50 454浏览 收藏
有志者,事竟成!如果你在学习数据库,那么本文《LNMP 环境搭建》,就很适合你!文章讲解的知识点主要包括MySQL、nginx、PHP、LNMP,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~
A. 软件环境
Linux ubuntu 16.04 LTS,下载地址
Nginx nginx-1.12.0,下载地址
PHP php-7.1.4,下载地址
MySQL mysql-5.7.18,下载地址
在运行所有命令之前,请执行
apt-get update
由于采用源码包编译安装,所以需要一个
c编译器,如果提示为找到
c编译器,那么请执行
sudo apt-get install gcc命令安装
c compiler。但是你可能会碰到仍然找不到
c compiler cc的情况,请执行:
apt-get install build-essential
编译安装所需要的软件包,需要
make依赖:
sudo apt-get install make
nginx依赖的环境包:
Pcre pcre-8.40,下载地址(有可能出现安装了也仍然提示未找到,
apt-get install libpcre3-dev,详情请看)
Pcre2 pcre2-10.23,下载地址
zLib zlib-1.2.11,下载地址
php依赖的环境包:
libssl-dev,安装方法:
apt-get install libssl-dev
libxml2-dev,安装方法:
apt-get install libxml2-dev
libcurl4-gnutls-dev,安装方法:
sudo apt-get install libcurl4-gnutls-dev
libzip-dev安装方法:
apt install libzip-dev
apt install libonig5,如果不行,请手动搜索:
apt search oniguruma逐个尝试
php
gd库需要的依赖:
-
libpng-dev
(apt-get install libpng-dev
) -
libjpeg-dev
(apt-get install libjpeg-dev
) -
libxpm-dev
(apt-get install libxpm-dev
) -
freetype-官网下载,无需如此麻烦
apt-get install libfreetype6-dev
另外,如果缺少什么
.h这类的头文件,请根据错误提示,例如
apt-get install libfreetype*或
*freetype*这样安装解决!
系统升级到 ubuntu 17.07 php 升级到 php-7.1.8 这个时候会报错:libcurl 问题 find /usr -iname '*curl*' // 创建一个软连接(系统升级导致 curl 默认路径改了,php 找不到了.....) ln -s /usr/include/x86-linux-...../curl /usr/include/curl
php 编译安装扩展 phpize 命令依赖的依赖包
m4,安装方法:
apt-get install m4
autoconf,安装方法:
apt-get install autoconf
mysql依赖的包:
libaio1,安装方法:
apt-get install libaio1
如果出现
libpcre.so.1找不到的错误,请手动链接:
sudo ln -s /usr/local/lib/libpcre.so.1 /lib/libpcre.so.1
B. 安装Linux系统
C. 安装环境所需的依赖包
D. 安装 Nginx
sudo tar -zxvf nginx-1.12.0.tar.gz cd nginx-1.12.0 sudo ./configure # 这个目录要自己事先创建好 --prefix=/usr/local/WebEnvironment/Nginx/Web-1.12.0/Nginx-1.12.0 # 支持 tcp/udp 负载均衡 --with-stream sudo make sudo make install
设置 nginx.conf 文件
// 修改运行用户 user root; // 修改日志文件路径 error_log logs/error.log; http { // 加大上传文件大小限制 client_max_body_size 2048M; // 加大 nginx 等待 php cgi响应的时间 fastcgi_read_timeout 3600s; // 新增自定义配置文件路径(免得在默认配置文件中新增数据) include 'vhost/*.conf'; }
然后在
vhost目录下,创建
www.conf配置文件:
server { server_name test.com; listen 80; index index.html; root /myself/web/test; location / { autoindex on; } }
E. 测试 Nginx
cd /usr/local/WebEnvironment/Nginx/Web-1.12.0/Nginx-1.12.0/conf sudo gedit nginx.conf # 修改配置文件,添加 域名(具体看 windows 下 nginx.conf 配置文件) sudo gedit /etc/hosts # 修改 hosts 文件,添加相应域名 cd ../sbin sudo ./nginx # 即可!不要 sudo start ./nginx ,他会提示报错的。
浏览器打开域名查看结果。
F. 安装PHP-7.1.4
tar -zxvf php-7.1.4.tar.gz cd php-7.1.4 sudo ./configure // php 主体文件所在目录 --prefix=/usr/local/WebEnv/php-7.1.4 // 默认配置文件在 ./lib 目录下 // 注意这里是目录!! // 请不要使用这个编译选项,php 安装完成后,请使用 php --ini // 查看配置文件路径,然后修改。即推荐使用默认路径 // --with-config-file-path=/usr/local/webEnv/php-7.1.4 --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-openssl --with-tsrm-pthreads --with-curl --with=swoole --with-zlib --with-webp --with-jpeg --with-xpm --with-zip --with-xsl --with-freetype --with-mysqli // 注意以下四个选项,需要提前安装相关依赖! // 最后 freetype 这个选项,请使用 find / -iname 'freetype*' 来查找具体位置 // 以下注释掉的 php 编译选项不再需要,php 会自动查找 // --with-png-dir=/usr/lib // --with-jpeg-dir=/usr/lib // --with-xmp-dir=/usr/lib // --with-freetype-dir=/usr/local/include/freetype2 --enable-gd --enable-calendar --enable-mbstring --enable-ftp --enable-pcntl --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-shmop --enable-sockets --enable-mysqlnd --enable-bcmath --enable-maintainer-zts --enable-fpm sudo make sudo make install 简化版命令(可直接运行): ./configure --prefix=/myself/environment/php --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-openssl --with-tsrm-pthreads --with-curl --with=swoole --with-zlib --with-webp --with-jpeg --with-xpm --with-zip --with-xsl --with-freetype --with-mysqli --enable-gd --enable-calendar --enable-mbstring --enable-ftp --enable-pcntl --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-shmop--enable-sockets --enable-mysqlnd --enable-bcmath --enable-maintainer-zts --enable-fpm && make && make install
修改 php.ini
需要复制
php压缩包解压后的
php.ini-production到
/usr/local/WebEnvironment/PHP-7.2.0/lib/php.ini
// 增加上传文件大小 post_max_size = 2048M // 单个上传文件的最大大小 upload_max_filesize = 10M // 单次最大上传文件数量 max_file_uploads = 200 // 设置扩展路径 extension_dir = "/usr/local/WebEnvironment/PHP-7.2.0/extensions" // 添加自定义扩展 extension = redis.so // php 事件扩展 extension = ev.so extension = gd.so // 设置时区 date.timezone = PRC // 设置 php 最大占用内存 memory_limit = 512M // 打开错误提示 display_errors = On
基本 ok。
G. 安装 MySQL-5.7.18
以下方式非源码编译安装,无法指定安装目录!如果需要指定安装目录,请查看 mysql-8.x 源码编译安装
tar -zxvf mysql-5.7.18.tar.gz mv mysql-5.7.18 /usr/local/mysql cd /usr/local // 它本身没有 data 目录,需要自行创建(更高版本已经有 data 目录,无需重复创建) sudo mkdir -m 755 data cd bin // 初始化 Data 目录内容 sudo ./mysqld --initialize-insecure // 启动,必须以 root 身份启动 sudo ./mysqld --user=root ----------- 另行启动一个 terminal --------------------------------- // 设置密码 sudo ./mysqladmin -u root password 123456 // 登录测试 mysql -u root -p // 配置文件(自己创建 my.cnf,默认文件名,配置文件路径:etc 目录下,可以是 /etc,也可以是 /usr/local/mysql/etc) sudo mkdir - m 755 /usr/local/mysql/etc // 编辑配置文件 sudo gedit /usr/local/mysql/etc/my.cnf // 配置文件内容(设置编码) [mysql] default-character-set=utf8 [mysqld] character-set-server=utf8
H. nginx 添加虚拟主机
nginx.conf中设置的
include vhost/*路径
cd conf/vhost sudo vim vhost.conf // 添加如下内容,保存 server { server_name test.com; root /var/Website/Test; index index.php index.html; charset utf-8; location / { // 这边配置成单一入口访问(例如你用的PHP框架是 Laravel 就要求要单一路口) // 这边的含义是: // $uri 如果是一个文件,直接返回 // $uri/ 如果是一个目录,直接返回 // 最后一个参数表示重定向! // 否则返回 /index.php?$query_string; try_files $uri $uri/ /index.php?$query_string; } location ~ \.php(.*) { // php 处理程序监听的 tcp 端口 fastcgi_pass 127.0.0.1:9000; // 确定脚本名称 # fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; // 传递请求参数 # fastcgi_param QUERY_STRING $query_string; // 必须要包含 fastcgi_params 预定义参数 include fastcgi_params; } } server { server_name pma.com; root /var/Website/TestOther; index index.html; charset utf-8; location / { } # 静态资源处理 # 例如:http://test.com/test.jpg # 他会从 /data 目录下获取,而不是从 /var/Website/TestOther 目录下获取 # 注意匹配顺序,正则优先,然后 前缀 location ~ \.(gif|jpg|png)$ { root /data; } }
I. php-fpm 解释
参考文章
cgi、fastcgi、php-cgi、php-fpm 之间的联系和区别
配置文件路径:
// php-fpm 配置文件 etc/php-fpm.conf.default // 进程池配置文件路径 etc/php-fpm.d/www.conf.default // php.ini 配置文件(要从解压出来的压缩包根目录下拷贝重命名) etc/php.ini
注意了,
php-fpm.conf配置文件是
php-fpm程序的配置文件,
www.conf是
php-fpm.conf配置文件的一部分(扩展),只是
php将其独立出来了。他们是一个整体,这边修改的是
www.conf:
user = root # 这边可以新创建用户,也可以直接使用 root 用户(省事,我就 root 用户了) group = root # 同上 listen = 127.0.0.1:9000 # 只能有一个 listen(我被坑的最惨的部分!以为可以 listen 多个!实际上不能!)
J. 设置软连接
sudo ln -s /path/to/php/sbin/php-fpm /bin/php-fpm sudo ln -s /path/to/nginx/sbin/nginx /bin/nginx sudo ln -s /path/to/mysql/bin/mysqld /bin/mysqld
K. 启动测试
Nginx
// windows 下启动 start nginx // linux 下启动 sudo nginx # 启动 sudo nginx -s reload # 重新启动(重载配置文件) sudo nginx -s stop # 快速停止 sudo nignx -s quite # 优雅停止 sudo nginx -s reopen # 重新打开日志文件(要在 nginx 启动的状态下执行才有效)
PHP:
// 指定配置文件启动 // -c 指定 php 运行时配置文件 // -y 指定 php-fpm 运行时配置文件 // -R 可选,运行 root 身份运行 php-fpm sudo php-fpm -c php.ini -y php-fpm.conf -R // 通常的启动方式应该如下: sudo php-fpm -R
mysql
sudo mysqld --user=root
今天关于《LNMP 环境搭建》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!
声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
-
499 收藏
-
244 收藏
-
235 收藏
-
157 收藏
-
101 收藏
最新阅读
更多>
-
397 收藏
-
489 收藏
-
209 收藏
-
497 收藏
-
335 收藏
-
467 收藏
课程推荐
更多>
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 507次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 497次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 484次学习
评论列表
-
- 热情的柠檬
- 很有用,一直没懂这个问题,但其实工作中常常有遇到...不过今天到这,看完之后很有帮助,总算是懂了,感谢老哥分享博文!
- 2023-04-15 20:44:02
-
- 时尚的春天
- 这篇博文真及时,很详细,赞 👍👍,已加入收藏夹了,关注老哥了!希望老哥能多写数据库相关的文章。
- 2023-04-08 18:09:12
-
- 悲凉的胡萝卜
- 细节满满,已收藏,感谢老哥的这篇博文,我会继续支持!
- 2023-02-20 11:34:31
-
- 谦让的板凳
- 很详细,码住,感谢博主的这篇技术文章,我会继续支持!
- 2023-02-14 09:28:29
-
- 悦耳的蜜粉
- 这篇文章真及时,好细啊,很棒,已加入收藏夹了,关注大佬了!希望大佬能多写数据库相关的文章。
- 2023-02-11 12:02:51
-
- 傻傻的玫瑰
- 赞 👍👍,一直没懂这个问题,但其实工作中常常有遇到...不过今天到这,看完之后很有帮助,总算是懂了,感谢师傅分享技术贴!
- 2023-02-03 09:14:34