|
本帖最后由 冰释之川 于 2021-12-2 09:31 编辑
WSL下搭建apache+php+mysql环境之个人笔记:
1.更新软件包管理器里看到的软件列表:
2.安装apache:
- sudo apt-get install apache2
复制代码- sudo vi /etc/apache2/apache2.conf
复制代码 文件末尾添加三行代码:- AcceptFilter http none
- AddHandler php7-script .php .html
- AddType text/html .php .html
复制代码 并且将"Require all denied"修改成"Require all granted":
然后运行apache2:
- sudo service apache2 start
复制代码 最后,在浏览器输入"http://localhost/"试一下apache2是否正常使用:
3.安装php7:- sudo apt-get install php php-mbstring php-dom php-xml php-zip php-curl php-xdebug php-fpm
复制代码
安装包管理工具:- php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
- php composer-setup.php
- php -r "unlink('composer-setup.php');"
- sudo mv composer.phar /usr/bin/composer
复制代码 编辑/etc/php/7.2/apache2/php.ini文件,使php能够提示报错信息:
- sudo vi /etc/php/7.2/apache2/php.ini
复制代码 在php配置文件的头部添加以下几行代码:- ini_set("display_errors", "stderr");
- error_reporting(E_ALL);
复制代码 ini_set("display_errors", "stderr"); //ini_set函数作用:为一个配置选项设置值,
error_reporting(E_ALL); //显示所有的错误信息
重启apache2后,创建php测试代码并运行之:- sudo service apache2 restart
复制代码 进入/var/www/html目录新建info.php文件,内容如下 :在浏览器输入“http://localhost/info.php” 试一下php是否正常使用:
4.安装mysql:
- sudo apt-get install mysql-server mysql-client
复制代码 设置mysql临时免密码登陆:
编辑/etc/mysql/my.cnf文件,在最后加入以下设置:
- [mysqld]
- character_set_server = utf8
- skip-grant-tables=1
复制代码 其中“skip-grant-tables=1”一行为免密参数
重启mysql:
- sudo service mysql restart
复制代码
登录mysql并修改验证方式和root密码:
- $ mysql
- mysql> USE mysql;
- mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
- mysql> update mysql.user set authentication_string=password('123qwe') where user='root' and Host = 'localhost';
- mysql> flush privileges;
- mysql> exit;
复制代码
编辑/etc/mysql/my.cnf文件,注释掉“skip-grant-tables=1”这一行(为了数据库安全,还是不要免密登录),此外设置sql模式:
- [mysqld]
- character_set_server = utf8
- #skip-grant-tables=1
- 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模式:
- 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';
- flush privileges;
复制代码
编辑/etc/init.d/mysql启动文件 ,修改、增添以下内容防止报错:
- # Start MySQL!
- #su - mysql -s /bin/sh -c "/usr/bin/mysqld_safe > /dev/null 2>&1 &"
- su - root -s /bin/sh -c "/usr/bin/mysqld_safe > /dev/null 2>&1 &"
复制代码
重启mysql,并用root登录:
- sudo service mysql restart
复制代码
登录mysql数据库利用sql命令创建新账户:
- CREATE user 'user'@'%' IDENTIFIED BY 'password';
- flush privileges;
- GRANT ALL PRIVILEGES ON *.* TO 'user'@'%';
- flush privileges;
复制代码
修改用户密码:
- UPDATE mysql.user SET password=password('new_password') WHERE User='user' and Host='%';
- flush privileges;
复制代码
删除账户及权限
- drop user 'user'@'%';
- flush privileges;
复制代码
Tips:
(1)WSL中 /var/www/html 目录(DocumentRoot)对应win下目录为:- C:\Users\{用户名}\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_{序列号}\LocalState\rootfs
复制代码
(2)修改Apache中DocumentRoot的位置:- sudo vi /etc/apache2/sites-enabled/000-default.conf
复制代码 同时,修改apache2.conf文件中原始目录(/var/www)为目标目录(/mnt/f/www_root):
- sudo vi /etc/apache2/apache2.conf
复制代码
注意,新的目标文件夹用chmod命令将权限设为777
改完之后重启apache即可。
(3)修改mysql中datadir的位置:
在做变更前停掉mysql、apache2等相关服务
- sudo service apache2 stop
- sudo service mysql stop
复制代码 复制mysql源文件:
- sudo cp -aR /var/lib/mysql /mnt/e/mysql_data
复制代码 编辑mysqld.cnf:
- sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
复制代码 #datadir=/var/lib/mysql -------------------------------------老数据库文件位置
datadir=/mnt/e/mysql_data/mysql ---------------------------------------------新位置
编辑mysqld_safe服务守护进程文件,将DATADIR参数改为新位置:
- sudo vi /usr/bin/mysqld_safe
复制代码
最后重启mysql、apache2等相关服务:
- sudo service apache2 start
- sudo service mysql start
复制代码 然后登录mysql检查能否顺利创建数据库:
- mysql -u root -p
- mysql> create database test;
- mysql> show databases;
- mysql> drop database test;
复制代码
(4)php访问mysql:
安装php7.2-mysql插件
- sudo apt-get install php7.2-mysql
复制代码
编辑/etc/php/7.2/apache2/php.ini文件,使php能够调用mysql:
- sudo vi /etc/php/7.2/apache2/php.ini
复制代码 在php配置文件中打开mysql拓展功能:
重启apache2和mysql:- sudo service apache2 restart
- sudo service mysql restart
复制代码
(5)apache2设置post_max_size和upload_max_filesize等参数:
首先编辑apache2.conf文件:
- sudo vi /etc/apache2/apache2.conf
复制代码 其中添加网站主目录的修改权限:
- <Directory /*网站根目录*/>
- Options Indexes FollowSymLinks
- AllowOverride All
- Require all granted
- </Directory>
复制代码 然后在网站根目录处增加.htaccess文件,其文件内容为:
- Options +FollowSymLinks +SymLinksIfOwnerMatch
- # framework router settings.
- <IfModule mod_rewrite.c>
- RewriteEngine On
- RewriteCond %{REQUEST_FILENAME} !-d
- RewriteCond %{REQUEST_FILENAME} !-f
- RewriteRule (.*)$ index.php/$1 [L]
- </IfModule>
- # php settings.
- php_value post_max_size 100M
- php_flag file_uploads On
- php_value upload_max_filesize 100M
- php_value max_execution_time 1800
- php_value max_input_time 1800
- php_value memory_limit 256M
- # for post vars limit.
- php_value max_input_vars 3000
复制代码
(6)关于设置并检查服务是否开机自启动:
- sudo systemctl enable mysqld
- sudo systemctl is-enabled mysqld
复制代码
(7)关于Ubuntu和CentOS下 apache2、mysql与php服务的差异:
Ubuntu <-> CentOS
apache2 <-> httpd
mysql <-> mysqld
php7.2-fpm <-> php-fpm
|
评分 Rate
-
查看全部评分 View all ratings
|