说在前面

今天在腾讯云的CVM服务器搭建了一下环境【主机:标准型S2,Unbuntu18.04的LST版本】

采用了nginx服务器(Nginx 静态处理性能比 Apache高3倍以上,不过apache仍然是目前的主流,有很多丰富的特性)[百度Nginx与Apache区别]

PHP7.2 + MySQL5.7


常用命令

查看系统版本

cat /etc/issue

更新apt-get的源(定期使用该命令,确保自己的新下载的软件包是最新版本)

apt-get update

安装软件

apt-get install 软件名

编辑文件内容 (输入以下命令访问要修改的文件后,按I(字母i)进入编辑模式,Esc退出编辑模式,退出编辑后输入后回车保存,强制保存)

vim 路径

文件内查询

/要查询的内容

正文

1 安装MySQL

apt-get -y install mysql-server mysql-client

中间会询问两次root的密码,输入即可。没密码/新版本可能不会询问。(其中 -y 是表示安装过程中的问题自动回答yes,即默认安装。也可以不写-y,直接apt-get install 软件名)

数据库安全配置

mysql_secure_installation

没有密码则在输入命令后按回车,然后设置密码。接着如下:

此处会依次用英文询问(紫色为建议填写)

 是否重置密码,Set root password? [Y/n]

y重置,n不重置  (记得密码不必重置)

 删除匿名用户,Remove anonymous users? [Y/n]

y删除,n不删除  (禁止匿名用户访问)

 关闭远程登陆,Disallow root login remotely? [Y/n]

y关闭,n不关闭  (允许后可以使用远程软件管理)

删除测试数据库,Remove test database and access to it? [Y/n]

y删除,n不删除 (不必删除)

重新加载权限表,Reload privilege tables now? [Y/n]

y重载,n不重载 (刷新)

提示  All done!  则成功安装配置完MySQL。


安装PHP7

这里我用的是PHP7.2,当然有的是7.0或者以后更多新版本,要根据版本不同可能路径不同,但是大体配置思路是一样的。

安装前可以先用以下命令

查看最新版本是什么,如下[可能有更简单办法,但这样也看得出]

apt-cache search package | php

如下可以看到源提供的包中大部分是7.2的软件包

所以我们安装php7.2-fpm(为什么是要装带fpm的安装包,因为-fpm的安装包使用了FastCGI可以提升CGI性能,CGI可以规范数据传输)【根据自己的情况安不同的包,如php7.0就安装7.0,不要也写个7.2就装不了】

安装php7.2-fpm的命令如下

apt-get -y install php7.2-fpm

success安装完成


3 安装Nginx

如果安装了Apache,要先卸载Apache或者能够更换Apache的端口?

卸载命令如下(新系统/没安装不必卸载)

service apache2 stop
update-rc.d -f apache2 remove
apt-get remove apache2

安装Nginx命令如下

apt-get -y install nginx

完成后,启动Nginx命令如下

service nginx start

输入IP地址或域名在浏览器访问,显示如下页面则成功安装Nginx

配置Nginx

三个软件都装好了,这一步我们要进行配置,配置后nginx服务器才可以显示PHP页面。

打开配置文件nginx.conf 命令如下

vim /etc/nginx/nginx.conf

找到nginx.conf配置文件里的keepalive_timeout变量把它的值改成2,如下(如何修改文件内容,见本文开头常用命令vim)

接下来打开配置文件sites-available/default 命令如下

vim /etc/nginx/sites-available/default

打开后,按照如下部分修改(主要就是把前面"#"注释标志删掉,让PHP生效。注意函数的大括号“}”不要忘了取消注释)

两个文件都修改完后,重新加载一下nginx 命令如下

service nginx reload

5  配置PHP

这里要注意:php的配置文件php.ini,路径会随PHP版本而不同,所以首先查找php.ini文件位置 命令如下

php -i | grep php.ini

命令的意思是:php -i 即显示php的详细信息,然后在其中匹配php.ini的信息,如上图找到了路径是 /etc/php/7.2/cli/php.ini,接下来就是打开这个文件

打开php.ini文件 命令如下

vim /etc/php/7.2/cli/php.ini

然后输入\cgi.fix_pathinfo 查询,找到后回车,按 I 进入编辑模式,修改文件内容cgi.fix_pathinfo = 0如下图,记得前面的分号  ; (注释!)要删掉。

修改完成后重新加载PHP服务命令如下(还是一样,根据自己版本号确定服务名。不知道自己服务名的输入 service --status-all 查看)

service php7.2-fpm reload

检测配置是否成功 我们要创建一个php文件在服务器根目录下,再用IP地址或域名访问

创建文件命令如下

vim /var/www/html/info.php

然后同样的按 I 进入编辑模式输入文件内容如下

<?php

phpinfo();

?>

保存修改,然后在浏览器访问 IP地址/info.php 出现如下页面即成功

补充

FileZila远程管理文件(上传自己写好的代码到服务器上跑)

默认用户Ubuntu不具有创建目录功能

只有系统超级用户root(sudo su进入)才有创建目录功能,为了服务器安全,不给默认普通用户这个更改目录等权限。

所以使用root用户远程登录管理系统文件

1) 使用用户名ubuntu登录

2) 修改root密码,密码输入不可见,需要再次确认密码。命令如下

sudo passwd root

3) 打开ssh配置。命令如下

sudo vi /etc/ssh/sshd_config

4) 命令行输入i进行编辑

修改文件中的PermitRootLogin no为PermitRootLogin yes。

Esc退出编辑模式,输入:wq , 然后回车保存修改。

5) 重启ssh服务。命令如下

sudo service ssh restart

6) 在FileZilla站点管理中新建一个站点。

主机填写你服务器的外网IP地址,端口写22,协议选择sftp,用户名写root,密码就填上面第(2)步改的密码。

连接成功,列出目录了,接下来就是看你nginx服务器指定目录在哪就把代码传到哪,指定目录也就是刚刚上面创建info.php文件那里(var/www/html)

【注意:root用户进入后默认在root目录,ubuntu用户进入后在home/ubuntu目录。记得点回上级目录才能看到var文件夹,然后依次进入var/www/html。】

Navicat远程管理MySQL(这个和我之前写的阿里云那篇类似)

首先登陆mysql 命令如下

mysql -u root -p

输入密码(初始为0)登录后前缀变成mysql>,然后我们进入默认数据库 命令如下

mysql> use mysql
接下来显示user表关键信息 命令如下
mysql> select user,host,plugin,authentication_string from user

显示如下图,root用户的host我已经把它由原来的localhost改为“%”了,

首先看我圈的红圈,如果你的还不是%,就输入如下SQL语句更改host值

mysql> update user set host="%" where user="root"

然后为了安全,我们要给root加个密码(新安装的密码默认是空),看最后一列,我这个版本的mysql密码字段的名字是authentication_string(可以输入show tables看出来)ChaosBlog原创

mysql> update user set authentication_string="这里换成新密码" where user="root"

要注意的是,MySQL要求密码必须是一串字符串并包含:大小写字母,符号,数字。不然会报错【正确示范:例如:Abc#123】

然后看下我圈的蓝色圈,plugin列代表密码是否是native_password,不是的话密码可能是明文显示的,而且用Navicat等软件连接的时候会报错(1251错误)连不上。

所以我们要用另一种命令修改密码,如下

mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '这里换成新密码';

加了密码以后,习惯性刷新权限...命令如下

mysql> flush privileges

然后我们就可以输入exit命令回车退出MySQL了。

最后,

检查是否绑定了IP,命令如下(访问配置文件mysqld.cnf)

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf 

把该配置文件中的 bind-address =127.0.0.1前面加上  #  注释掉

完成后基本都可以用Navicat登录数据库,若还不能则检查3306端口是否开启。

方法1:安装firewalld强行开启;

sudo apt-get install firewalld

firewall-cmd --add-port=3306/tcp

方法2:腾讯云安全组里面开启全部端口,或者自己设置安全策略,控制端口号的进出。

若使用Apache中不能解析php,要安装如下

sudo apt-get install libapache2-mod-php 

若页面只显示:目前无法处理该请求。HTTP ERROR 500

首先都要修改php.ini中如下,

display_errors = On

error_reporting = E_ALL | E_STRICT

若是Apache中首先找到httpd.conf文件(ubuntu系统,apache2配置文件在/etc/apache2/apache2.conf中)

vim /etc/apache2/apache2.conf

如果你的不是在这个目录下,可以通过此命令查询:

find / -name apache2.conf

最后按I进入编辑模式,在该文件最下面添加如下规则,

php_flag display_errors on

php_value error_reporting 2039

若是nginx也是修改配置文件

记得,操作完用重启大法更新一下,每个service都restart一下。如service mysql restart  、service php7.2 restart 、 service nginx restart ......

大功告成:)

[Linux][Ubuntu18.04.1] nginx+php+MySQL环境搭建的更多相关文章

  1. ubuntu18.04+gunicorn+nginx+supervisor+mysql+redis安装django项目

    Ubuntu18.04 install Django project 项目准备: ECS 实例 (云服务器) 此安装部署方案适合本地ubuntu18.04系统安装和虚拟机中ubuntu18.04系统安 ...

  2. centos7+nginx+php+mysql环境搭建

    一:CentOS7安装 在VMware 新建一个虚拟机CentOS 64位,配置好磁盘大小为30G,内存2G,启动虚拟机进入CentOS安装界面 选择Install CentOS 7 SOFTWARE ...

  3. 【linux下多实例Tomcat+Nginx+redis+mysql环境搭建】

    一.搭建环境之前最好自己先创建一个文件夹,再次文件夹下在创建文件夹来安放项目包和Tomcat等应用以及性能测试监控的文件 1.项目存放地址: mkdir export (创建一个文件),mkdir a ...

  4. CentOS下nginx php mysql 环境搭建

    CentOS下搭建PHP运行环境. 首先是在虚拟机上装好一个命令行的CentOS,如果只是弄服务器的话,不要装图形界面,会比较卡. 一.安装编译工具及库文件 yum -y install make z ...

  5. ubuntu12.04 安装nginx+php+mysql (lnmp)的web服务器环境

    1.Ubuntu12.04 安装nginx+php+mysql (lnmp)的web服务器环境 http://blog.db89.org/ubuntu12-04-install-nginx-php-m ...

  6. 在Ubuntu18.04中QT编程的环境构建(转)

    在Ubuntu18.04中QT编程的环境构建 原点分析 百家号06-2110:14 如果说QT大家觉得陌生的话,那么 Windows 早年推出的C++图形用户界面的应用程序开发框架MFC,应该是耳熟能 ...

  7. Ubuntu18.04命令行安装mysql未提示输入密码,修改mysql默认密码

    Ubuntu18.04命令行安装mysql未提示输入密码,修改mysql默认密码 mysql默认密码为空 但是使用mysql -uroot -p 命令连接mysql时,报错ERROR 1045 (28 ...

  8. HHvm Apache 2.4 Nginx建站环境搭建方法安装运行WordPress博客

    HHvm Apache 2.4 Nginx建站环境搭建方法安装运行WordPress博客 VPS主机   2014年06月02日 17:20   评论»       文章目录 Debian上安装 Ce ...

  9. ubantu16.04+mxnet +opencv+cuda8.0 环境搭建

    ubantu16.04+mxnet +opencv+cuda8.0 环境搭建 建议:环境搭建完成之后,不要更新系统(内核) 转载请注明出处: 微微苏荷 一 我的安装环境 系统:ubuntu16.04 ...

随机推荐

  1. 洛谷 P1023 税收与补贴问题 (2000NOIP提高组)

    洛谷 P1023 税收与补贴问题 (2000NOIP提高组) 题意分析 一开始没理解题意.啰啰嗦嗦一大堆.看了别人的题解才明白啥意思. 对于样例来说,简而言之: 首先可以根据题目推算出来 28 130 ...

  2. pxp

    Time Limit: 2000 ms Memory Limit: 512 MB Description 给定 \(n\), 求\(\sum\limits_{p,q∈primes}[pq≤n]\) ( ...

  3. 对SLIP,PPP,PPPoE,EtherNet的理解。[zz]

    经常看到PPP,PPPoE这些名词,当时也查了不少的资料,但是一直不太理解这是什么东西,干什么用的,今天静下心来,多看了点资料,有了一些初步理解,记录下来,以后有了新的理解再修改.   首先,SLIP ...

  4. protobuf手册

    1. c++快速上手 https://developers.google.com/protocol-buffers/docs/cpptutorial 2. c++使用手册 https://develo ...

  5. C++实现成绩管理模拟系统

    C++实现基本的成绩管理系统 需求: 1-学生姓名等基本字段 2-学生成绩字段 3-实现成绩修改和基本统计输出 #include<iostream> #include<windows ...

  6. HTTP ------ connection 为 close 和 keep-alive 的区别

    keep-alive和close这个要从TCP握手讲起 HTTP请求是基于TCP连接的,TCP的请求会包含(三次握手,中间请求,四次挥手)在HTTP/1.0时代,一个HTTP请求就要三次握手和四次挥手 ...

  7. 枚举工具类 EnumUtils

    这是一个枚举工具类,有时候一个枚举自身为空,我们程序在调用他的方法时(如:name(),ordinal()),就会报空指针异常:下面写这个工具类就是为了来避免这些问题的,有些外部引用的没有贴出来,不过 ...

  8. 【BZOJ】1741: [Usaco2005 nov]Asteroids 穿越小行星群

    [题意]给定n*n网格,有k个物品,每次可以消灭一行或一列,求消灭掉所有物品的最少操作次数. [算法]二分图最小覆盖 [题解]此题是最小覆盖模型的出处. 将物品的x-y连边建立二分图. 最小覆盖:选择 ...

  9. 天梯赛 L2-014 列车调度 (模拟)

    火车站的列车调度铁轨的结构如下图所示. Figure 两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道.每趟列车从入口可以选择任意一条轨道进入,最后从出口 ...

  10. sg函数&&子状态的讨论

    题目链接:https://cn.vjudge.net/contest/269933#problem/H 具体思路:首先,这是一个公平的比赛,并且是两个人参与,两个人都足够聪明,并且可以通过有限步结束比 ...