Ubuntu
追随大家的脚步撸了腾云讯的羊毛,准备在上面自己开发点服务玩玩。本文主要记录折腾配置环境的过程。留作日后查看。
系统选择
对于这台云主机,我的定位是折腾,也就是说,自己业余时间在上面开发一些玩具性质的东西,如果做得好,作为一个side project
。既然不是专业的服务,所以不想在环境配置上面浪费太多时间。ubuntu
的优点在于:
- 教程比较多
- 我个人比较熟悉。
所以主机一到手,我就将centOS
重装为ubuntu
。
新建账户
第一步是建立一个非 root 用户,用以日常操作。
# 创建用户
sudo useradd [user-name]
# 修改密码
sudo passwd [user-name]
# 创建用户文件夹
sudo mkdir /home/[user-name]
# 修改用户文件夹所有者
sudo chown [user-name] /home/[user-name]
# 将新创建的用户添加到sudo组。其中: a表示添加,G指定组名
sudo usermod -aG sudo [user-name]
# 查看默认shell
ls -l /bin/sh
# 在弹出的踢实况选否,干掉dash(在配置新shell之后,可选)
sudo dpkg-reconfigure dash
免密登录
touch ~/.ssh/authorized_keys
# 本地机器, 输出粘贴至 authorized_keys
cat ~/.ssh/id_rsa.pub
zsh
# 查看是否有zsh
cat /etc/shells
# 安装zsh
sudo apt-get install zsh
# 修改默认shell为zsh
chsh -s /bin/zsh
# 安装git
sudo apt-get install git
# 安装oh-my-zsh
sudo wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh
nvm
我主要想折腾 nodejs、graphQL 相关内容,所以最重要的环境就是 nodejs。这里通过 nvm 的方式进行安装。
最新命令地址
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.6/install.sh | bash
Tengine
如果访问 github 速度慢,可以去官网下载
# 下载 Tengine:
git clone https://github.com/alibaba/tengine.git
# 依赖
apt-get install libpcre3 libpcre3-dev
apt-get install zlib1g-dev
apt-get install openssl libssl-dev
# 编译安装,进入代码目录
./configure --with-http_v2_module
make
sudo make install
# 运行:
# Tengine 配置与 nginx 基本一致,可执行程序位于 /usr/local/nginx/sbin 目录下。
sudo /usr/local/nginx/sbin/nginx -s reload
sudo /usr/local/nginx/sbin/nginx -s stop
# 校验配置文件
sudo /usr/local/nginx/sbin/nginx -t
Nginx
安装 Tengine 时,在 ubuntu 主机遇到 libssl.so.1.1 无法安装的问题 (2024.06.06)。先用 nginx 来代替。
apt-get install nginx
systemctl start nginx
systemctl status nginx
# 主配置
/etc/nginx/nginx.conf
# 站点配置
/etc/nginx/sites-enabled
nginx -t
nginx -s reload
MySQL
真正让我把过程记录下来的原因,就是因为 MySQL。因为平时数据库用得少,所以不熟悉,安装、配置也确实比其他麻烦一些。至于为什么选择 MySQL,可以参见我 Mac 环境下配置 MySQL 的那篇 blog。
- 安装:
# 可选版本: mysql-server-5.7
sudo apt-get install mysql-server
# 安装过程会提示输入root用户的密码
# 服务启动后端口查询
netstat -anp | grep mysql
- 服务管理
# 服务状态
sudo service mysql status
# 启动
service mysql start
# 停止
service mysql stop
# 重启
service mysql restart
- 几个重要目录:
- 数据库目录:/var/lib/mysql/
- 配置文件:
- /usr/share/mysql(命令及配置文件)
- /etc/mysql(如:my.cnf)
- 相关命令:/usr/bin(mysqladmin mysqldump 等命令) 和/usr/sbin
- 启动脚本:/etc/rc.d/init.d/(启动脚本文件 mysql 的
- 修改默认编码为 utf-8
# sql环境下,查看编码
show variables like 'character%';
# 编辑配置文件
vi /etc/mysql/cdonf.d/mysql.cnf
然后输入以下内容,保存,重启服务即可。
[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8
- 卸载
# 首先使用以下命令删除MySQL服务器:
sudo apt-get remove mysql-server
# 然后,删除随MySQL服务器自动安装的任何其他软件:
sudo apt-get autoremove
# 卸载其他组件:
sudo apt-get remove <<package-name>>
# 查看从MySQL APT存储库安装的软件包列表:
dpkg -l | grep mysql | grep ii
- 允许远程访问
即使只是自己折腾玩的服务器,也不该允许`root`用户远程访问数据库。所以此处我们先建立用户,然后授予给用户一个 database 的权限,然后再开放远程访问。
# 给localhost创建用户nodejs,并将密码设置为nodejs。
# 此处 % 代表任意IP地址。如果想限制,则可输入任意ip或者localhost
CREATE USER 'nodejs'@'%' identified by 'nodejs';
# 创建新的数据库,并将权限全部赋予nodejs用户
CREATE DATABASE nodejs;
GRANT ALL PRIVILEGES ON nodejs.* TO 'nodejs'@'%' IDENTIFIED BY 'nodejs';
# 最后将用户权限信息从数据表同步到内存(此命令可以避免重启mysql服务)
FLUSH PRIVILEGES;
- 接下来需要修改云主机上的 mysql 配置,允许远程访问
vi /etc/mysql/mysql.conf.d/mysqld.cnf
# 注释掉该行:
bind-address = 127.0.0.1
# 重启服务
service mysql restart
- 最后一步是修改腾云讯控制台的权限
控制台 -> 安全组 -> 选择希望修改的安全组最后的“操作 -> 修改规则” -> 添加规则 ->
类型:自定义;来源:0.0.0.0/0;协议端口:TCP:3306;策略:允许;备注:mysql。
保存即可。此时便可以使用图形化工具远程连接数据库。