【Linux服务器】安装MySQL+Apache2+PHP服务并配置防火墙和MySQL远程访问

来源:互联网 发布:青蛙少年 知乎 编辑:程序博客网 时间:2024/06/08 20:07

一台新的Linux服务器安装这三个程序之后基本可以满足APP开发者的普通接口测试需求。

安装过程主要使用apt命令,这个命令有一些其他人的博客讲的很多,我主要用了两个:

  1. apt-cache search [名称]
    这个命令用于查看库里MySQL这种程序的详细的安装包名,比如我执行了查找mysql之后发现有一个包名字是mysql-server
  2. apt-get install [详细名称]
    这个命令就是安装程序到Linux服务器了,比如安装mysql,我执行的就是apt-get install mysql-server

由于对Linux不是特别熟悉,暂时还不敢自己折腾,这里安装所有的服务都用的是默认配置。

所有的命令提示没有权限的都可以在最前面加sudo再执行,也可以在执行这些命令之前先执行一次sudo su命令,获取root权限。

安装MySQL

  • 安装命令apt-get install mysql-server
    中途需要输入一个root用户初始密码,输入+重复输入,两次,输入后可以用键盘方向键操作光标、回车选择OK。
    (可能win用多了会习惯鼠标点点点,这里其实可以发现,不只是Linux可以用键盘操作,在win安装什么东西的时候有些地方看起来是一个按钮但是点着没反应,那就可以用键盘操作看看。)
  • 检查结果:命令mysql -h localhost -u root -p密码来进入mysql控制台,之后命令select version();可以查看安装的mysql版本信息,命令exit;可以退出mysql控制台。要注意mysql控制台的命令是要输分号的,因为是在执行sql语句,分号是结束。

安装Apache2

  • 安装命令:apt-get install apache2
  • 检查结果:默认安装方式会在/etc/init.d/生成一个可执行脚本,可以用命令/etc/init.d/apache2 start来启动Apache2服务器,然后在浏览器输入http://[你的IP地址]来查看是否成功开启。
    如果显示错误是ERR_CONNECTION_REFUSED,并且命令netstat -anp显示80端口已经在Listen,那么可能是由于服务器的防火墙设置。如果用自己的MySQL工具远程连接服务器上的mysql数据库提示错误10038,那么确认肯定是防火墙问题了。

配置防火墙

Linux配置防火墙用的是iptables命令。

命令iptables -L -n查看当前的防火墙配置,需要root权限。
然后我发现我用的机器防火墙是开着的,不敢折腾,服务器有点远,搞坏了ssh连不上要自己去机房。。。贴个链接吧:
https://www.cnblogs.com/alimac/p/5848372.html

我们Linux小哥给加了两条规则,后面最后一个命令是保存设置,因为不保存的话重启服务器之后防火墙配置会失效。

sudo suiptables -I INPUT 5 -p tcp -m tcp --dport 80 -j ACCEPTiptables -I INPUT 5 -p tcp -m tcp --dport 3306 -j ACCEPTiptables-save >/etc/iptables.rules

然后开放了80端口之后浏览器输入IP可以显示Apache的欢迎页。

配置MySQL远程访问

但是3306开放了,mysql远程连接还是10038错误。
然后考虑是mysql没有开放远程访问权限,由于不想给root用户远程访问权限,因此新建用户。
以下命令进入MySQL命令行来执行,每条命令后需要分号:

  • 命令创建用户:create user '用户名' identified by '密码';
  • 命令创建数据库:create database '数据库名';
  • 命令赋予指定用户远程访问权限:grant all privileges on 数据库名.* to 用户名@'%';
  • 命令刷新权限表:flush privileges;

执行完以上命令之后,再修改/etc/mysql/mysql.conf.d/mysqld.cnf文件中的bind-address = 127.0.0.1bind-address = 0.0.0.0,然后重启MySQL服务(sudo service mysql restart),即可使用设定的用户名和密码远程访问MySQL数据库。

安装PHP和Apache的PHP插件

  • 安装命令apt-get install php7.0 libapache2-mod-php7.0
  • 检查结果:安装完成后,使用命令systemctl restart apache2重启Apache。在/var/www/html/目录下创建一个info.php文件,输入代码:<?php phpinfo();?>,然后使用浏览器访问http://[ip地址]/info.php,可以显示php信息,则证明PHP安装正常且与Apache2已经打通。

安装其他PHP插件

先使用apt-cache search php7.0查一下有哪些PHP7插件,然后选择安装。这里我选择了mysql插件,其他的可以按需安装。

  • 安装命令apt-get install php7.0-mysql
  • 检查结果:重启Apache服务(service apache2 restart),然后把上一项里修改的/var/www/html/info.php修改成下面的代码:
<?php  $mysqli = new mysqli('localhost', '用户名', '密码', '数据库名');  if ($mysqli->connect_error) {      die('Connect Error (' . $mysqli->connect_errno . ') '              . $mysqli->connect_error);  };  echo 'ok';  

然后重新使用浏览器访问http://[ip地址]/info.php,显示OK,则证明环境配置完成。

自定义Apache2访问目录及端口

由于某些原因,不想把80端口暴露,可以修改Apache2的配置文件,更换端口及文件目录。

  • 准备目录:新建目录
  • 更换端口:防火墙关闭80端口,开启新端口8888
sudo iptables -D INPUT -p tcp -m tcp --dport 80 -j ACCEPTsudo iptables -I INPUT 5 -p tcp -m tcp --dport 8888 -j ACCEPT
  • 修改Apache2配置:文件位置在/etc/apache2,需要修改以下内容:

1. ports.conf 监听80端口改为8888端口
2. apache.conf修改,照着注释掉的/srv目录的配置增加自己的配置:

<Directory /你的目录/>    Options Indexes FollowSymLinks    AllowOverride None    Require all granted</Directory>

3. sites-available目录修改,新增my8888.conf文件,内容示例如下:

<VirtualHost *:8888>    DocumentRoot /目录    <Directory /目录/>        Order deny,allow        Deny from all        #配置使得根目录下其他子目录不会被8888端口访问到。    </Directory>    <Directory /子目录/>        Allow from all        Options FollowSymLinks MultiViews        AllowOverride none        Require all granted         </Directory>    #LogLevel info ssl:warn    ErrorLog ${APACHE_LOG_DIR}/my8888_error.log    CustomLog ${APACHE_LOG_DIR}/my8888_access.log combined</VirtualHost>

4. sites-enabled目录修改,使用ln -s 源文件 目标文件创建快捷方式指向sites-available目录下的my8888.conf文件

  • 重载Apache2服务器,命令service apache2 reload
  • 检查结果:浏览器请求http://[IP地址]:8888/子目录/*.php,定位到你写的PHP文件的位置就可以。如果你写的文件是index.php,路径可以精确到文件夹,Apache2默认会去查找index.*。

服务工作原理不讲,不会。

完。

阅读全文
0 0
原创粉丝点击