微信搜索我吃你家米了关注公众号
需要提前准备的东西
step1 安装apach并更新防火墙
安装apache
sudo apt update
sudo apt install apache2
配置防火墙
让web流量通过
sudo apt install ufw
sudo ufw app list
输出结果:
Apache
Apache Full
Apache Secure
OpenSSH
默认情况下ufw是允许80和443端口通过的
sudo ufw app info "Apache Full"
输出结果:
Profile: Apache Full
Title: Web Server (HTTP,HTTPS)
Description: Apache v2 is the next generation of the omnipresent Apache web
server.
Ports:
80,443/tcp
Step2 安装mysql
sudo apt install mysql-server
加强mysql的安全性:
sudo mysql_secure_installation
执行该命令之后会启动个安全设置向导,首先会让我们设置密码策略,分为高低中三个级别,这里我选择高(密码复杂度要符合mysql的要求)
然后会提示我们移除匿名用户、测试数据库、禁用root远程登录
在ubuntu中,mysql的认证是通过auth_socket
插件进行的,并不是直接通过密码进行认证的,这样虽然提高了安全性,但是如果我们要搭建网站,就不合适了,因为我们需要使用密码认证,下面我们就来进行认证方式的修改
sudo mysql
SELECT user,authentication_string,plugin,host FROM mysql.user;
+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | | auth_socket | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *54A2B27F12A4D2F2389DD0BC9B4432C472111042 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
可以看到root的认证方式是auth_socket
,下面我们把它切换成mysql_native_password
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
注意这里设置的密码要符合上面我们选择的安全性等级
FLUSH PRIVILEGES;
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | *51019B46FE621F37RT1EC09C05F736B5747CBAA1 | mysql_native_password | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *54A2B27F12A4D2F2389DD0BC9B4432C472111042 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.01 sec)
Step3 安装PHP
sudo apt install php libapache2-mod-php php-mysql
可以看到我们上面除了安装了php外,还安装了libapache2-mod-php
和php-mysql
前者用于和apache2,后者用于mysql
这两个属于helper package
现在我们可以对apache2进行一些简单的配置,默认情况下会访问index.html,我们可以再添加一个index.php
sudo nano /etc/apache2/mods-enabled/dir.conf
将index.php移动到第一位即可
sudo systemctl restart apache2
我们可以查看php的扩展包,并选择安装
apt search php- | less
上面这条命令会列出php的包名和简略的描述信息
使用下面这条命令查看详细信息
apt show package_name
package_name是我们选择的包的名字
Step4 设置虚拟主机
创建网站目录
udo mkdir /var/www/your_domain
更改目录权限
sudo chmod -R 755 /var/www/your_domain
配置虚拟主机
/etc/apache2/sites-available/your_domain.conf
编辑以下内容
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName penhub
ServerAlias www.penhub
DocumentRoot /var/www/penhub
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
a2ensite是用于快速切换站点的工具,a2ensite可以激活apache文件夹下sites-available里包含配置文件的站点
sudo a2ensite your_domain.conf
禁用默认配置
sudo a2dissite 000-default.conf
测试有无配置错误
sudo apache2ctl configtest
出现Syntax OK
则说明一切正常
重启apache2服务器
sudo systemctl restart apache2