LAMP/LNMP环境搭建

本文针对新手初次搭建LAMP/LNMP环境,lz也是历时2天才搭建完成,虽然有些内容仍是不太明白,可是暂且记录下来流程,之后慢慢消化。php

1、安装linuxhtml

先下载Virtual Box做为虚拟机,网站https://www.virtualbox.org/ ,以下图:mysql

 

而后下载centos7,网址https://www.centos.org/download/,以下图:linux

打开Virtual Box,新建-输入名称,以下图:nginx

而后一直下一步,文件位置自行选择,不建议放在C盘c++

建立完成以后点击启动,这时会提示选择启动盘,选择方才下载的镜像git

启动以后开始安装github

选择语言以后,点击安装位置,选择刚才划分的磁盘,点击完成sql

开始安装,会看到下面页面,设置ROOT密码,建立新帐户shell

 

安装完成后重启,登陆用户名、密码,注意linux输入密码时不会显示,不要觉得没输入进去exit

lz用的是root帐户登陆的,你也能够登陆刚才在安装时建立的用户,可是一些操做须要在命令以前加上 sudo。下面是一些命令和操做

sudo su #切换到root帐户

exit #退出

clear #清空界面

 

配置网络环境(lz登陆的是root帐户,有些命令提示没权限时可能须要在前面加上sudo)

1.在VirtualBox中找到设置,将网络改成“桥接网络”

而后输入命令查看网络是否通畅

ping www.baidu.com #查看网络状态,这里能够ping下百度

#网络不通会提示:Name or service not know等错误,这是须要修改一下网络配置,输入下面一行命令
vi /etc/sysconfig/network-scripts/ifcfg-      #而后按tab键会出现你本机网卡名多是eth0或者enp0s3,而后在-后面加上这个名字便可

vi /etc/sysconfig/network-scripts/ifcfg-enp0s3 #lz的是enp0s3

 

2.设置网卡配置文件

输入后会看到如下,信息内容可能不同,不过在最主要的仍是那几个。

 按 “I” 键进行编辑(此时命令行底部变成INSERT),编辑完成之后按“ESC”键,完后输入  “:w”(保存)  “:q”(退出),或者直接快捷键shift+zz(关闭caps Lock),或者 “:q!”不保存直接退出  。注意linux命令只支持小写!

ONBOOT=yes   #修改为yes

BOOTPROTO =static #采用静态IP

IPADDR=192.168.1.11    #增长静态IP地址,注意前面三个数要和你本机电脑上ip一致,即你本机电脑上的ip是192.168.1.xx

NETMASK=255.255.255.0 #增长子网掩码

NETWORK=192.168.1.1 #设置网关,一样前面三个数也是和你本机电脑上的ip一致

NM_CONTROLLED=no #设置网络服务将经过该配置文件进行设置

 

 而后重启网络服务,查看是否修改为功

systemctl restart network.service #重启网络服务

ip add  #查看ip

 

 此时再ping一下,可能会提示两种错误:

①Name or service not known

ping: www.baidu.com: Name or service not known  #出现这个错误

 

多是由于你设置的ip被其余人占用着,此时你能够先将刚才的配置文件改成动态获取ip,先获取一个没被占用的ip,而后再静态设置为此ip

vi /etc/sysconfig/network-scripts/ifcfg-enp0s3 #打开刚才的配置文件

BOOTPROTO=dhcp #先设置为动态获取

 

保存退出后输入命令,获取ip,重复 2.设置网卡配置文件

ip add

②connect :Network is unreachable

connect :Network is unreachable #未得到网络

 

此时你的ip在局域网已经能够用了,可是访问不了外网,须要调用dhclient命令来获取网络

dhclient #使用动态主机配置协议动态的配置网络接口

 

(此处好像每次开机都要调用此命令才能联网,缘由未知,在网上看到个帖子,可是没能成功解决问题http://blog.csdn.net/u012425536/article/details/78744430)

 

打通网络环境后,修改防火墙设置,开放22端口(后期要用到xshell来远程控制此虚拟机,监控的就是22端口),完成后重启虚拟机

firewall-cmd --zone=public --add-port=22/tcp --permanent #修改防火墙参数

systemctl restart firewalld.service #重启防火墙服务

 

2、安装Apache

在安装Apache以前,先下载Xshell来做为辅助工具,方便咱们输入、复制、粘贴命令

打开xshell,输入命令,在弹出的窗体输入用户名,密码

ssh root@192.168.1.11 #远程链接,root表明登陆用户,@后面表明远程控制的ip

 

 

链接成功以后会看到

 

 

 安装基本依赖

yum install -y gcc gcc-c++ wget make vim

 

 开始安装Apache 进入官网,右击tar.gz获取连接,下方的wget后面的url是粘贴这右键复制的连接

wget下载安装包,并解压

wget http://mirror.bit.edu.cn/apache//httpd/httpd-2.4.29.tar.gz

tar zxvf httpd-2.4.29.tar.gz #解压

 

 apache安装须要apr和apr-util和pcre,因此下载apr和apr-util,若是你下载的是其余版本的话注意下路径和文件夹名
ll命令是ls -l就是列出文件

wget http://archive.apache.org/dist/apr/apr-1.4.5.tar.gz #下载apr

wget http://archive.apache.org/dist/apr/apr-util-1.3.12.tar.gz #下载apr-util

 

 解压

tar zxvf apr-1.4.5.tar.gz
tar zxvf apr-util-1.3.12.tar.gz

 

 重命名并移动到httpd-2.4.29中,下载pcre-8.39

mv apr-1.4.5 apr
mv apr-util-1.3.12 apr-util
mv apr apr-util httpd-2*/srclib/  #mv是移动,假若加了名字就是重命名
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.gz
tar zxvf pcre-8.39.tar.gz
cd pcre* #*是通配符

 

 配置pcre

./configure --prefix=/usr/local/pcre #./configure就是配置,参数--prefix=/usr/local/pcre就是说把软件安装在/usr/local/pcre这个目录下
make #编译

make install #编译安装

 

 成功以后以下

 

cd ../httpd*  #../是linux里的相对路径,意思是返回上一级目录下,再打开httpd-2.4.29文件夹

 

 配置安装apache,过程有点慢

#配置,编译,编译安装
./configure --prefix=/usr/local/apache -with-pcre=/usr/local/pcre/bin/pcre-config -with-included-apr
make
make install 

 完成以下

备份默认配置文件并启动

cd /usr/local/apache/bin
cp /usr/local/apache/conf/httpd.conf{,.bak}
./apachectl -k start #开启

 

 回车后有段输出,那些不用管他 
输入

curl 127.0.0.1

 

 输出 

<html><body><h1>It works!</h1></body></html>

 

开启防火墙80端口,这样在浏览器输入ip才能看到信息

firewall-cmd --zone=public --add-port=80/tcp --permanent  #开启80端口

systemctl restart firewalld.service  #重启防火墙服务

 

在浏览器输入192.168.1.11:80,回车会看到下图

cp /usr/local/apache/bin/apachectl /etc/init.d/httpd

 

 通过上面这条命令操做后你之后开启apache或者关闭重启就能够直接输入

service httpd start

 

 stop中止,restart是重启 把apache下的bin加入环境变量里

echo 'export PATH=/usr/local/apache/bin:$PATH'>>/etc/profile
source /etc/profile

 

 

 

3、安装Nginx(LAMP不须要管这一节)

Nginx是一款轻量级的Web服务器,特色是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。

Nginx安装须要两个依赖:pcre和zlib,pcre的安装见apache中安装配置,zlib直接用yum命令安装

yum install -y zlib-devel

 

而后下载nginx安装包,下图中拷贝连接

 

一样用wget命令下载,而后安装

cd #返回主目录
wget http://nginx.org/download/nginx-1.12.2.tar.gz #下载
tar zxvf nginx* #解压
cd nginx* 
./configure --prefix=/usr/local/nginx --with-pcre=../pcre-8.39/#配置,根据以前安装的pcre-8.39

 

配置完成见下图

编译安装

make && make install #编译并安装

 

安装完成图

下面启动nginx,启动以前先关闭apache,可用刚才的快捷方式关闭或者经过直接关闭进程的方式进行关闭

service httpd stop #根据以前设置的快捷方式 
#或者 ps aux | grep httpd #查看apache运行进程,而后用
kill -9 (全部进程号)

cd /usr/local/nginx/sbin 

./nginx #启动nginx

 

再次在浏览器中输入以前的网址:192.168.1.11:80 ,会看到如下页面,若是没有,仍然参考apache里面防火墙设置

关闭nginx 能够按照刚才关闭apache的方法,也能够强制中止

pkill -9 nginx

 

 PHP访问nginx服务器须要php-fpm,在后面安装php的时候须要注意 

 

 

4、安装mysql

 安装依赖

cd #返回主目录

yum -y install autoconf yum install cmake ncurses-devel bison -y

 

 下载mysql安装包,这里用mysql-5.6.38,一样,去官网复制下载连接

下载解压

wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.38.tar.gz #下载
tar zxvf mysql* #解压
groupadd -r mysql && useradd -r -g mysql -s /bin/false -M mysql #建立一个名为mysql且没有登陆权限的用户和一个名为mysql的用户组并把mysql用户加进mysql用户组里

 

 进入mysql的解压目录并配置

cd mysql*
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DSYSCONFDIR=/etc \
-DMYSQL_USER=mysql \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/var/run/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DENABLE_DOWNLOADS=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_DEBUG=0 \
-DMYSQL_MAINTAINER_MODE=0 \
-DWITH_SSL:STRING=bundled \
-DWITH_ZLIB:STRING=bundled

 

 编译安装

make && make install
cd /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql

 

 chown是改变文件全部者,change owner,R参数是递归,遍历目录下全部目录和文件
上面整个命令是改变/usr/local/mysql下全部的文件拥有者为mysql用户,用户组为mysql

 

初始化mysql

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

 

 

 完成后如图上面有些信息来叫你如何完善mysql以及安全
mysql默认的配置文件路径是/etc/my.cnf,咱们复制安装自带的默认配置文件过去

cp support-files/my-default.cnf /etc/my.cnf

 

 询问覆盖的时候输入y 
配置/etc/my.cnf

sed -i 's/# basedir = \.\.\.\.\./ basedir = \/usr\/local\/mysql/' /etc/my.cnf
sed -i 's/# datadir = \.\.\.\.\./ datadir = \/usr\/local\/mysql\/data/' /etc/my.cnf
sed -i 's/# port = \.\.\.\.\./ port = 3306/' /etc/my.cnf
sed -i 's/# socket = \.\.\.\.\./ socket = \/var\/run\/mysql\/mysql.sock/' /etc/my.cnf
num=$(sed -n '/socket/=' /etc/my.cnf)
sed -i "$num a[mysqld_safe]\nlog-error=/var/log/mysqld.log\npid-file=/var/run/mysqld/mysqld.pid\n" /etc/my.cnf

 

 cmake的时候把mysql的sock文件指定到/var/run/mysql里符合linux文件目录规范方便往后管理,可是默认没有这个文件夹,手动建立

mkdir /var/run/mysql
chown mysql:mysql /var/run/mysql

 

启动mysql

./support-files/mysql.server start

进入mysql客户端

bin/mysql -uroot -p

 

回车后会有个输出提示没有设置密码
此时直接回车,而后进去mysql客户端里 

 

 

进入mysql的客户端后,咱们来在客户端里的命令行里给mysql设置root密码

use mysql;
delete from mysql.user where user='';
update user set password=password("123456") where user="root";
flush privileges;
exit

 

其中123456为你要设置的密码
第二行是删除mysql的匿名用户 flush privileges 命令本质上的做用是将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里。MySQL用户数据和权限有修改后,但愿在不重启MySQL服务的状况下直接生效 

添加到service里

cp support-files/mysql.server /etc/init.d/mysqld
chmod u+x /etc/init.d/mysqld

 

之后咱们启动mysql服务直接输入

service mysqld start

就好了,若是要开机自启就输入下面的命令

chkconfig --add mysqld

 

把mysql的安装目录下的bin加入环境变量里

echo 'export PATH=/usr/local/mysql/bin:$PATH'>>/etc/profile
source /etc/profile

 

之后进入mysql客户端输入下面命令就能够了

mysql -uroot -p

 

(追加)

发现这样安装mysql以后,重启系统以后会出现启动不了mysqld的状况

解决方案是在重启系统以后从新建立 /var/run/mysql目录,输入如下命令

mkdir /var/run/mysql
chown mysql:mysql /var/run/mysql

不知道为何在系统重启以后这个目录就不存在了,须要从新建立。望大神们可以解答

 

 

 

5、安装PHP

先安装curl为了后面给php添加curl扩展

cd 
wget http://ojt8x896o.bkt.clouddn.com/curl-7.52.1.tar.gz
tar -zxvf curl-7.52.1.tar.gz
cd curl-7.52.1
./configure --prefix=/usr/local/curl
make && make install

 

 安装mhash库给php开启扩展

cd
wget https://ncu.dl.sourceforge.net/project/mhash/mhash/0.9.9.9/mhash-0.9.9.9.tar.gz tar -zxvf mhash-0.9.9.9.tar.gz cd mhash-0.9.9.9 ./configure make && make install

 

 进入php官网,进入download页面点击tar.gz包

 

进去后咱们找香港的源,右击后选择复制连接

 

下载安装

cd
wget http://hk1.php.net/get/php-5.6.32.tar.gz/from/this/mirror -O php-5.6.32.tar.gz
tar zxvf php*
cd php*

 

 这里wget下载php有时候被保存为mirrors,有时候被保存为php加版本号,因此上面wget后面我加了-O参数下载保存为php-5.6.32.tar.gz 

 安装依赖

yum install openssl openssl-devel bzip2-devel libxslt libxslt-devel libmcrypt libmcrypt-devel libxml2 libxml2-devel autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel  zlib zlib-devel glibc glibc-devel glib2 glib2-devel

 

配置

./configure --prefix=/usr/local/php \
--enable-bcmath \
--enable-calendar \
--enable-ftp \
--enable-fpm \
--enable-mbstring \
--enable-pcntl \
--enable-shmop \
--enable-soap \
--enable-sockets \
--enable-sysvsem \
--enable-zip \
--with-apxs2=/usr/local/apache/bin/apxs \
--with-bz2 \
--with-curl=/usr/local/curl \
--with-freetype-dir=/usr/lib64 \
--with-gettext \
--with-gd \
--with-jpeg-dir=/usr/lib64 \
--with-openssl \
--with-png-dir=/usr/lib64 \
--with-xmlrpc \
--with-xsl \
--with-mhash \
--with-mysql \
--with-mysqli \
--with-pdo-mysql \
--with-zlib \
--with-config-file-path=/usr/local/php/etc/

配置没错的话就是图里的信息

编译php须要资源,make的时候有时候会由于内存不够而中断,关键字memory字样,因此建议先关闭apache和mysqld

service httpd stop
service mysqld stop
make

 make提示complete后直接

make install

等输出完成后 php默认的配置文件php.ini是不存在的咱们须要手背拷贝过去 在源码包里有俩ini,php.ini-development和php.ini-production 我是拷贝的development,而且修改配置文件里的时区为PRC

cp ./php.ini-development /usr/local/php/etc/php.ini
sed -ri '/;date.timezone =/s#;date.timezone =#date.timezone = PRC#' /usr/local/php/etc/php.ini

成功安装php后咱们要吧php安装目录下的bin弄到环境变量里面

echo 'export PATH=/usr/local/php/bin:$PATH'>>/etc/profile
source /etc/profile

 

这样PHP就安装完成了,关于php-fpm的配置能够在网上查到好多资料,fpm是LNMP必备的,Nginx与php之间须要fpm来完成翻译的工做。

 

 

6、安装phpMyAdmin

使用php和mysql开发网站的话,phpmyadmin是一个很是友好的mysql管理工具,而且免费开源,国内不少虚拟主机都自带这样的管理工具,配置很简单,接下来在linux服务器上配置phpmyadmin来管理MySQL数据库

首先访问phpmyadmin官网下载页 https://www.phpmyadmin.net/downloads/

一样复制下载连接,用wget命令下载

cd #回到主目录,下载就直接放在主目录里面了
wget ttps://files.phpmyadmin.net/phpMyAdmin/4.7.6/phpMyAdmin-4.7.6-all-languages.tar.gz 

tar zxvf phpMyAdmin*

rm -rf phpMyAdmin-4.7.6-all-languages.tar.gz 

mv phpMyAdmin* /usr/local/apache/htdocs #将解压的文件夹放到htdocs文件夹中

cd /usr/local/apache/htdocs/phpMy* #进入到文件夹中

mv phpMy* phpMyAdmin #修改文件名,为了后期方便

这时候能够看到目录下有一个配置文件:config.sample.inc.php

将这个文件拷贝一份,并进行编辑

cp config.sample.inc.php config.inc.php

vim config.inc.php

找到$cfg['blowfish_secret']配置项,后面默认为空,这里咱们能够随便设置一个复杂的字符串,用来加密使用:

保存后退出,这样phpMyAdmin就安装完成了

启动mysql和Apache以后就能够在浏览器中输入 http://192.168.1.11/phpMyAdmin,就能看到如下页面

输入数据库密码就能工做啦!

 

 

 

7、检验环境是否打通

1.LAMP

而后进入apache的conf配置文件

cd /usr/local/apache/conf/

vim httpd.conf

 

在里面按下i后进去vim的编辑模式,添加一行,这里是让apache识别php文件

AddType application/x-httpd-php .php

而后再图中位置那后面加入index.php 

保存后,进入到apache的默认读取文件夹,,这里是在/usr/local/apache/htdocs/,把默认的index.html更名为index.php内容为

 

cd /usr/local/apache/htdocs/

mv index.html index.php

vim index.php

将下面的内容编辑到文件中

<?php
$con = mysql_connect("localhost","root","BQ000-000bq");
if($con){
echo 'Database connect ok !';
}else{
echo 'Database connect fail !';
}
echo phpinfo(); #显示php信息
?>

 保存退出,而后启动apache,mysql,注意若是你系统也安装了nginx,先把nginx关掉,要否则启动apache时会报80端口被占用,固然你也能够修改刚才的apache配置文件httpd.conf,找到listen,将80修改成其余端口

pkill -9 nginx #强制关闭nginx
service httpd start # 开启apache
service mysqld start #开启mysql

 

 刷新刚才的浏览器页面,看到下图就表明环境已经打通了

 

 

2.LNMP

 先进入到php安装目录中启动php-fpm

cd /usr/local/php/etc
mv php-fpm.conf.default php-fpm.conf #修改文件名,要否则启动fpm会报错
cd ../sbin #进入到sbin目录中
./php.fpm #开启fpm

 

 检查fpm是否开启成功

ps aux | grep php-fpm #根据名字查看进程

 

说明启动成功

进入nginx安装目录,修改配置文件

cd /usr/local/nginx/conf
ll #查看当前文件夹里面的内容
vim nginx.conf #修改配置文件

 

将下面内容插入到文件中

location ~ \.php {

fastcgi_pass 127.0.0.1:9000;

fastcgi_index /index.php;

include /usr/local/nginx/conf/fastcgi_params;

fastcgi_split_path_info ^(.+\.php)(/.+)$;

fastcgi_param PATH_INFO $fastcgi_path_info;

fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

}

 

 修改启动页面内容

cd ../html #进入到html文件夹中
vim test.php #新建test.php文件

 

 同LAMP同样,将下面内容写入到test.php中

<?php
$con = mysql_connect("localhost","root","BQ000-000bq");
if($con){
echo 'Database connect ok !';
}else{
echo 'Database connect fail !';
}
echo phpinfo();
?>

 

保存以后,先关闭apache

service httpd stop #关闭apache
cd ../sbin/ #进入到sbin目录
./nginx #启动nginx

 

 在浏览器中输入你的ip加上/test.php(好比个人就是192.168.1.11/test.php)会看到下图

说明LNMP环境也打通了。

 

 

8、总结

 lz采用的是编译安装,最为复杂的一种,历时两天才将环境打通,好多地方也是借鉴别人的,尤为是https://zhangguanzhang.github.io/2017/02/02/lamp/,写的很是详细,另外也感谢老哥推荐的慕课网课程,

虽然里面讲的有些地方不尽详细。

在这里给你们推荐一个一键安装lamp的连接,https://lamp.sh/install.html,在安装好centOS7以后就能够安装上面的步骤进行安装,很方便。

相关文章
相关标签/搜索