LNMP以源码实现环境搭建的过程(详细)
本篇文章给大家带来的内容是关于LNMP以源码的方式记录环境搭建的过程(详细),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
LNMP指的是在Linux下用PHP+MYSQL+NGIX搭建网站的环境。
Nginx是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。Nginx不仅可以作为web服务器,也可以作为负载均衡器。
MySQL是一款开源免费的数据软件,MySQL是一个小型关系型数据库管理系统,其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库.
PHP,是英文超级文本预处理语言Hypertext Preprocessor的缩写。PHP 是一种 HTML 内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本语言,其源码是由C语言写成的,故风格也与C语言类似,被广泛的运用于搭建中小型网站。
下面就记录一下LNMP环境的搭建过程,题主的Linux环境是CentOs虚拟镜像。
【Nginx安装】
目前最新的Nginx稳定版本是1.14.0,网址为http://nginx.org/en/download.html,可直接在Windows下载好再rz上传到Linux下,也可直接用wget方式下载,下面列出的下载方式是后者。
cd /usr/src #一般将源码放在此目录下 wget http://nginx.org/download/nginx-1.14.0.tar.gz #安装
注意:nginx的安装依赖zlib-devel pcre-devel openssl-devel 这几个包,故我们在安装nginx前需先安装这几个包,以免安装过程中出错。
yum -y install zlib-devel pcre-devel openssl-devel
........
一般源码安装分为4个步骤,解压
(tar命令)预编译
(执行源码包下的configure),编译
(make),编译安装
(make install) 。
1、解压
tar -zxvf nginx-1.14.0.tar.gz #这里解释下加压参数,z代表gzip(也就是后面的.gz文件)x代表加压,v表示显示详细信息,-f使用档案文件或设备(必选参数)
2、预编译
我们进行预编译的时候,一般会带上一些参数,已达到我们想要安装的效果,比如启用某个功能,禁用某个功能:
进入源码包目录进行预编译:
cd nginx-1.14.0 ./configure --prefix=/data/webserver/nginx\ # 指定安装目录为/usr/local/nginx --with-openssl=/usr/include/openssl\ # 启用ssl --with-pcre\ # 启用正规表达式 --with-http_stub_status_module # 安装可以查看nginx状态的程序
......
3、编译
./configure指执行当前目录下的configure
文件,预编译完成后我们就可以进行编译和安装:
make #编译
....
4、安装
make install #安装
....
安装完成后我们可以到相应的目录查看安装的文件:
ls /data/webserver/nginx
接着就可以启动nginx了:
/data/webserver/nginx/sbin/nginx #启动nginx /data/webserver/nginx/sbin/nginx -s stop #停止nginx /data/webserver/nginx/sbin/nginx -s relaod #重启nginx
#由图可知nginx已启动
netstat -antlp ¦ grep 80 #nginx占用TCP的80端口由图也可知nginx已启动
【MySQL安装】
至此,nginx已安装启动完毕,接着我们来安装MySQL,类似的,我们依旧需要先安装MySQL的依赖包:
yum -y install wget cmake gcc gcc-c++ ncurses ncurses-devel libaio-devel openssl openssl-devel
.......
接着我们下载源码:
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-boost-8.0.11.tar.gz
.......
创建mysql用户:
groupadd mysql useradd -r -g mysql -s /bin/false mysql
创建安装目录和数据目录:
mkdir -p /usr/local/mysql mkdir -p /data/mysql
解压源码包:
tar -zxf mysql-boost-8.0.11.tar.gz -C /usr/local
编译&安装:
cd /usr/local/mysql-8.0.11 cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc -DMYSQL_TCP_PORT=3306 -DWITH_BOOST=/usr/local/mysql-8.0.11/boost make && make install
安装成功后我们可启动mysql:
cd /usr/local/mysql bin/mysqld_safe --user=mysql
启动成功,连接mysql
bin/mysql -uroot -p
此时要求输入连接密码,比较旧的版本的mysql安装时默认密码为空,但该5.7之后的版本有默认的密码,由于我们不知道,因此关闭mysql服务后(可直接查询进程根据进程号kill掉或/etc/init.d/mysql stop ),改用跳过密码的方式重新开启mysql服务。
bin/mysqld_safe --user=mysql & skip-grant-tables
重新连接
bin/mysql -uroot
连接成功后修改密码
mysql> UPDATE user SET Password=PASSWORD('newpassword') where USER='root'; mysql> FLUSH PRIVILEGES;
此时重启mysql服务,便可以账号密码方式连接mysql。
【PHP安装】
先安装php依赖包,否则在编译安装php7的过程当中会出现各种报错,安装完成后即可进入下一个环节。
安装扩展包并更新系统内核:
yum install epel-release -y yum update
安装php依赖组件(包含Nginx依赖),前面nginx以及mysql安装过的可以忽略,也可以直接复制运行,会跳过已安装的依赖:
yum -y install wget vim pcre pcre-devel openssl openssl-devel libicu-devel gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel ncurses ncurses-devel curl curl-devel krb5-devel libidn libidn-devel openldap openldap-devel nss_ldap jemalloc-devel cmake boost-devel bison automake libevent libevent-devel gd gd-devel libtool* libmcrypt libmcrypt-devel mcrypt mhash libxslt libxslt-devel readline readline-devel gmp gmp-devel libcurl libcurl-devel openjpeg-devel
........
创建用户和组,并下载php安装包解压:
cd /tmp groupadd www useradd -g www www wget http://cn2.php.net/distributions/php-7.2.0.tar.gz tar xvf php-7.2.1.tar.gz cd php-7.2.0
设置变量并开始源码编译:
cp -frp /usr/lib64/libldap* /usr/lib/ ./configure --prefix=/data/webserver/php \ --with-config-file-path=/data/webserver/php/etc \ --enable-fpm \ --with-fpm-user=www \ --with-fpm-group=www \ --enable-mysqlnd \ --with-mysqli=mysqlnd \ --with-pdo-mysql=mysqlnd \ --enable-mysqlnd-compression-support \ --with-iconv-dir \ --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-mbstring \ --enable-intl \ --with-mcrypt \ --with-libmbfl \ --enable-ftp \ --with-gd \ --enable-gd-jis-conv \ --enable-gd-native-ttf \ --with-openssl \ --with-mhash \ --enable-pcntl \ --enable-sockets \ --with-xmlrpc \ --enable-zip \ --enable-soap \ --with-gettext \ --disable-fileinfo \ --enable-opcache \ --with-pear \ --enable-maintainer-zts \ --with-ldap=shared \ --without-gdbm \
开始安装
make -j 4 && make install
完成安装后配置php.ini文件:
cp php.ini-development /data/webserver/php/etc/php.ini cp /data/webserver/php/etc/php-fpm.conf.default /data/webserver/php/etc/php-fpm.conf cp /data/webserver/php/etc/php-fpm.d/www.conf.default /data/webserver/php/etc/php-fpm.d/www.conf
修改 php.ini 相关参数:
vim /data/webserver/php/etc/php.ini expose_php = Off short_open_tag = ON max_execution_time = 300 max_input_time = 300 memory_limit = 128M post_max_size = 32M date.timezone = Asia/Shanghai mbstring.func_overload=2
重启PHP,至此LNMP环境已搭建完成。
相关文章推荐:
Atas ialah kandungan terperinci LNMP以源码实现环境搭建的过程(详细). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Alipay Php ...

JWT adalah standard terbuka berdasarkan JSON, yang digunakan untuk menghantar maklumat secara selamat antara pihak, terutamanya untuk pengesahan identiti dan pertukaran maklumat. 1. JWT terdiri daripada tiga bahagian: header, muatan dan tandatangan. 2. Prinsip kerja JWT termasuk tiga langkah: menjana JWT, mengesahkan JWT dan muatan parsing. 3. Apabila menggunakan JWT untuk pengesahan di PHP, JWT boleh dijana dan disahkan, dan peranan pengguna dan maklumat kebenaran boleh dimasukkan dalam penggunaan lanjutan. 4. Kesilapan umum termasuk kegagalan pengesahan tandatangan, tamat tempoh, dan muatan besar. Kemahiran penyahpepijatan termasuk menggunakan alat debugging dan pembalakan. 5. Pengoptimuman prestasi dan amalan terbaik termasuk menggunakan algoritma tandatangan yang sesuai, menetapkan tempoh kesahihan dengan munasabah,

Artikel membincangkan pengikatan statik lewat (LSB) dalam PHP, yang diperkenalkan dalam Php 5.3, yang membolehkan resolusi runtime kaedah statik memerlukan lebih banyak warisan yang fleksibel. Isu: LSB vs polimorfisme tradisional; Aplikasi Praktikal LSB dan Potensi Perfo

Artikel membincangkan ciri -ciri keselamatan penting dalam rangka kerja untuk melindungi daripada kelemahan, termasuk pengesahan input, pengesahan, dan kemas kini tetap.

Artikel ini membincangkan menambah fungsi khusus kepada kerangka kerja, memberi tumpuan kepada pemahaman seni bina, mengenal pasti titik lanjutan, dan amalan terbaik untuk integrasi dan debugging.

Menghantar data JSON menggunakan perpustakaan Curl PHP dalam pembangunan PHP, sering kali perlu berinteraksi dengan API luaran. Salah satu cara biasa ialah menggunakan perpustakaan curl untuk menghantar post ...

Penerapan prinsip pepejal dalam pembangunan PHP termasuk: 1. Prinsip Tanggungjawab Tunggal (SRP): Setiap kelas bertanggungjawab untuk hanya satu fungsi. 2. Prinsip Terbuka dan Tutup (OCP): Perubahan dicapai melalui lanjutan dan bukannya pengubahsuaian. 3. Prinsip Penggantian Lisch (LSP): Subkelas boleh menggantikan kelas asas tanpa menjejaskan ketepatan program. 4. Prinsip Pengasingan Antara Muka (ISP): Gunakan antara muka halus untuk mengelakkan kebergantungan dan kaedah yang tidak digunakan. 5. Prinsip Inversi Ketergantungan (DIP): Modul peringkat tinggi dan rendah bergantung kepada abstraksi dan dilaksanakan melalui suntikan ketergantungan.

Pengenalan rasmi kepada ciri yang tidak menyekat ReactPhp yang mendalam tafsiran mengenai ciri-ciri yang tidak menyekat ReactPhp telah menimbulkan banyak soalan pemaju: "ReactPhpisnon-blockingbydefault ...
