Ubuntu 安装LANMP环境
安装 PHP7.1
检查一下一些需要用到的软件是否安装
dpkg -l gcc g++ libmcrypt-dev curl
CentOS 下
g++
似乎是gcc-c++
,安装libmcrypt-dev
会将libmcrypt4
一起安装,直接搜libmcrypt
搜不到
若没有后安装的话,搜索是否有资源可以下载
apt-cache search gcc
apt-cache search g++
apt-cache search libmcrypt-dev
apt-cache search curl
# 或者
apt-cache madison gcc g++ libmcrypt-dev curl
安装缺少的软件
添加官方的ppa
源,保证可以下载到最新的php版本
sudo add-apt-repository ppa:ondrej/php
# 如果当前系统不是UTF-8 的 locales 可以 加上 LC_ALL=C.UTF-8,如下
# sudo LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php
sudo apt-get update
如果无法使用
add-apt-repository
键入命令sudo apt-get install software-properties-common python-software-properties
参考:Ubuntu无法找到add-apt-repository问题的解决方法
查找可下载的PHP版本及扩展
sudo apt-cache search php7.1
这里把php7.1版本及扩展大部分都包进去了,不分粗细先下了再说
sudo apt-get -y install php7.1
sudo apt-get -y install php7.1-cgi php7.1-cli php7.1-dev php7.1-fpm php7.1-phpdbg php7.1-bz2 php7.1-common php7.1-curl
sudo apt-get -y install php7.1-dba php7.1-enchant php7.1-gd php7.1-gmp php7.1-imap php7.1-interbase php7.1-intl php7.1-ldap
sudo apt-get -y install php7.1-mbstring php7.1-odbc php7.1-pgsql php7.1-pspell php7.1-readline php7.1-recode php7.1-snmp
sudo apt-get -y install php7.1-soap php7.1-sqlite3 php7.1-sybase php7.1-xml php7.1-xmlrpc php7.1-zip php7.1-opcache php7.1-xsl
sudo apt-get -y install libapache2-mod-php7.1 libphp7.1-embed
卸载PHP
sudo apt-get --purge remove php7.2*
由于之前下载扩展的时候将
7.2
下载下来了,直接使用sudo apt-get remove php7.2*
删除似乎没效果,会提示无法卸载未安装的软件包
,下载的7.1
的扩展也无法正常显示,参考: Linux(Ubuntu)安装和完美卸载PHP7详细教程 这篇博文轻松卸载
安装 apache
apt-get install apache2
安装 Apache 文档和一些 Apache 实用程序。
apt-get -y install apache2-doc apache2-utils
对Apache
应用放通80
端口和443/tcp
端口
ufw allow 'Apache Full'
# 或者
ufw allow 80/tcp
ufw allow 443/tcp
这里加了
tcp
表示只放通tcp
协议访问80
端口(协议包括tcp
协议和udp
协议)
关于优化参考:如何在 Ubuntu 上安装和优化 Apache
安装Nginx
安装Nginx之前需要安装的模块依赖:
①gzip 模块需要 zlib 库
②rewrite 模块需要 pcre 库
③ssl 功能需要 openssl 库
先检查下是否有这些依赖库
apt-cache madison libpcre3 libpcre3-dev libpcrecpp0 libssh-dev zlib1g-dev
或者直接安装
sudo apt-get install libpcre3 libpcre3-dev libpcrecpp0 libssh-dev zlib1g-dev
ubuntu 环境下,安装
build-essential
可以解决软件缺少依赖库的情况。下载软件时,build-essential
会自动将软件的依赖也下载下来 参考:Ubuntu下安装Nginx详细步骤
nginx
的安装方式有多种,这里选择通过添加ppa
源 安装nginx
其他方式见 Ubuntu上安装Nginx服务器程序及简单的环境配置小结
sudo add-apt-repository ppa:nginx/stable
sudo apt-get update
sudo apt-get install nginx
查看nginx当前版本
~$ nginx -v
nginx version: nginx/1.14.2
nginx 与 php-fpm 的配置
sudo vim /etc/nginx/sites-available/default
编辑默认虚拟主机配置(摘选)
server {
# Add index.php to the list if you are using PHP
index index.php index.html index.htm index.nginx-debian.html;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# With php-fpm (or other unix sockets):
fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
# With php-cgi (or other tcp sockets):
# fastcgi_pass 127.0.0.1:9000;
}
}
- nginx.conf 包含的默认虚拟主机的文件
/etc/nginx/sites-enabled/default
是/etc/nginx/sites-available/default
的软连接- 默认配置
default
里将index.php
加到index
后面- 去掉
location ~ \.php$
模块的备注
fastcgi_pass
地址和/etc/php/7.1/fpm/pool.d/www.conf
下面的监听地址保持一致
; Note: This value is mandatory.
listen = /run/php/php7.1-fpm.sock
重启nginx
由于前面有安装apache所以要先将apache的服务关掉再重启,不然端口会被占用
2019/04/03 08:59:34 [emerg] 4110#4110: listen() to [::]:80, backlog 511 failed (98: Address already in u
2019/04/03 08:59:34 [emerg] 4110#4110: still could not bind()
~$ sudo systemctl stop apache2
由于暂时不用到apache
并且避免重启后端口冲突的问题,将防火墙关于apache的端口禁用掉
# 查看所有端口应用列表
~$ sudo ufw app list
可用应用程序:
Apache
Apache Full
Apache Secure
CUPS
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
# 禁用对应的端口应用
~$ sudo ufw delete 'Apache Full'
~$ sudo systemctl restart nginx
LNMP
启动界面
设置一下开机启动
vagrant@nginx:~$ sudo systemctl enable nginx
Synchronizing state of nginx.service with SysV init with /lib/systemd/systemd-sysv-install...
Executing /lib/systemd/systemd-sysv-install enable nginx
mysql 安装参考 Ubuntu 安装mysql和简单操作
待续...