计算化学公社

 找回密码 Forget password
 注册 Register
Views: 6014|回复 Reply: 2
打印 Print 上一主题 Last thread 下一主题 Next thread

[Linux] WSL下安装apache+php+mysql

[复制链接 Copy URL]

1102

帖子

18

威望

6643

eV
积分
8105

Level 6 (一方通行)

計算化学の社畜

本帖最后由 冰释之川 于 2021-12-2 09:31 编辑

WSL下搭建apache+php+mysql环境之个人笔记:

1.更新软件包管理器里看到的软件列表:
  1. sudo apt-get update
复制代码

2.安装apache:
  1. sudo apt-get install apache2
复制代码
  1. sudo vi /etc/apache2/apache2.conf
复制代码
文件末尾添加三行代码:
  1. AcceptFilter http none
  2. AddHandler php7-script .php .html
  3. AddType text/html .php .html
复制代码
并且将"Require all denied"修改成"Require all granted":


然后运行apache2:
  1. sudo service apache2 start
复制代码
最后,在浏览器输入"http://localhost/"试一下apache2是否正常使用:



3.安装php7:
  1. sudo apt-get install php php-mbstring php-dom php-xml php-zip php-curl php-xdebug php-fpm
复制代码

安装包管理工具:
  1. php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
  2. php composer-setup.php
  3. php -r "unlink('composer-setup.php');"
  4. sudo mv composer.phar /usr/bin/composer
复制代码
编辑/etc/php/7.2/apache2/php.ini文件,使php能够提示报错信息:
  1. sudo vi /etc/php/7.2/apache2/php.ini
复制代码
在php配置文件的头部添加以下几行代码:
  1. ini_set("display_errors", "stderr");
  2. error_reporting(E_ALL);
复制代码
ini_set("display_errors", "stderr");       //ini_set函数作用:为一个配置选项设置值,
error_reporting(E_ALL);                    //显示所有的错误信息




重启apache2后,创建php测试代码并运行之:
  1. sudo service apache2 restart
复制代码
进入/var/www/html目录新建info.php文件,内容如下 :
  1. <?php
  2. phpinfo();
  3. ?>
复制代码
在浏览器输入“http://localhost/info.php” 试一下php是否正常使用:



4.安装mysql:
  1. sudo apt-get install mysql-server mysql-client
复制代码
设置mysql临时免密码登陆:
编辑/etc/mysql/my.cnf文件,在最后加入以下设置:
  1. [mysqld]
  2. character_set_server = utf8
  3. skip-grant-tables=1
复制代码
其中“skip-grant-tables=1”一行为免密参数

重启mysql:
  1. sudo service mysql restart
复制代码

登录mysql并修改验证方式和root密码:
  1. $ mysql
  2. mysql> USE mysql;
  3. mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
  4. mysql> update mysql.user set authentication_string=password('123qwe') where user='root' and Host = 'localhost';
  5. mysql> flush privileges;
  6. mysql> exit;
复制代码

编辑/etc/mysql/my.cnf文件,注释掉“skip-grant-tables=1”这一行(为了数据库安全,还是不要免密登录),此外设置sql模式:
  1. [mysqld]
  2. character_set_server = utf8
  3. #skip-grant-tables=1
  4. sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
复制代码
或者,也可以用sql命令修改sql模式:
  1. set @@global.sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
  2. flush privileges;
复制代码

编辑/etc/init.d/mysql启动文件 ,修改、增添以下内容防止报错:
  1. # Start MySQL!
  2. #su - mysql -s /bin/sh -c "/usr/bin/mysqld_safe > /dev/null 2>&1 &"
  3.   su - root -s /bin/sh -c "/usr/bin/mysqld_safe > /dev/null 2>&1 &"
复制代码

重启mysql,并用root登录:
  1. sudo service mysql restart
复制代码
  1. mysql -uroot -p
复制代码

登录mysql数据库利用sql命令创建新账户:
  1. CREATE user 'user'@'%' IDENTIFIED BY 'password';
  2. flush privileges;
  3. GRANT ALL PRIVILEGES ON *.* TO 'user'@'%';
  4. flush privileges;
复制代码

修改用户密码:
  1. UPDATE mysql.user SET password=password('new_password') WHERE User='user' and Host='%';
  2. flush privileges;
复制代码

删除账户及权限
  1. drop user 'user'@'%';
  2. flush privileges;
复制代码


Tips:

(1)WSL中 /var/www/html 目录(DocumentRoot)对应win下目录为:
  1. C:\Users\{用户名}\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_{序列号}\LocalState\rootfs
复制代码

(2)修改Apache中DocumentRoot的位置:
  1. sudo vi /etc/apache2/sites-enabled/000-default.conf
复制代码
同时,修改apache2.conf文件中原始目录(/var/www)为目标目录(/mnt/f/www_root)
  1. sudo vi /etc/apache2/apache2.conf
复制代码


注意,新的目标文件夹用chmod命令将权限设为777
改完之后重启apache即可。

(3)修改mysql中datadir的位置:
在做变更前停掉mysql、apache2等相关服务
  1. sudo service apache2 stop
  2. sudo service mysql stop
复制代码
复制mysql源文件:
  1. sudo cp -aR /var/lib/mysql /mnt/e/mysql_data
复制代码
编辑mysqld.cnf:
  1. sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
复制代码
#datadir=/var/lib/mysql -------------------------------------老数据库文件位置
datadir=/mnt/e/mysql_data/mysql ---------------------------------------------新位置


编辑mysqld_safe服务守护进程文件,将DATADIR参数改为新位置:
  1. sudo vi /usr/bin/mysqld_safe
复制代码



最后重启mysql、apache2等相关服务:
  1. sudo service apache2 start
  2. sudo service mysql start
复制代码
然后登录mysql检查能否顺利创建数据库:
  1. mysql -u root -p
  2. mysql> create database test;
  3. mysql> show databases;
  4. mysql> drop database test;
复制代码

(4)php访问mysql:
安装php7.2-mysql插件
  1. sudo apt-get install php7.2-mysql
复制代码

编辑/etc/php/7.2/apache2/php.ini文件,使php能够调用mysql:
  1. sudo vi /etc/php/7.2/apache2/php.ini
复制代码
在php配置文件中打开mysql拓展功能:


重启apache2和mysql:
  1. sudo service apache2 restart
  2. sudo service mysql restart
复制代码

(5)apache2设置post_max_size和upload_max_filesize等参数:
首先编辑apache2.conf文件:
  1. sudo vi /etc/apache2/apache2.conf
复制代码
其中添加网站主目录的修改权限:
  1. <Directory /*网站根目录*/>
  2.         Options Indexes FollowSymLinks
  3.         AllowOverride All
  4.         Require all granted
  5. </Directory>
复制代码
然后在网站根目录处增加.htaccess文件,其文件内容为:
  1. Options +FollowSymLinks +SymLinksIfOwnerMatch

  2. # framework router settings.
  3. <IfModule mod_rewrite.c>
  4.   RewriteEngine On
  5.   RewriteCond %{REQUEST_FILENAME} !-d
  6.   RewriteCond %{REQUEST_FILENAME} !-f
  7.   RewriteRule (.*)$ index.php/$1 [L]
  8. </IfModule>

  9. # php settings.
  10. php_value post_max_size 100M
  11. php_flag  file_uploads On
  12. php_value upload_max_filesize 100M
  13. php_value max_execution_time 1800
  14. php_value max_input_time 1800
  15. php_value memory_limit 256M
  16. # for post vars limit.
  17. php_value max_input_vars 3000
复制代码

(6)关于设置并检查服务是否开机自启动:
  1. sudo systemctl enable mysqld
  2. sudo systemctl is-enabled mysqld
复制代码

(7)关于Ubuntu和CentOS下 apache2、mysql与php服务的差异:
Ubuntu     <->    CentOS
apache2   <->    httpd
mysql      <->    mysqld              
php7.2-fpm  <->    php-fpm







评分 Rate

参与人数
Participants 1
eV +5 收起 理由
Reason
ggdh + 5 GJ!

查看全部评分 View all ratings

Stand on the shoulders of giants

903

帖子

37

威望

5324

eV
积分
6967

Level 6 (一方通行)

2#
发表于 Post on 2021-7-16 21:18:49 | 只看该作者 Only view this author
这个是用来干什么的啊

1102

帖子

18

威望

6643

eV
积分
8105

Level 6 (一方通行)

計算化学の社畜

3#
 楼主 Author| 发表于 Post on 2021-7-17 21:15:27 | 只看该作者 Only view this author
ggdh 发表于 2021-7-16 21:18
这个是用来干什么的啊

网站搭建
Stand on the shoulders of giants

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2024-11-27 17:31 , Processed in 0.198534 second(s), 25 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list