服务器部署LNMP环境(源码编译安装)后附操作文档
服务器部署lnmp环境(源码编译安装)
作者:当她睡着时
软件版本:CentOS 7,Nginx 1.16,MySQL 5.5.22,php 5.3.28,cmake 2.8.6
- 部署nginx
- 首先安装nginx所需的依赖库:yum -y install pcre-devel zlib-devel openssl-devel
- 同时配置编译环境需要依赖gcc、gcc-c++、make软件包:yum -y install gcc gcc-c++
- 创建nginx用户:useradd -M -s /sbin/nologin nginx
- 查看nginx用户是否创建成功:tail -1 /etc/passwd;tail -1 /etc/group
- 将nginx的包解包到/usr/src下: tar xf tool/nginx-1.16.0.tar.gz -C /usr/src/
- 进入解好的包:cd /usr/src/nginx-1.16
- 配置安装nginx,指定安装路径为/usr/local/nginx,安装用户为nginx,用户组为nginx,同时安装几个需要的模块:./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-file-aio --with-http_mp4_module --with-http_ssl_module && make && make install
- 键入echo $?查看返回值是否为0,验证是否安装成功。
- 为16目录创建软连接,这样可以更好的管理它的版本ln -s /usr/local/nginx1.16/ /usr/local/nginx
- 为nginx启动文件创建软连接,链接到usr/local/sbin下,这样直接执行nginx命令就可以实现nginx的启动、停止、重启:
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
- 键入nginx命令启动nginx服务:nginx,检测语法:nginx -t
- 测试响应头和响应码:curl -I http://192.168.1.40
- Nginx部署成功,nginx文件的路径。
- 部署MySQL数据库
- 首先安装ncurses-devel,其是字符终端下屏幕控制的基本库:yum -y install ncurses-devel
- 将cmake(MySQL5.5版本以后需要借助cmake编译安装)的包解压到/usr/src目录下:
tar xf tool/cmake-2.8.6.tar.gz -C /usr/src
- 进入解包好的cmake,配置编译安装:cd /usr/src/cmake-2.8.6/
执行:./configure && gmake &&gmake install 开始编译安装(该软件编译安装时间较长,请耐心等待)
- 键入echo $?查看返回值是否为0,判断是否安装成功。
- 将MySQL安装包解包到/usr/src/下:tar xf mysql-5.5.22.tar.gz -C /usr/src/
进入/usr/src/mysql-5.5.22/目录
用cmake编译安装(此项编译过程较长,请耐心等待):
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DSYSCONFDIR=/etc && make && make install
- 键入echo $?查看返回值是否为0,判断是否安装成功。
- 定义MySQL中命令的环境变量,即可直接调用MySQL里的命令
echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
- 复制MySQL的配置文件my.cnf到etc下:cp -p /usr/src/mysql-5.5.22/support-files/my-medium.cnf /etc/my.cnf
- 将设置开机的文件放到d下:
cp -p /usr/src/mysql-5.5.22/support-files/mysql.server /etc/init.d/mysqld
- 为其增加一个执行权限: chmod +x /etc/init.d/mysqld
- 将mysqld这个服务添加到chkconfig(centos6中的命令,7里也能用)中管理(相当于systemctl):chkconfig --add mysqld,并设置开机自启动:chkconfig mysqld on。
- 创建mysql用户:useradd -M -s /sbin/nologin mysql
- 更改属组: chown -R mysql:mysql /usr/local/mysql/
- 源码安装与二进制安装需要初始化,yum安装则不需要:/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ --user=mysql
- 启动MySQL: /etc/init.d/mysqld start(此处注意,之前yum安装过mysql或mariadb的话,要用yum -y remove卸载干净,否则源码编译安装的mysql则无法启动)
- 查看一下mysqld服务的端口号:netstat -anptu | grep mysqld
- 给数据库创建一个用户名密码:mysqladmin -uroot password "123123"
- 运用此命令登录mysql数据库:mysql -uroot -p123123
- 部署php
- 首先安装一些依赖包: yum -y install gd libxml2-devel libjpeg-devel libpng-devel
- 将php软件包解包到/usr/src下:tar xf tool/php-5.3.28.tar.gz -C /usr/src/
- 进入解包好的文件中: cd /usr/src/php-5.3.28/
- 配置安装php-5.3.28(指定安装路径;使用gd库,使用缩略图;使用压缩;指定链接mysql的位置;指定配置文件路径;php加密;让php以php-fpm运行;支持图片的库在哪):
./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 && make && make install
- 键入echo $?查看返回值是否为0,验证是否安装成功。
- 复制php的模板文件:
cp -p /usr/src/php-5.3.28/php.ini-development /usr/local/php5/php.ini
- 创建php命令的软连接:ln -s /usr/local/php5/bin/* /usr/local/bin/ ;ln -s /usr/local/php5/sbin/* /usr/local/sbin/
- 进入php5目录下的etc文件:cd /usr/local/php5/etc
- 复制php-fpm.conf.default文件为php-fpm.conf
- vim编辑php-fpm.conf文件:vim php-fpm.conf,配置如下:
- 启动php服务:php-fpm
- 查看进程号:netstat -anptu|grep php
- 查看产生进程:ps -aux | grep php-fpm
- 整合LNMP
- 配置nginx配置文件:vim /usr/local/nginx/conf/nginx.conf
- 配置内容如上图
- 检测nginx语法:nginx -t
- 重启nginx服务:nginx -s reload
- 访问网页:168.1.40/index.php
- 创建php文件,测试能否链接数据库:vim /usr/local/nginx/html/test.php
- 将以下内容写入文件
<?php
$link=mysql_connect('localhost','root','123123');
if($link) echo "<h1>successful</h1>";
mysql_close();
?>
- 重启nginx服务:nginx -s reload
- 访问168.1.40/test.php,返回successful则链接后端数据库成功。
- lnmp优化
- 简化配置,配置版本号的隐藏,网页压缩,nginx服务的最大连接数
- 编辑nginx配置文件,将下面的模板复制进去:vim /usr/local/nginx/conf/nginx.conf
user nginx nginx;
worker_processes 2;
error_log logs/error.log;
pid logs/nginx.pid;
events {
use epoll;
worker_connections 10240;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain text/javascript application/x-javascript text/css text/xml application/xml application/xml+rss;
keepalive_timeout 65;
server_tokens off;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
- 使用curl -I验证一下是否实现了nginx隐藏版本号:curl -I http://192.168.1.40
- 版本号实现了隐藏
- Nginx的版本号隐藏还可以使用修改源码包,重新编译的方式,方法如下,看图说话,不详细说明了。
- 点赞
- 收藏
- 关注作者
评论(0)