如何在Ubuntu VPS上新建/迁移网站并设置相关账号权限
文章目录
操作说明
本文假定读者已经在Ubuntu VPS上安装MySQL数据库管理程序和Apache2,且有VPS的root权限,并在本地计算机上安装好了PuTTy和Filezilla。作者在Digital Ocean的VPS上成功实现了本文的全部操作,其中VPS的操作系统为Ubuntu 20.04 (LTS) x64。
指令说明:
- $后面的指令需要在VPS的Terminal以root权限执行;
- >后面的指令是在VPS的MySQL中执行;
- []中的内容需要读者编辑成自己的信息。
设置新用户
本节的目的是设置用来管理新网站的用户[newuser],其权限仅涉及该网站相关的文件夹。
$ mkdir /home/[root-folder] #新建新用户根目录
$ groupadd [newgroup] #添加新用户组
$ useradd –d /home/[root-folder] -g [newgroup] [newuser] #添加新用户newuser并设置其根目录为root-folder,属于组newgroup。
设置SSH登录
本节的目的是设置用来登录用户[newuser]的SSH Key。设置完成之后,就可以通过客户端(例如PuTTy)来登录用户[newuser]。
$ mkdir /home/[root-folder]/.ssh
$ nano /home/[root-folder]/.ssh/authorized_keys
在PuTTygen生成新的SSH Key。复制公钥的文本(以ssh-rsa)开头,并粘贴到上一行新建的authorized_keys文件。然后
- 先Ctrl+O保存;
- 再回车确认;
- 最后Ctrl+X退出文本编辑器nano。
$ chown -R [newuser]:[newgroup] /home/[root-folder]/ #设置新用户根目录的所有者和组
$ chmod 700 /home/[root-folder]/.ssh #设置SSH相关文件夹的权限
$ chmod 644 /home/[root-folder]/.ssh/authorized_keys #设置SSH 公钥文件的权限
设置数据库
本节的目的是设置网站的数据库[db_website]。
$ mysql #进入MySQL
如果需要迁移网站之前的数据库,可以导出格式为.sql的数据库文件,并使用Filezilla上传到主机上。
> CREATE DATABASE [db_website]; #新建名为[db_website]的数据库
> CREATE USER '[db_user]'@'localhost' IDENTIFIED BY '[password]'; #新建名为[db_user]、密码为[password]的数据库用户
> GRANT ALL PRIVILEGES ON [db_website].* to '[db_user]'@'localhost'; #把数据库[db_website]的全部权限授予用户[db_user]
> FLUSH PRIVILEGES; #刷新数据库权限
> use [db_website]; #进入数据库[db_website]
> source [file_path]/[file_name].sql; #把主机上的文件[file_path]/[file_name].sql导入数据库[db_website]
> exit;
上传网站内容到主机
先把网站内容的文件夹压缩,上传到主机上。假设文件位于[file_path]/[file_name].tar。
$ cd [file_path] #进入[file_path]目录
$ tar –xvf [file_name].tar #解压缩[file_name].tar文件
编辑网站数据库信息
在网站文件夹中找到和数据库相关的配置文件(具体位置对于不同框架的网站有区别),把其中数据库的信息改成前面的:
- 数据库名称:[db_website]
- 用户:[db_user]
- 密码:[password]
- 端口:localhost:3306
在Apache2中设置网站信息
本节的目的是在服务器软件Apache2中设置网站的信息。
$ chown -R [newuser]:[newgroup] /home/[root-folder] #如果使用root账号操作,可能重新设置一下/home/[root-folder]的用户和组
$ nano /etc/apache2/sites-available/[new_website].conf #新建新网站[new_website]的配置文件
编辑以下代码,加入自己网站的信息,并复制到[new_website].conf:
<VirtualHost *:80>
ServerName [your_domain]
ServerAlias www.[your_domain]
ServerAdmin webmaster@localhost
DocumentRoot /home/[root-folder]/[website-folder]
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =[your_domain]
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
再编辑Apache2的配置信息:
$ nano /etc/apache2/apache2.conf #打开配置文件apache2.conf
复制并粘贴以下代码,然后保存并关闭配置文件apache2.conf。
<Directory /home/[root-folder]>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
启用网站
$ a2ensite bdwm.club #启用网站
$ systemctl reload apache2 #重启Apache2以使得新配置生效
申请SSL证书
如果还没安装certbot,先安装:
$ apt-get install certbot
安装好之后,启动certbot,通过Let’s Encrypt服务申请SSL证书:
$ certbot --apache