计算化学公社
标题:
WSL下安装apache+php+mysql
[打印本页]
作者Author:
冰释之川
时间:
2021-2-20 10:48
标题:
WSL下安装apache+php+mysql
本帖最后由 冰释之川 于 2021-12-2 09:31 编辑
WSL下搭建apache+php+mysql环境之个人笔记:
1.更新软件包管理器里看到的软件列表:
sudo apt-get update
复制代码
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":
(, 下载次数 Times of downloads: 23)
上传 Uploaded
点击下载Click to download
然后运行apache2:
sudo service apache2 start
复制代码
最后,在浏览器输入"http://localhost/"试一下apache2是否正常使用:
(, 下载次数 Times of downloads: 14)
上传 Uploaded
点击下载Click to download
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); //显示所有的错误信息
(, 下载次数 Times of downloads: 25)
上传 Uploaded
点击下载Click to download
重启apache2后,创建php测试代码并运行之:
sudo service apache2 restart
复制代码
进入/var/www/html目录新建info.php文件,内容如下 :
<?php
phpinfo();
?>
复制代码
在浏览器输入“http://localhost/info.php” 试一下php是否正常使用:
(, 下载次数 Times of downloads: 31)
上传 Uploaded
点击下载Click to download
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 -uroot -p
复制代码
登录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
复制代码
(, 下载次数 Times of downloads: 14)
上传 Uploaded
点击下载Click to download
注意,新的目标文件夹用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
复制代码
(, 下载次数 Times of downloads: 20)
上传 Uploaded
点击下载Click to download
最后重启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拓展功能:
(, 下载次数 Times of downloads: 30)
上传 Uploaded
点击下载Click to download
重启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
作者Author:
ggdh
时间:
2021-7-16 21:18
这个是用来干什么的啊
作者Author:
冰释之川
时间:
2021-7-17 21:15
ggdh 发表于 2021-7-16 21:18
这个是用来干什么的啊
网站搭建
欢迎光临 计算化学公社 (http://bbs.keinsci.com/)
Powered by Discuz! X3.3