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) 。
- 解压
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
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。
关于mysql安装时的一些常见错误,可参考https://typecodes.com/web/solvemysqlcompileerror.html或http://www.voidcn.com/article/p-avqyeoec-sz.html,在源码编译安装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环境已搭建完成。